Buscar

dica como fazer

A empresa ELETROCARO resolveu informatizar o cadastro de seus clientes. Para
que isto aconteça, á empresa solicitou aos alunos da Uninove que desenvolvessem um
programa em C.
Para desenvolver esse programa, a empresa exigiu certos critérios, como:
 O programa deve ter uma opção para armazenar os seguintes dados: o código do
cliente, nome, endereço, telefone, data de nascimento, código do produto e
quantidade de cada produto que o cliente costuma comprar. É importante destacar
que não pode haver dois ou mais clientes com o mesmo código e/ou dois ou mais
produtos com o mesmo código. Também é relevante lembrar que não pode
armazenar clientes/produtos caso tenha ultrapassado um limite determinado (ler
abaixo);
 O programa deve ter uma opção para remover um cliente ou remover algum produto
do cliente. É importante destacar que não é possível remover um dado inválido ou se
não há nada cadastrado. Para toda remoção também deve haver uma reorganização
da estrutura (Não deve haver posições vazias no vetor entre duas posições que tenha
dados cadastrados.) Exemplo:
Quantidade de elementos armazenados: 3
Posição 0 1 2 ... N
Conteúdo Ana Paulo Pedro Vazio Vazio
Removendo o Paulo, o arquivo deve ficar assim: Quantidade de elementos
armazenados: 2
Posição 0 1 2 ... N
Conteúdo Ana Pedro vazio vazio Vazio
E não assim:Quantidade de elementos armazenados: 2
Posição 0 1 2 ... N
Conteúdo Ana Vazio Pedro vazio Vazio
3º LISTA DE EXERCÍCIOS PARA NOTA Prof. Maílson da Rocha
P R Á T I C A D E P R O G R A M A Ç Ã O 3
 O programa deve ter opções de busca pelo nome e pelo código do cliente; Caso não
seja encontrado o dado, o usuário deve ser informado;
 O programa deve ter uma opção que mostre todos os dados dos clientes na tela;
 O programa deve ter uma opção que busque todos os dados de todos os clientes que
compram um determinado produto, ou seja, buscar todos os clientes pelo código do
produto;
Devem ser usados:
 Deve haver uma constante MaxCliente e uma MaxProduto definidas no começo do
programa para limitar a quantidade máxima de clientes e de produtos,
respectivamente. Isto não quer dizer que os usuários serão obrigados a usar esta
quantidade máxima. Esta quantidade deve ser controlada pelo desenvolvedor á
medida em que o usuário cadastrar e/ou remover algum dado. A entrada de dados,
por exemplo, deve ser aleatória, ou seja, o usuário não pode ser obrigado a digitar a
quantidade máxima permitida;
 O usuário deverá ter a liberdade de escolher as opções do menu quantas vezes ele
quiser, ou seja, o programa só será finalizado quando o usuário escolher a opção de
saída:
Exemplo do menu:
1 - Cadastrar Clientes
2 – Remover Cliente
3 – Remover produto do Cliente
4 – Busca pelo nome do Cliente
5 – Busca pelo código do Cliente
6 – Busca dos Clientes pelo código do produto
7 – Saída.

💡 4 Respostas

User badge image

Lucas Firak

basicamente os dois programas sao de vetores de Strings. Como nao existe String em C, é vetor de vetor de caracter.

char nome [3][40] ou char nome [40][3] , ai vai de como voce esta acostumado a programar.

