Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

danyg

Adicionar ponteiros a um algoritmo.

Recommended Posts

Como faço para transformar esse algoritmo, adicionar ponteiros alocação e arquivo de texto...ai a qstão e o que eu tenho kk..agradeço ajda

 

 

A nota de compra e venda deve apresentar obrigatoriamente para o cliente a quantidade

de cada produto comprado, a descrição do produto e o seus respectivos preços, como ilustra a

figura abaixo. O objetivo é deixar claro para o cliente quanto ele está pagando pelos produtos.

No final da nota deverá aparecer o preço total da compra, mas muita atenção a regra de negócio

do mercado diz que:

 

 

 

Compras acima de R$100 o estabelecimento oferece um desconto de 1% no preço total.

Compras acima de R$200 o estabelecimento oferece um desconto de 5% no preço total.

Compras acima de R$300 o estabelecimento oferece um desconto de 10% no preço total.

Compras acima de R$400 o estabelecimento oferece um desconto de 20% no preço total.

 

Os produtos que são vendidos no mercado encontam-se em um arquivo texto e devem ser

carregados em seu sistema. Lembre-se novos produtos podem ser inseridos, preços atualizados e

o estoque é alterado a cada compra, logo você deve controlar a integridade dos dados atualizando

o arquivo quando necessário. Segue abaixo um arquivo de exemplo com código do produto,

descrição, preço, quantidade:

 

 

produtos.txt

 

5000 AguaComGaz500ml 2.10 105

5001 ArrozTioJoao2k 4.65 10

5002 BatataPringles40g 6.20 50

5003 CocaCola2l 4.50 60

5004 FeijaoCarioquinha2k 7.10 35

.

.

.

Atenção: o sitema também deve ter um menu de opções. Exemplo:

SISTEMA DE CONTROLE DE VENDAS

1) Carregar base de dados do arquivo

2) Salvar base de dados no arquivo

3) Cadastrar produto

4) Remover produto

5) Iniciar uma venda

6) Sair

 

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

main()

{

system ("color F9");

 

float preco[150], precoNF, NFPreco_Produto[150]; //Vetores e variáveis que trabalham com preço

int a=0, x=0, v=0, rel=0, y, i, aux, cod_exclui, troca; //Declaração de variáveis utilizadas para leitura, gravação, exlclusão e ordenar vetores

int codigo[150], estoque[150], codigoNF[150], codigoVenda[v], NFCod_Produto[150], NFCod[150], NFEstoque_Produto[150], procura_cod, procura_est, vetor_ref; //Declaração de Vetores diversos

int op_Menu_Pricipal, op_Menu_Estoque, op_Menu_Venda, op_Menu_Relat, opGeral, teste, teste_est; //Variavéis de Menus e condições

 

//Aqui começa o programa

do //Do voltado para repetição geral do programa, voltando sempre ao menu principal em alguma hora

{

printf ("SIGVER - SISTEMA DE GERENCIAMENTO DE VENDAS, ESTOQUE E RELATORIOS\n\nInforme o que voce deseja fazer:\n[1] - Gerenciar Estoque\n[2] - Registrar Venda\n[3] - Gerar Relatorio\n[4] - Sair\nSua escolha: "); //Interface com o usuário

scanf ("%d", &op_Menu_Pricipal); //Captura de variável do menu principal

system ("cls");

 

switch (op_Menu_Pricipal) //Leitura de variável para aplicação da condição

{

case 1:

do //Repetição com objetivo de poder voltar a este menu após alguma alteração de dados dentro do mesmo

{

printf ("SIGVER - GERENCIAMENTO DE ESTOQUE\n\nO que voce desejar fazer:\n[1] - Incluir novo cadastro\n[2] - Alterar cadastro especifico\n[3] - Excluir cadastro\n[4] - Voltar\nSua escolha: "); //Interface com o usuário

scanf ("%d", &op_Menu_Estoque); //Captura da variável do menu Estoque

system ("cls");

switch (op_Menu_Estoque) //Leitura de variável para aplicação da condição

{

case 1:

do // Repetição com objetivo para informar novo cadastro

{

printf ("SIGVER - GERENCIAMENTO DE ESTOQUE\n\nINCLUSAO DE NOVO CADASTRO\n\n");

teste=0;

do //Voltada para teste de condição CÓDIGO (Se o código existir, informar erro e repetir)

{

teste=0;

printf ("Informe o codigo do produto: ");

scanf ("%d", &codigo[x]);

for (i=0; i<x; i++)

{

if (codigo[x]==codigo)

{

printf ("ERRO - O codigo ja existe\n");

teste=1;

}

}

}

while(teste==1); //Fim de condição CÓDIGO

do //Voltada para teste de condição PREÇO (Se for "- ou =0", informar erro e repetir)

{

teste=0;

printf ("Informe o preco unitario: ");

scanf ("%f", &preco[x]);

if (preco[x]<=0)

{

printf ("ERRO - Preco invalido\n");

teste=1;

}

}

while (teste==1); //Fim de condição PREÇO

do //Voltada para teste de condição QUANTIDADE EM ESTOQUE (Se for negativo, informar erro e repetir)

{

teste=0;

printf ("Informe a quantidade de produtos no estoque: ");

scanf ("%d", &estoque[x]);

if (estoque[x]<0)

{

printf ("ERRO - Estoque negativo\n");

teste=1;

}

}

while (teste==1);//Fim de condição QUANTIDADE EM ESTOQUE

printf ("\n\nDeseja incluir novo produto?\n[1] - Sim\n[2] - Nao\nSua Escolha: ");

scanf ("%d", &teste); //Captura de variável para repetição de inclusao

x++; //Incrementada para mudar a posição de gravação dos vetores

rel++; //Incrementada para a geração de relatórios, que será feita mais a frente

system ("cls");

}

while (teste==1); //Fim da repetição para inclusão de novo produto

system ("cls");

printf ("SIGVER - SISTEMA DE GERENCIAMENTO DE VENDAS, ESTOQUE E RELATORIOS\n\nO que deseja fazer:\n[1] - Voltar ao Gerenciador de Estoque\n[2] - Voltar ao Menu Pricipal\nSua escolha: ");

scanf ("%d", &opGeral); //Tomada de decisão, voltar ao menu principal ou ao menu anterior

break;

case 2:

do //Repetição com objetivo para alterar algum cadastro

{

printf ("SIGVER - GERENCIAMENTO DE ESTOQUE\n\nALTERACAO DE CADASTRO ESPECIFICO");

teste=0;

if (x==0) //Voltada para procurar se possui alguma coisa em estoque

{

printf ("Nenhum produto em estoque\n");

}

else

{

printf ("\n\nInforme o codigo do produto: ");

scanf ("%d", &procura_cod);

for (i=0; i<x; i++)

{

teste=0;

if (procura_cod==codigo)

{

do //Voltada para teste de condição PREÇO (Se for "- ou =0", informar erro e repetir)

{

teste=0;

printf ("Informe o preco unitario: ");

scanf ("%f", &preco);

if (preco[x]<=0)

{

printf ("ERRO - Preco invalido\n");

teste=1;

}

}

while (teste==1); //Fim de condição PREÇO

do //Voltada para teste de condição QUANTIDADE EM ESTOQUE (Se for negativo, informar erro e repetir)

{

teste=0;

printf ("Informe a quantidade de produtos no estoque: ");

scanf ("%d", &estoque);

if (estoque[x]<0)

{

printf ("ERRO - Estoque negativo\n");

teste=1;

}

}

while (teste==1);//Fim de condição QUANTIDADE EM ESTOQUE

teste=1;

i=x;

}

}

if (teste==0)

{

printf ("\nERRO - Codigo nao encontrado\n");

}

}

printf ("\nDeseja alterar outro cadastro?\n[1] - Sim\n[2] - Nao\nSua escolha: ");

scanf ("%d", &teste); //Captura de variável para repetição de alteração

system ("cls");

}

while (teste==1); //Fim da repetição para alterção de cadastro

 

system ("cls");

printf ("SIGVER - SISTEMA DE GERENCIAMENTO DE VENDAS, ESTOQUE E RELATORIOS\n\nO que deseja fazer:\n[1] - Voltar ao Gerenciador de Estoque\n[2] - Voltar ao Menu Pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 3:

do //Voltada a repetição e exclusão

{

printf ("SIGVER - GERENCIAMENTO DE ESTOQUE\n\nEXCLUSAO DE CADASTRO\n");

printf ("Informe o codigo a ser excluido: ");

scanf ("%d", &procura_cod);

teste=0;

for (i=0; i<x; i++) //Ele procura o código

{

if (procura_cod==codigo)

{

printf ("Codigo Encontrado!\nExcluido com sucesso!");

teste=1;

cod_exclui=i;

i=x;

for (i=cod_exclui; i<x; i++) //Reordena os vetores e exclui o selecionado(executa a exclusão)

{

codigo=codigo[i+1]; //Exclui o código selecionado

preco=preco[i+1]; //Exclui o preço referente ao código selecionado

estoque=estoque[i+1]; //Exclui a quantidade de estoque referente ao código selecionado

}

rel=rel-1; //Atualiza o vetor, já que agora temos menos um item registrado

x=x-1; //Atualiza o vetor, já que agora temos menos um item registrado

}

}

 

if (teste==0)

{

printf ("Codigo nao encontrado!");

}

printf ("\n\nDeseja excluir outro cadastro?\n[1] - Sim\n[2] - Nao\nSua Escolha:");

scanf ("%d", &teste);

system ("cls");

}

while (teste==1); //Condiciona se vai excluir outro ou não

system ("cls");

printf ("SIGVER - SISTEMA DE GERENCIAMENTO DE VENDAS, ESTOQUE E RELATORIOS\n\nO que deseja fazer:\n[1] - Voltar ao Gerenciador de Estoque\n[2] - Voltar ao Menu Pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 4:

opGeral=2; //Atualizada para que possa se retornar ao menu principal

break;

default:

printf ("Opcao invalida\n\n");

printf ("SIGVER - SISTEMA DE GERENCIAMENTO DE VENDAS, ESTOQUE E RELATORIOS\n\nO que deseja fazer:\n[1] - Voltar ao Gerenciador de estoque\n[2] - Voltar ao menu pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

}

system ("cls");

}

while (opGeral==1);

break;

case 2:

do

{

printf ("SIGVER - VENDAS\n\nO que voce desejar fazer:\n[1] - Registrar Venda\n[2] - Ver Nota Fiscal Especifica\n[3] - Relatorio de NFs\n[4] - Voltar\nSua escolha: ");

scanf ("%d", &op_Menu_Venda); //Captura de variavel do menu venda

system ("cls");

switch (op_Menu_Venda) //Leitura de variável para aplicação da condição

{

case 1:

do

{

printf ("SIGVER - VENDAS\n\nREGISTRAR VENDA\n");

do //Repetição de procura e gravação do número da NF

{

teste=0;

printf ("Informe o codigo da NF: ");

scanf ("%d", &procura_cod);

for (i=0; i<=v; i++)

{

if (procura_cod==NFCod)

{

teste=1;

i=v+1;

}

else

{

if (i==v)

{

NFCod[v]=procura_cod;

teste=0;

}

}

}

if (teste==1)

{

printf ("ERRO - O codigo ja existe\n");

}

}

while(teste==1); //Voltada para teste de condição (Se o código da NF já existir, informar erro e repetir)

do

{

printf ("\nInforme o codigo do produto: ");

scanf ("%d", &procura_cod);

for (i=0; i<x; i++)

{

if (procura_cod==codigo)

{

printf ("Codigo encontrado!!\n");

vetor_ref=i;

i=x;

teste=0;

NFCod_Produto[v]=procura_cod; //Grava no vetor o código do produto vendido, para futuras consultas

}

else

{

teste=1;

}

}

if (teste==1)

{

printf ("Codigo nao encontrado!!\n");

}

}

while(teste==1); //Fim da condição de teste de CÓDIGO DE NF

do //Verifica se o numero de procutos vendidos tem em estoque (se n tiver informa erro)

{

teste_est=0;

printf ("Informe a quantidade de produtos vendidos: ");

scanf ("%d", &procura_est);

if (procura_est<=0)

{

printf ("ERRO - Estoque invalido\n");

teste_est=1;

}

else

{

if (procura_est>estoque[vetor_ref])

{

printf ("ERRO - Nao ha esta quantidade em estoque\n");

teste_est=1;

}

else

{

estoque[vetor_ref]=estoque[vetor_ref]-procura_est;

NFEstoque_Produto[v]=procura_est; //Grava no vetor a quantidade vendida, para futuras consultas

}

}

}

while (teste_est==1); //Fim da condição TESTE DE ESTOQUE

 

precoNF=procura_est*preco[vetor_ref]; //Gera o preço da VENDA

printf ("O total da nota e de: %.2f\n\n", precoNF);

NFPreco_Produto[v]=precoNF; //Grava no vetor o preço, para futuras consultas

 

v++; //Atualiza V, que é utilizado para mudar o loval de gravação no vetor, no caso de ser feita uma nova venda, O uso dela está relacionado a geração das NF´s

 

printf ("\nDeseja registrar outra venda?\n[1] - Sim\n[2] - Nao\nSua escolha: ");

scanf ("%d", &teste);

system ("cls");

}

while (teste==1);

printf ("SIGVER - VENDAS\n\nO que deseja fazer:\n[1] - Voltar ao menu de Vendas\n[2] - Voltar ao menu pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 2:

do

{

do //Voltada para repetição de procura por NF, caso o código digitado não existir

{

printf ("Informe o codigo da NF: ");

scanf ("%d", &procura_cod);

if (v==0) //Procura para ver se existem vendas e consequentemente NF´s registradas

{

printf ("Nao existem notas fiscais registradas\n");

}

else

{

teste=0;

for (i=0; i<=v; i++) //Faz a procura no vetor, se n encontarm informa erro e repete

{

if (procura_cod==NFCod)

{

printf ("O codigo da NF e: %d\n", NFCod);

printf ("O codigo do produto vendido e: %d\n", NFCod_Produto);

printf ("A quantidade vendida e: %d\n", NFEstoque_Produto);

printf ("O preco da NF e: %.2f\n", NFPreco_Produto);

teste=1;

}

}

{

if (teste==0)

{

printf ("\nERRO - Codigo nao encontrado\n");

}

}

 

}

}

while (teste==0);

printf ("\nDeseja ver outra NF?\n[1] - Sim\n[2] - Nao\nSua escolha: ");

scanf ("%d", &teste);

system ("cls");

}

while(teste==1);

printf ("SIGVER - VENDAS\n\nO que deseja fazer:\n[1] - Voltar ao menu de Vendas\n[2] - Voltar ao menu pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 3:

do //Uso do metodo bolha para ordenar codigos

{

troca=0;

for (i=0; i<v; i++)

{

if (NFCod>NFCod[i+1])

{

aux=NFCod[i+1];

NFCod[i+1]=NFCod;

NFCod=aux;

troca=1;

}

}

}

while (troca==1); //Fim do uso do metodo bolha

printf ("##CODIGO NF # COD.PROD. VENDIDO # QTI. VENDIDA # PRECO TOTAL ##\n\n");

for (i=0; i<v; i++)

{

printf ("## %d # %d # %d # %.2f ##\n", NFCod, NFCod_Produto, NFEstoque_Produto, NFPreco_Produto);

}

printf ("\nRelatorio concluido\n\n");

printf ("\nSIGVER - VENDAS\n\nO que deseja fazer:\n[1] - Voltar ao menu de Vendas\n[2] - Voltar ao menu pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 4:

opGeral=2;

break;

default:

printf ("Opcao invalida\n\n");

printf ("\nO que deseja fazer:\n[1] - Voltar ao menu de Vendas\n[2] - Voltar ao menu pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

}

system ("cls");

}

while (opGeral==1);

break;

case 3:

do

{

printf ("SIGVER - RELATORIOS\n\nQual tipo de relatorio que voce deseja gerar:\n[1] - Estoque completo\n[2] - Produto especifico\n[3] - Estoque zerado\n[4] - Voltar\nSua escolha: ");

scanf ("%d", &op_Menu_Relat); //Captura de variável do menu relatorios

system ("cls");

switch (op_Menu_Relat)//Leitura de variável para aplicação da condição

{

case 1:

printf ("SIGVER - RELATORIOS\n\nRELATORIO COMPLETO DE ESTOQUE\n\n");

if (x==0)

{

printf ("Nenhum produto em estoque\n");

}

else

{

do //Metodo bolha, para ordenar os codigos

{

troca=0;

for (i=0; i<rel; i++)

{

if (codigo>codigo[i+1])

{

aux=codigo[i+1];

codigo[i+1]=codigo;

codigo=aux;

 

aux=preco[i+1];

preco[i+1]=preco;

preco=aux;

 

aux=estoque[i+1];

estoque[i+1]=estoque;

estoque=aux;

troca=1;

}

}

}

while (troca==1); //Fim do uso do metodo bolha

for (i=0; i<rel; i++) //Geração do relatório utilizando a pesquisa em vetores

{

printf ("||Codigo: %d\t||Preco: R$ %.2f\t||Quantidade em Estoque:%d\n", codigo, preco, estoque);

}

}

printf ("\nO que deseja fazer:\n[1] - Voltar ao Menu Relatorio\n[2] - Voltar ao Menu Pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 2:

printf ("SIGVER - RELATORIOS\n\nRELATORIO DE PRODUTO ESPECIFICO\n");

if (x==0)

{

printf ("\nNenhum produto em estoque\n");

}

else

{

printf ("Informe o codigo: ");

scanf ("%d", &procura_cod);

for (i=0;i<=x; i++) //Procura do código do produto pedido

{

if (procura_cod==codigo)

{

printf ("\n||Codigo: %d\t||Preco: R$ %.2f\t||Quantidade em Estoque:%d\n", codigo, preco, estoque);

i=x+1;

}

else

{

if (i==x)

{

printf ("\nCodigo nao encotrado\n");

}

}

}

}

printf ("\nO que deseja fazer:\n[1] - Voltar ao Menu Relatorio\n[2] - Voltar ao Menu Pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 3:

printf ("SIGVER - RELATORIOS\n\nRELATORIO DE PRODUTOS COM ESTOQUE ZERADO\n\n");

teste=0;

if (x==0)

{

printf ("\nNenhum produto em estoque\n");

}

else

{

printf ("Estao com o estoque zerado os seguintes produtos:\n");

do //Metodo bolha, para ordenar os codigos

{

troca=0;

for (i=0; i<rel; i++)

{

if (codigo>codigo[i+1])

{

aux=codigo[i+1];

codigo[i+1]=codigo;

codigo=aux;

 

aux=preco[i+1];

preco[i+1]=preco;

preco=aux;

}

}

}

while (troca==1); //Fim do uso do metodo bolha

for (i=0; i<rel; i++) //Procura produtos com estoque igual a 0 e os informa

{

if (estoque==0)

{

printf ("# Codigo: %d # Preco: %.2f #\n", codigo, preco);

teste=1;

}

}

if (teste==0)

{

printf ("Nao ha nenhum produto com estoque zerado");

}

}

printf ("\nO que deseja fazer:\n[1] - Voltar ao Menu Relatorio\n[2] - Voltar ao Menu Pricipal\nSua escolha: ");

scanf ("%d", &opGeral);

break;

case 4:

opGeral=2;

default:

printf ("Opcao invalida\n\n");

break;

}

system ("cls");

}

while (opGeral==1);

break;

case 4:

printf ("SIGVER - SISTEMA DE GERENCIAMENTO DE VENDAS, ESTOQUE E RELATORIOS\n\nObrigado por utilizar este software\n\n"); //Mensagem final

opGeral=0;

system ("pause");

break;

default:

printf ("Opcao invalida\n\n");

system ("pause");

system ("cls");

opGeral=2;

break;

}

}

while (opGeral==2); //Fim do Do-While para repetição geral do sistema (votar ao menu principal)

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem-vindo ao fórum! :)
Recomendo que leia as regras e orientações de participação

 

Você postou no fórum de PHP. Você quer traduzir esse código C para PHP? Se for isso, PHP não tem ponteiros (objetos e arrays são naturalmente ponteiros) e todo array é alocado dinamicamente.

 

O fórum de C e C++ é este aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por alexdyna
      Prezados,
      Amigos tenho que fazer um trabalho da faculdade onde o professor me da um arquivo que vou colocar anexo e tenho que fazer um algoritmo que leia o arquivo e monte uma tabela com as informações.
      pelo que vejo ele tem na primeira linha 8 barra e nas demais linha 10 barras
      ate a ultima que seria sua parada onde temos 2 barras seguidas.
       
      ficaria muito grato com a ajuda de todos.
       
      No arquivo anexo esta o texto:
      Nome/telefone/nascimento/Horas Curso/vendas T1/vendas T2/vendas T3/vendas T4/
       Luiz Ranza Neo/99934-5255/05/12/1989/200/107099,072578621/76915,8996218681/100922,271239691/76372,9971916498/
      Richard de Barrissaia/99326-4689/18/03/1990/150/55123,0080621828/68062,2200055909/67233,9928593779/45236,5928531083/
      Rodrigo Abalâminos/99911-7413/09/08/1987/168/71697,3866071191/58063,5644108225/88183,6230762134/48160,3116315664/
      José Gigfrid/99658-7874/15/04/1997/135/48816,199086596/50086,3689415844/52916,3066872779/55232,0663463164/
      Luiza Celly Silva/99659-1214/01/02/2000/90/29208,8223591438/39361,8088384592/45062,056112236/38913,7237126574/
      Maria Kunlun/99686-7845/21/04/1984/182/92076,1053757689/80440,5339844205/87575,0546657182/79220,9398178354/
      //
       
    • Por Descomplica Consultoria
      Oi Pessoal, preciso de ajuda com um portfolio academico
    • Por 4Unknow
      Bom dia comunidade Imasters.

      Venho aqui tratar de um problema dúvida que estou tendo com um layout que estou tentando usar o formulário php dele.
      Quando clico em enviar ele me enviar para um arquivo .php  (assets/vendor/simple-forms/sendmail.php)

      Ele não envia o e-mail, acredito que deveria aparecer uma mensagem que o contato foi enviado corretamente.
      Vou deixar os arquivos aqui em anexo quem puder me ajudar nessa, ficaria muito grato.
       
      Link Website (wetransfer.com)
    • Por mamotinho
      Olá, estou com uma dúvida. gostaria de saber como faço para ocultar minhas informações quando alguém for pesquisar pelo meu site, vi que está mostrando meus dados.
       se alguem puder me ajudar fico grato.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.