dafloria
(usa Ubuntu)
Enviado em 19/05/2010 - 12:02h
Olá pessoal...
Sou novo no forum, uso linux a pouco tempo e programo em C a menos tempo ainda, mas agredeceria muito se algem pudesse me ajudar.
Estou fazendo um trabalho para a faculdade, onde preciso criar um cadastro de produtos (bem simples, sem utilizar banco de dados).
O problema é que aparentemente o scanf simplesmente não está funcionando. Não sei se isso pode ser devido a alguma passagem de parametro errada ou outra coisa, mas nem meu professor, olhando rapidamente o código, soube me dizer o que está acontecendo.
Segue a parte que interessa do código abaixo:
// Início e opção 6.
int quantidade(float *custo_prod, float *lucro_prod)
{
int quant_prod, i;
printf("<Manipulacao de Preços>\n\n");
printf("Digite a quantidade de produtos a ser cadastrado:\n");
scanf("%d", &quant_prod);
// Isso não funciona de jeito nenhum.
custo_prod = calloc (quant_prod, sizeof(float));
lucro_prod = calloc (quant_prod, sizeof(float));
for (i = 0; i < quant_prod; i++)
{
custo_prod[i] = 0;
lucro_prod[i] = 0;
}
return (quant_prod);
}
// Opção 1.
void cadastro(int quant_prod, float *custo_prod, float *lucro_prod)
{
int i=0;
char sair[2]="s";
while (i < quant_prod && sair[0] != 'n')
{
if (custo_prod[i] == 0)
{
system("clear");
printf("Degite o Custo do Produto %d \n", i);
scanf("%f", &custo_prod[i]);
printf("Digite a margem de lucro para o produto %d \n\n", i);
scanf("%f", &lucro_prod[i]);
printf("Deseja cadastrar outro produto?");
printf("Obs.: Digite s para Sim ou n para Nao.");
scanf("%s", sair);
i++;
}
}
}
int main()
{
float *custo_prod, *lucro_prod;
int op, quant_prod;
char confirma[2];
quant_prod = quantidade(custo_prod, lucro_prod);
do {
system("clear");
printf("<Manipulação de Preços>\n\n");
printf("Selecione uma opção:\n\n");
printf("1 - Cadastrar Produto.\n");
printf("2 - Listar Produtos (Custo e Venda).\n");
printf("3 - Ajustar valor de venda para todos os produtos.\n");
printf("4 - Ajustar valor de venda por faixa de preço.\n");
printf("5 - Remover produto cadastrado.\n");
printf("6 - Alterar quantidade de produtos e resetar os dados.\n");
printf("7 - Encerrar o Sistema.\n");
printf("7 - Encerrar o Sistema.\n");
scanf("%d", &op);
// Tambem não está funcionando.
switch (op)
{
case 1:
cadastro(quant_prod, custo_prod, lucro_prod);
break;
case 2:
lista(quant_prod, custo_prod, lucro_prod);
break;
case 3:
break;
case 4:
break;
case 5:
remov_cadastro(quant_prod, custo_prod, lucro_prod);
break;
case 6:
printf("Tem certeza que deseja excluir o cadastro atual e criar um novo?");
printf("Obs: Todos os produtos cadastrados atualmente serão perdidos.");
scanf("%s", confirma);
if (confirma[0] == 's')
{
free(custo_prod);
free(lucro_prod);
quantidade(custo_prod, lucro_prod);
}
break;
case 7:
break;
default:
printf("Opção Inválida...");
printf("Digite Novamente.");
break;
}
} while (op != 7);
free(custo_prod);
free(lucro_prod);
}
Enfim. Nenhum scanf está armazenando o valor digitado pelo usuário na variável desejada.
já testei colocando um printf("%d", variável) abaixo delas e ele simplesmente não retorna nada.
Por favor. Se algem puder me ajudar, ficarei muito agradecido.