o que vc precisa saber para resolver estes exercicios é utilisar a biblioteca string.h ( #include<string.h>) e os comandos:

strcmp(string,string) - função com retorno inteiro... 0 para igual...

strcpy(string1,string2) - copia o que esta na variavel string1 para string2

 

para o segundo, voce deve utilisar um vetor de uma struct:

typedef struct item //estrutura para controlar produtos
{
     int coditem;

     char nomeItem[40];
};

typedef struct pessoa// estrutura para clientes
{
     int codigo;

     char nome[40];

     struct item produto[MaxProduto]; // cada cliente possui um vetor de produtos
};

struct pessoa cliente[MaxCliente]; // vetor de clientes

 

para o menu ficar sempre rodando coloca um while opcao != 7 ... e aconselho a utilisar system("CLS"); para limpar a tela e nao virar uma bagunça...

 

espero ter ajudado...

0
Dislike0
User badge image

Andre Smaira

Inicialmente devemos criar uma Struct que acomode os dados dos clientes.

#include <stdio.h>

#include<conio.h>

typedef struct{

char nome[40];

char endereco[40];

int dia,mes,ano;

int codigo;

int quantidade;

}Clientes;


Com isso, podemos criar um vetor de structs, no caso criaremos para 100 posições.

Clientes clientes[100];


Assim, podemos definir as variáveis que serão utilizadas no algoritmo.

int main()

{ char cliente[40];

int opcao,cont_clientes=0;

int flag=0,parada=0;

int codigo_provisorio;

int MaxCliente=20, Maxproduto=20;


Para evitar erros durante as verificações, zeraremos todos os códigos presentes nas structs.

for(int i=0;i<100;i++){

clientes[i].codigo=0;

}

Assim, definimos a variável parada para encerrar o loop e exibiremos o menu com as opções para o usuário.

while(parada==0){

printf("1- Cadastrar Clientes\n2 – Remover Cliente\n3 – Remover produto do Cliente\n4 – Busca pelo nome do Cliente\n5 – Busca pelo código do Cliente\n6 – Busca dos Clientes pelo código do produto\n7 – Saída.");

scanf("%i",&opcao);

Com isso, devemos verificar as opções através do comando switch. Na primeira opção cadastraremos o usuário com o auxílio de uma flag de verificação, a mesma lógica pode ser usada para cadastro de produto.

switch(opcao){

case 1:

printf("Digite o codigo:");

scanf("%i",&codigo_provisorio);

for(int i=0;i<MaxCliente;i++){

if(codigo_provisorio==clientes[i].codigo){

flag=1;

printf("Impossivel cadastrar\n");

}

}

if (flag==0 && cont_clientes<MaxCliente){//pode cadastrar

printf("\nNome:");

scanf("\n%s",&clientes[cont_clientes].nome);

printf("\nEndereco:");

scanf("\n%s",&clientes[cont_clientes].endereco);

printf("\nData de nascimento\n Dia:");

scanf("\n%s",&clientes[cont_clientes].dia);

printf("\nMes:");

scanf("\n%s",&clientes[cont_clientes].mes);

printf("\nAno:");

scanf("\n%s",&clientes[cont_clientes].ano);

printf("\nQuantidade:");

scanf("\n%s",&clientes[cont_clientes].quantidade);

clientes[cont_clientes].codigo=codigo_provisorio;

cont_clientes++;

}else{

printf("Maximo de clientes");

}

flag=0;

break;


Já na segunda opção novamente iremos verificar todas as structs, caso o algoritmo encontre o usuário, o excluiremos e realizaremos a reordenação do vetor.

case 2:

printf("\nDigite o cliente:");

scanf("\n%s",&cliente)

for(int i=0;i<MaxCliente;i++){

if(cliente==clientes[i].nome){

clientes[i].nome='';

clientes[i].endereco='';

clientes[i].dia=0;

clientes[i].mes=0;

clientes[i].ano=0;

clientes[i].quantidade=0;

clientes[i].codigo=0;

flag=1;//cliente excluido

}}

if(flag==1){

if(clientes[i+1].codigo!=0){ //reordena

clientes[i].nome=clientes[i+1].nome;

clientes[i].endereco=clientes[i+1].endereco

clientes[i].dia=clientes[i+1].dia;

clientes[i].mes=clientes[i+1].mes;

clientes[i].ano= clientes[i+1].ano;

clientes[i].quantidade=clientes[i+1].quantidade;

clientes[i].codigo=clientes[i+1].codigo;

} else{

printf("Cliente não encontrado");

}

flag=0;

break;


O caso 3 e 5 seguem a mesma lógica, devido a isso, podemos exemplifica-los dessa forma.

case 5:

printf("\nDigite o codigo");

scanf("%i",&codigo_provisorio);

for(int i=0;i<MaxCliente;i++){

if(clientes[i].codigo==codigo_provisorio){

clientes[i].codigo=0;

flag=1;

}

}

if(flag==1){

printf("Produto não existente");

}

flag=0;

break;

Na opção 4 pesquisaremos o nome do cliente, caso o mesmo existe seus dados serão apresentados, caso seu nome não esteja no vetor, uma mensagem será exibida.

case 4:

printf("\nDigite o nome");

scanf("\n%s",&cliente);

for(int i=0;i<MaxCliente;i++){

if(clientes[i].nome==cliente){

flag=1;

printf("\nNome:%s",clientes[i].nome);

printf("\nEndereco: %s",clientes[i].endereco);

printf("\nData de nascimento %i %i %i",clientes[i].dia,clientes[i].mes,clientes[i].ano);

printf("\nCodigo: %i",clientes[i].codigo);

printf("\nCodigo: %i",clientes[i].codigo);

}}

if(flag==1){

printf("Não foi possivel encontrar o cliente");

}

flag=0;

case 5:

printf("\nDigite o codigo");

scanf("%i",&codigo_provisorio);

for(int i=0;i<MaxCliente;i++){

if(clientes[i].codigo==codigo_provisorio){

clientes[i].codigo=0;

flag=1;

}

}

if(flag==1){

printf("Produto não existente");

}

flag=0;

break;


Já para a 7º opção, voltaremos a utilizar a variável parada, para encerrar o loop e o programa.

case 7:

parada=0;

break;

default:

printf("\nOpcao invalida");

}

}

return 0;

} }

0
Dislike0
User badge image

Andre Smaira

Inicialmente devemos criar uma Struct que acomode os dados dos clientes.

#include <stdio.h>

#include<conio.h>

typedef struct{

char nome[40];

char endereco[40];

int dia,mes,ano;

int codigo;

int quantidade;

}Clientes;


Com isso, podemos criar um vetor de structs, no caso criaremos para 100 posições.

Clientes clientes[100];


Assim, podemos definir as variáveis que serão utilizadas no algoritmo.

int main()

{ char cliente[40];

int opcao,cont_clientes=0;

int flag=0,parada=0;

int codigo_provisorio;

int MaxCliente=20, Maxproduto=20;


Para evitar erros durante as verificações, zeraremos todos os códigos presentes nas structs.

for(int i=0;i<100;i++){

clientes[i].codigo=0;

}

Assim, definimos a variável parada para encerrar o loop e exibiremos o menu com as opções para o usuário.

while(parada==0){

printf("1- Cadastrar Clientes\n2 – Remover Cliente\n3 – Remover produto do Cliente\n4 – Busca pelo nome do Cliente\n5 – Busca pelo código do Cliente\n6 – Busca dos Clientes pelo código do produto\n7 – Saída.");

scanf("%i",&opcao);

Com isso, devemos verificar as opções através do comando switch. Na primeira opção cadastraremos o usuário com o auxílio de uma flag de verificação, a mesma lógica pode ser usada para cadastro de produto.

switch(opcao){

case 1:

printf("Digite o codigo:");

scanf("%i",&codigo_provisorio);

for(int i=0;i<MaxCliente;i++){

if(codigo_provisorio==clientes[i].codigo){

flag=1;

printf("Impossivel cadastrar\n");

}

}

if (flag==0 && cont_clientes<MaxCliente){//pode cadastrar

printf("\nNome:");

scanf("\n%s",&clientes[cont_clientes].nome);

printf("\nEndereco:");

scanf("\n%s",&clientes[cont_clientes].endereco);

printf("\nData de nascimento\n Dia:");

scanf("\n%s",&clientes[cont_clientes].dia);

printf("\nMes:");

scanf("\n%s",&clientes[cont_clientes].mes);

printf("\nAno:");

scanf("\n%s",&clientes[cont_clientes].ano);

printf("\nQuantidade:");

scanf("\n%s",&clientes[cont_clientes].quantidade);

clientes[cont_clientes].codigo=codigo_provisorio;

cont_clientes++;

}else{

printf("Maximo de clientes");

}

flag=0;

break;


Já na segunda opção novamente iremos verificar todas as structs, caso o algoritmo encontre o usuário, o excluiremos e realizaremos a reordenação do vetor.

case 2:

printf("\nDigite o cliente:");

scanf("\n%s",&cliente)

for(int i=0;i<MaxCliente;i++){

if(cliente==clientes[i].nome){

clientes[i].nome='';

clientes[i].endereco='';

clientes[i].dia=0;

clientes[i].mes=0;

clientes[i].ano=0;

clientes[i].quantidade=0;

clientes[i].codigo=0;

flag=1;//cliente excluido

}}

if(flag==1){

if(clientes[i+1].codigo!=0){ //reordena

clientes[i].nome=clientes[i+1].nome;

clientes[i].endereco=clientes[i+1].endereco

clientes[i].dia=clientes[i+1].dia;

clientes[i].mes=clientes[i+1].mes;

clientes[i].ano= clientes[i+1].ano;

clientes[i].quantidade=clientes[i+1].quantidade;

clientes[i].codigo=clientes[i+1].codigo;

} else{

printf("Cliente não encontrado");

}

flag=0;

break;


O caso 3 e 5 seguem a mesma lógica, devido a isso, podemos exemplifica-los dessa forma.

case 5:

printf("\nDigite o codigo");

scanf("%i",&codigo_provisorio);

for(int i=0;i<MaxCliente;i++){

if(clientes[i].codigo==codigo_provisorio){

clientes[i].codigo=0;

flag=1;

}

}

if(flag==1){

printf("Produto não existente");

}

flag=0;

break;

Na opção 4 pesquisaremos o nome do cliente, caso o mesmo existe seus dados serão apresentados, caso seu nome não esteja no vetor, uma mensagem será exibida.

case 4:

printf("\nDigite o nome");

scanf("\n%s",&cliente);

for(int i=0;i<MaxCliente;i++){

if(clientes[i].nome==cliente){

flag=1;

printf("\nNome:%s",clientes[i].nome);

printf("\nEndereco: %s",clientes[i].endereco);

printf("\nData de nascimento %i %i %i",clientes[i].dia,clientes[i].mes,clientes[i].ano);

printf("\nCodigo: %i",clientes[i].codigo);

printf("\nCodigo: %i",clientes[i].codigo);

}}

if(flag==1){

printf("Não foi possivel encontrar o cliente");

}

flag=0;

case 5:

printf("\nDigite o codigo");

scanf("%i",&codigo_provisorio);

for(int i=0;i<MaxCliente;i++){

if(clientes[i].codigo==codigo_provisorio){

clientes[i].codigo=0;

flag=1;

}

}

if(flag==1){

printf("Produto não existente");

}

flag=0;

break;


Já para a 7º opção, voltaremos a utilizar a variável parada, para encerrar o loop e o programa.

case 7:

parada=0;

break;

default:

printf("\nOpcao invalida");

}

}

return 0;

} }

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais