Buscar

Problema com funções- Struct- C

 Crie uma estrutura com o nome Cliente contendo: CPF, nome (até 50 caracteres), endereço (até 80 caracteres), telefone (13 caracteres), lista de compras (ponteiro para uma estrutura do tipo vetor de ponteiros). Crie um vetor de ponteiros contendo no máximo 100 elementos que podem vir a apontar para a estrutura criada. Então implemente:

  1.        Uma função que retorne um ponteiro para um vetor de caracteres contendo um texto de, no máximo, 50 caracteres digitados pelo teclado.
  2.        Uma função que preencha a lista de compras de um cliente usando a função anteriormente criada.
  3.        Uma função para cadastrar cliente e lista de compras, guardando um ponteiro no vetor de estruturas cliente.
  4.        Uma função que retorne o índice de um cliente no vetor de estruturas clientes usando o CPF para buscar o cliente.
  5.        Uma função para cadastrar cliente.
  6.        Uma função para deletar cliente.

💡 5 Respostas

User badge image

André Felipe

#ifndef CLIENTE_H_INCLUDED
#define CLIENTE_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

// estruturas
typedef struct ListaCompras{
    int topo_lista;
    char itens[100][50];
}ListaCompras;

typedef struct Cliente{
    char nome[50];
    char cpf[13];
    char endereco[80];
    char telefone[13];
    ListaCompras lista_compras;
}Cliente;




// variaveis globais
Cliente lista_clientes[100];
int topo_lista_cliente = 0;




// funcoes
void LeItem(char* entrada){
    // exibe na tela a mensagem
    printf("Digite o nome do item a ser inserido: ");

    // adiciona na variavel passada por parâmetro.
    fgets(entrada, 50, stdin);
}


void CadastraCliente(Cliente c){
    // adiciono o elemento no topo da lista de clientes.
    memcpy(&lista_clientes[topo_lista_cliente], &c, sizeof(Cliente));

    // seto o contador de itens comprados pelo cliente para zero.
    lista_clientes[topo_lista_cliente].lista_compras.topo_lista = 0;

    // incremento o topo para ele ser uma posicao vaga.
    topo_lista_cliente++;
}


Cliente* BuscaCliente(char* cpf){
    int cliente_atual = 0;

    // procuro o cliente com o cpf até o final da lista.
    while(cliente_atual <= topo_lista_cliente){

        // se eu achar, eu retorno o endereço de memória dele.
        if(strcmp(cpf, lista_clientes[cliente_atual].cpf) == true){
            return &lista_clientes[cliente_atual];
        }
        // senao eu vou para o próximo.
        else{
            cliente_atual++;
        }
    }
    // se eu não encontrar nada.
    return NULL;
}


void AdicionaItem(Cliente* c, char* item){
    // adiciono o elemento no topo da lista de compras.
    strcpy(c->lista_compras.itens[c->lista_compras.topo_lista], item);

    // incremento o topo para ele ser uma posicao vaga.
    c->lista_compras.topo_lista++;
}

void DeletaCliente(char* cpf){
    Cliente* aux = BuscaCliente(cpf);
    aux = NULL;
}

#endif // CLIENTE_H_INCLUDED

0
Dislike0
User badge image

Andre Smaira

Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Algoritmos e Estrutura de Dados.


#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

struct Cliente

{

char nome [50][50];

char endereco [50][80];

int cpf[50];

int tel [50];

char *lista [50]

};

void Cadastro(){

printf("Cadastro de Clientes ");

printf("Digite o nome do Cliente: ");

gets(Cliente[cont].nome);

printf("Digite o endereço: ");

gets(Cliente[cont].endereco);

fflush(stdin);

printf("Digite o numero do CPF: ");

scanf("%d", &Cliente[cont].CPF);

fflush(stdin);

printf("Digite o numero do telefone: ");

scanf("%d", &Cliente[cont].tel);

fflush(stdin);

cont++;

}

void Busca(){

int C;

printf("Digite o numero do CPF: ");

scanf("%d", &C);

for(int j=0;j<cont;j++){

if(cliente[i].cpf==C){

printf("Cadastro do Cliente ");

printf("%c", Cliente[j].nome);

printf("%c", Cliente[j].endereco);

printf("%d", Cliente[j].CPF);

printf("%d", &Cliente[cont].tel );

}

else{

printf("Cliente não encontrado! ");

}

}

}

void Excluir(){

int D;

printf("Digite o numero do CPF: ");

scanf("%d", &C);

for(int j=0;j<cont;j++){

if(cliente[i].cpf==C){

printf("Excluir Cliente ");

Cliente[j].nome = NULL;

Cliente[j].endereco = NULL;

Cliente[j].CPF = NULL;

Cliente[cont].tel = NULL;

}

else{

printf("Cliente não encontrado! ");

}

}

}

int main(){

int a=0, cont = 0;

while(a==0){

printf(“Escolha as seguintes opções: ”);

printf(“1_ Cadastro de clientes.”);

printf(“2_ Buscar cliente.”);

printf(“3_ Excluir clientes.”);

printf(“0_ Sair.”);

gets(“%d”,a);

if(a==1){

Cadastro();

}

else if(a==2){

Busca();

}

else if(a==3){

excluir();

}

else if(a==0){

break;

}

else{

printf(“Não existe esta opção, tente novamente.”);

}

}

return 0;

}


Portanto, o algoritmo apresentado realiza o cadastro de pessoas, faz busca pelos dados utilizando o CPF e também exclui o cadastro do cliente também buscando pelo CPF. A escolha das operações que se deseja realizar é feita por meio de um menu, conforme solicitado pelo enunciado da questão.

0
Dislike0
User badge image

Andre Smaira

Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Algoritmos e Estrutura de Dados.


#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

struct Cliente

{

char nome [50][50];

char endereco [50][80];

int cpf[50];

int tel [50];

char *lista [50]

};

void Cadastro(){

printf("Cadastro de Clientes\n");

printf("Digite o nome do Cliente: ");

gets(Cliente[cont].nome);

printf("Digite o endereço: ");

gets(Cliente[cont].endereco);

fflush(stdin);

printf("Digite o numero do CPF: ");

scanf("%d", &Cliente[cont].CPF);

fflush(stdin);

printf("Digite o numero do telefone: ");

scanf("%d", &Cliente[cont].tel);

fflush(stdin);

cont++;

}

void Busca(){

int C;

printf("Digite o numero do CPF: ");

scanf("%d", &C);

for(int j=0;j<cont;j++){

if(cliente[i].cpf==C){

printf("Cadastro do Cliente\n");

printf("%c", Cliente[j].nome);

printf("%c", Cliente[j].endereco);

printf("%d", Cliente[j].CPF);

printf("%d", &Cliente[cont].tel );

}

else{

printf("Cliente não encontrado!\n");

}

}

}

void Excluir(){

int D;

printf("Digite o numero do CPF: ");

scanf("%d", &C);

for(int j=0;j<cont;j++){

if(cliente[i].cpf==C){

printf("Excluir Cliente\n");

Cliente[j].nome = NULL;

Cliente[j].endereco = NULL;

Cliente[j].CPF = NULL;

Cliente[cont].tel = NULL;

}

else{

printf("Cliente não encontrado!\n");

}

}

}

int main(){

int a=0, cont = 0;

while(a==0){

printf(“Escolha as seguintes opções: ”);

printf(“1_ Cadastro de clientes.”);

printf(“2_ Buscar cliente.”);

printf(“3_ Excluir clientes.”);

printf(“0_ Sair.”);

gets(“%d”,a);

if(a==1){

Cadastro();

}

else if(a==2){

Busca();

}

else if(a==3){

excluir();

}

else if(a==0){

break;

}

else{

printf(“Não existe esta opção, tente novamente.”);

}

}

return 0;

}


Portanto, o algoritmo apresentado realiza o cadastro de pessoas, faz busca pelos dados utilizando o CPF e também exclui o cadastro do cliente também buscando pelo CPF. A escolha das operações que se deseja realizar é feita por meio de um menu, conforme solicitado pelo enunciado da questão.

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