#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define ESTOQUEtamanho 100
#define CLIENTEStamanho 100
#define VENDEDOREStamanho 100
#define VENDAStamanho 100
struct PRODUTO {
char codigo[20];
char descricao[100];
int quantidade;
float precoCusto;
float precoVenda;
char livre;
};
struct CLIENTE {
char nome[100];
char cpf[20];
char livre;
};
struct VENDEDOR {
char nome[100];
char cpf[20];
char livre;
};
struct VENDA {
char cliente[100];
char vendedor[100];
char produto[20];
int quantidade;
float caixa;
char livre;
};
struct PRODUTO estoque[ESTOQUEtamanho];
struct CLIENTE clientes[CLIENTEStamanho];
struct VENDA vendas[VENDAStamanho];
struct VENDEDOR vendedores[VENDEDOREStamanho];
void inicializa(){
int i;
for (i=0;i<ESTOQUEtamanho;i++)
estoque[i].livre=1;
for (i=0;i<CLIENTEStamanho;i++)
clientes[i].livre=1;
for (i=0;i<VENDEDOREStamanho;i++)
vendedores[i].livre=1;
for (i=0;i<VENDAStamanho;i++)
vendas[i].livre=1;
}
int insereEstoque (char *c, char *d, int q, float pC, float pV){
int i;
for (i=0;i<ESTOQUEtamanho;i++) {
if (estoque[i].livre) {
strcpy(estoque[i].codigo, c);
strcpy(estoque[i].descricao, d);
estoque[i].quantidade = q;
estoque[i].precoCusto = pC;
estoque[i].precoVenda = pV;
estoque[i].livre=0;
return(1);
}
}
return(0);
}
void listarEstoque(){
int i;
for (i=0;i<ESTOQUEtamanho;i++)
if (!estoque[i].livre)
printf("\n-------------------------\nCodigo: %s\nDescricao: %s\nQuantidade: %d\nPreco de Custo: %.2f\nPreco de Venda: %.2f", estoque[i].codigo, estoque[i].descricao, estoque[i].quantidade, estoque[i].precoCusto, estoque[i].precoVenda);
}
int excluirEstoque (char *c){
int i;
for (i=0;i<ESTOQUEtamanho;i++){
if(!estoque[i].livre)
if(!strcmp(c, estoque[i].codigo)){
estoque[i].livre = 1;
return(1);
}
}
return(0);
}
int insereClientes (char *n, char *c){
int i;
for (i=0;i<CLIENTEStamanho;i++) {
if (clientes[i].livre) {
strcpy(clientes[i].nome, n);
strcpy(clientes[i].cpf, c);
clientes[i].livre=0;
return(1);
}
}
return(0);
}
void listarClientes(){
int i;
for (i=0;i<CLIENTEStamanho;i++)
if (!clientes[i].livre)
printf("\n-------------------------\nNome: %s\nCPF: %s", clientes[i].nome, clientes[i].cpf);
}
int excluirClientes (char *n){
int i;
for (i=0;i<CLIENTEStamanho;i++){
if(!clientes[i].livre)
if(!strcmp(n, clientes[i].nome)){
clientes[i].livre = 1;
return(1);
}
}
return(0);
}
int insereVendedores (char *n, char *c){
int i;
for (i=0;i<VENDEDOREStamanho;i++) {
if (vendedores[i].livre) {
strcpy(vendedores[i].nome, n);
strcpy(vendedores[i].cpf, c);
vendedores[i].livre=0;
return(1);
}
}
return(0);
}
void listarVendedores(){
int i;
for (i=0;i<VENDEDOREStamanho;i++)
if (!vendedores[i].livre)
printf("\n-------------------------\nNome: %s\nCPF: %s", vendedores[i].nome, vendedores[i].cpf);
}
int excluirVendedores (char *n){
int i;
for (i=0;i<VENDEDOREStamanho;i++){
if(!vendedores[i].livre)
if(!strcmp(n, vendedores[i].nome)){
vendedores[i].livre = 1;
return(1);
}
}
return(0);
}
int insereVendas (char *n, char *n2, char *c, int q){
int i, t, a1;
t=0;
for (i=0;i<VENDEDOREStamanho;i++) {
if(!strcmp(n, vendedores[i].nome)){
t = 1;
break;
}
}
if(!t){
printf("Vendedor nao encontrado");
return(0);
}
t=0;
for (i=0;i<CLIENTEStamanho;i++) {
if(!strcmp(n2, clientes[i].nome)){
t = 1;
break;
}
}
if(!t){
printf("Cliente nao encontrado");
return(0);
}
t=0;
for (i=0;i<ESTOQUEtamanho;i++){
if(!strcmp(c, estoque[i].codigo)){
t = 1;
a1 = i;
break;
}
}
if(!t){
printf("Codigo nao encontrado");
return(0);
}
t=0;
if (q >= estoque[a1].quantidade) return(0);
for (i=0;i<VENDAStamanho;i++){
if (vendedores[i].livre){
strcpy(vendas[i].vendedor, n);
strcpy(vendas[i].cliente, n2);
strcpy(vendas[i].produto, c);
vendas[i].quantidade = q;
vendas[i].caixa = (estoque[a1].precoVenda - estoque[a1].precoCusto) * q;
t = 1;
vendas[i].livre = 0;
estoque[a1].quantidade = estoque[a1].quantidade - q;
return(1);
}
}
return(0);
}
void listarVendas(){
int i;
for (i=0;i<VENDAStamanho;i++)
if (!vendas[i].livre)
printf("\n-------------------------\nID : %d\nVendedor: %s\nCliente: %s\nCodigo do produto: %s\nQuantidade: %d\nFluxo de caixa: %.2f", (i+1), vendas[i].vendedor, vendas[i].cliente, vendas[i].produto, vendas[i].quantidade, vendas[i].caixa);
}
int excluirVendas (int id){
if (id <= VENDAStamanho){
vendas[id-1].livre = 1;
return(1);
}
return (0);
}
void teste(){
srand( (unsigned)time(NULL) );
int i, x, y;
strcpy(estoque[0].codigo, "1010");
strcpy(estoque[0].descricao, "Caneta");
estoque[0].quantidade = 500;
estoque[0].precoCusto = 0.09;
estoque[0].precoVenda = 0.15;
estoque[0].livre=0;
strcpy(estoque[1].codigo, "1011");
strcpy(estoque[1].descricao, "Lapis");
estoque[1].quantidade = 852;
estoque[1].precoCusto = 0.04;
estoque[1].precoVenda = 0.10;
estoque[1].livre=0;
strcpy(estoque[2].codigo, "1012");
strcpy(estoque[2].descricao, "Lapiseira B1");
estoque[2].quantidade = 182;
estoque[2].precoCusto = 0.58;
estoque[2].precoVenda = 1.20;
estoque[2].livre=0;
strcpy(estoque[3].codigo, "1013");
strcpy(estoque[3].descricao, "Lapiseira C2");
estoque[3].quantidade = 127;
estoque[3].precoCusto = 0.74;
estoque[3].precoVenda = 1.50;
estoque[3].livre=0;
strcpy(estoque[4].codigo, "1014");
strcpy(estoque[4].descricao, "Lapis de colorir 12 unidades");
estoque[4].quantidade = 193;
estoque[4].precoCusto = 2.83;
estoque[4].precoVenda = 4.99;
estoque[4].livre=0;
strcpy(estoque[5].codigo, "1015");
strcpy(estoque[5].descricao, "Lapis de colorir 24 unidades");
estoque[5].quantidade = 142;
estoque[5].precoCusto = 3.78;
estoque[5].precoVenda = 9.99;
estoque[5].livre=0;
strcpy(estoque[6].codigo, "1016");
strcpy(estoque[6].descricao, "Apontador");
estoque[6].quantidade = 127;
estoque[6].precoCusto = 0.59;
estoque[6].precoVenda = 1.10;
estoque[6].livre=0;
strcpy(estoque[7].codigo, "1017");
strcpy(estoque[7].descricao, "Regua 15cm");
estoque[7].quantidade = 89;
estoque[7].precoCusto = 3.19;
estoque[7].precoVenda = 4.59;
estoque[7].livre=0;
strcpy(estoque[8].codigo, "1018");
strcpy(estoque[8].descricao, "Regua 30cm");
estoque[8].quantidade = 278;
estoque[8].precoCusto = 5.24;
estoque[8].precoVenda = 8.75;
estoque[8].livre=0;
strcpy(estoque[9].codigo, "1019");
strcpy(estoque[9].descricao, "Folha A4 500 unidades");
estoque[9].quantidade = 124;
estoque[9].precoCusto = 3.56;
estoque[9].precoVenda = 8.00;
estoque[9].livre=0;
strcpy(clientes[0].nome, "Adriano Goes");
strcpy(clientes[0].cpf, "15863248759");
clientes[0].livre = 0;
strcpy(clientes[1].nome, "Ane Kilpp");
strcpy(clientes[1].cpf, "47895426895");
clientes[1].livre = 0;
strcpy(clientes[2].nome, "Bruna Oliveira");
strcpy(clientes[2].cpf, "78945875247");
clientes[2].livre = 0;
strcpy(clientes[3].nome, "Caroline Zortea");
strcpy(clientes[3].cpf, "15648763298");
clientes[3].livre = 0;
strcpy(clientes[4].nome, "Cassiano Miranda");
strcpy(clientes[4].cpf, "78942576354");
clientes[4].livre = 0;
strcpy(clientes[5].nome, "Eduardo Godoy");
strcpy(clientes[5].cpf, "78914455855");
clientes[5].livre = 0;
strcpy(clientes[6].nome, "Felipe Beal");
strcpy(clientes[6].cpf, "65632986452");
clientes[6].livre = 0;
strcpy(clientes[7].nome, "Gian Lucas");
strcpy(clientes[7].cpf, "22354785740");
clientes[7].livre = 0;
strcpy(clientes[8].nome, "Juliana Freitas");
strcpy(clientes[8].cpf, "02546583254");
clientes[8].livre = 0;
strcpy(clientes[9].nome, "Lais Bressan");
strcpy(clientes[9].cpf, "65024580545");
clientes[9].livre = 0;
strcpy(vendedores[0].nome, "Arthur Duarte");
strcpy(vendedores[0].cpf, "07964619957");
vendedores[0].livre=0;
strcpy(vendedores[1].nome, "Pauo Ricardo");
strcpy(vendedores[1].cpf, "15784602510");
vendedores[1].livre=0;
for(i=0;i<((rand()%15)+5);i++){
x = rand()%2;
strcpy(vendas[i].vendedor, vendedores[x].nome);
x = rand()%9;
strcpy(vendas[i].cliente, clientes[x].nome);
x = rand()%9;
strcpy(vendas[i].produto, estoque[x].codigo);
y = (rand()%15)+1;
vendas[i].quantidade = y;
vendas[i].caixa = (estoque[x].precoVenda - estoque[x].precoCusto) * y;
vendas[i].livre = 0;
estoque[x].quantidade = estoque[x].quantidade - y;
}
}
int main(){
int opc1, opcEstoque, opcClientes, opcVendedores, opcVendas, opcTeste;
char codigo[20], descricao[100], nome[100], nome2[100], cpf[20], cliente[100];
int quantidade, id;
float precoCusto, precoVenda;
inicializa();
printf("Para rodar o teste digite 1 ,0 para sair: ");
scanf("%d%*c", &opcTeste);
if(opcTeste == 1) teste();
while (1) {
printf("\n-------------------------------\nControle de Estoque\n\tOpcoes:\n\t1-Estoque\n\t2-Cliente\n\t3-Vendedor\n\t4-Venda\n\nEntre com sua opcao: ");
opc1=getchar();getchar();
switch (opc1) {
case '1': printf("\n-------------------------------\nEstoque\n\tOpcoes:\n\t1-Incluir\n\t2-Listar\n\t3-Excluir\n\t0-Voltar\n\nEntre com sua opcao:");
opcEstoque=getchar();getchar();
switch (opcEstoque){
case '1':printf("\nEntre com o codigo: ");
gets(codigo);
printf("\nEntre com a descricao: ");
gets(descricao);
printf("\nEntre com a quantidade: ");
scanf("%d", &quantidade);
printf("\nEntre com o preco de custo: ");
scanf("%f", &precoCusto);
printf("\nEntre com preco de venda: ");
scanf("%f", &precoVenda);
if (insereEstoque (codigo, descricao, quantidade, precoCusto, precoVenda)) printf("\nProduto Incluso");
else printf("\nFalha na inclusao");
break;
case '2': listarEstoque();
break;
case '3': printf("\nEntre com o codigo para excluir: ");
gets(codigo);
if (excluirEstoque (codigo)) printf("\nProduto Excluido");
else printf("\nFalha na exclusao");
break;
default: printf("\nOpcao nao implementada! ");
break;
}break;
case '2': printf("\n-------------------------------\nClientes\n\tOpcoes:\n\t1-Incluir\n\t2-Listar\n\t3-Excluir\n\t0-Voltar\n\nEntre com sua opcao:");
opcClientes=getchar();getchar();
switch (opcClientes){
case '1':printf("\nEntre com o nome: ");
gets(nome);
printf("\nEntre com o cpf: ");
gets(cpf);
if (insereClientes (nome, cpf)) printf("\nCliente Incluso");
else printf("\nFalha na inclusao");
break;
case '2': listarClientes();
break;
case '3': printf("\nEntre com o nome para excluir: ");
gets(nome);
if (excluirClientes (nome)) printf("\nCliente Excluido");
else printf("\nFalha na exclusao");
break;
default: printf("\nOpcao nao implementada! ");
break;
}break;
case '3': printf("\n-------------------------------\nVendedores\n\tOpcoes:\n\t1-Incluir\n\t2-Listar\n\t3-Excluir\n\t0-Voltar\n\nEntre com sua opcao:");
opcVendedores=getchar();getchar();
switch (opcVendedores){
case '1':printf("\nEntre com o nome: ");
gets(nome);
printf("\nEntre com o cpf: ");
gets(cpf);
if (insereVendedores (nome, cpf)) printf("\nVendedor Incluso");
else printf("\nFalha na inclusao");
break;
case '2': listarVendedores();
break;
case '3': printf("\nEntre com o nome para excluir: ");
gets(nome);
if (excluirVendedores (nome)) printf("\nVendedor Excluido");
else printf("\nFalha na exclusao");
break;
default: printf("\nOpcao nao implementada! ");
break;
}break;
case '4': printf("\n-------------------------------\nVendas\n\tOpcoes:\n\t1-Incluir\n\t2-Listar\n\t3-Excluir\n\t0-Voltar\n\nEntre com sua opcao:");
opcVendas=getchar();getchar();
switch (opcVendas){
case '1':printf("\nEntre com o nome do Vendedor: ");
gets(nome);
printf("\nEntre com o nome do Cliente: ");
gets(nome2);
printf("\nEntre com o codigo do produto: ");
gets(codigo);
printf("\nEntre com o numero de produtos: ");
scanf("%d", &quantidade);
if (insereVendas (nome, nome2, codigo, quantidade)) printf("\nVenda Inclusa");
else printf("\nFalha na inclusao");
break;
case '2': listarVendas();
break;
case '3': printf("\nEntre com o ID da Venda para excluir: ");
scanf("%d", id);
if (excluirVendas (id)) printf("\nVenda Excluida");
else printf("\nFalha na exclusao");
break;
default: printf("\nOpcao nao implementada! ");
break;
}break;
default: printf("\nOpcao nao implementada! ");
break;
}
}
}
此代码应将img转换为Mat格式。但是,当我实现这个时,我收到一条错误,上面写着“没有用于初始化cv :: Mat的匹配构造函数”。
我在哪里做错了?语法应该是正确的,所以我认为问题出在其他地方。我在OSX Yosemite中使用OpenCV 3.1.0和Xcode 7.2.1。
提前谢谢
答案 0 :(得分:1)
似乎构造函数cv :: Mat(IplImages *)已从 core / src / matrix.cpp 中消失。顺便说一句,我找到了另一种选择。
Mat mtx = cv::cvarrToMat(img);
应该这样做。
答案 1 :(得分:1)
这些也可以使用:
// Method 1
Mat mtx = img;
// Method 2 (`true` stands for whether you want a deepcopy)
Mat mtx(img, true);