1
resposta

na hora de pesquisar o cliente pelo codigo o cliente n aparece

estou tendo problemas nesse codigo e precisava mto de ajuda, na hora de cadastrar o cliente e td mais funciona, o problmema e q na hora q vou pesquisar o cliente pelo codigo dele simplesmente o programa n me mostra, alguem pode me ajudar a onde eu errei? me dizer a onde eu errei? eu realmente preciso de ajuda com isso.

#include<stdio.h>
#include<stdlib.h>
#define MAXCLIENTE 100 //defini a quantidade de clientes que podem ser cadastrados em uma constante
typedef struct{
    int codigo;
    char nome[61];
    char sobrenome[61];
    int diaNasc, mesNasc, anoNasc;
    float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;
}cliente;
cliente clientes[MAXCLIENTE];
//prototipo das minhas funcoes
void menu();
void cadastrar();
void pesquisar();
void listar();
int main(){
    menu();
    cadastrar();
    pesquisar();

    return 0;
}
void menu(){
    system("cls"); //system cls para da clear na tela
    int op;
    do{
        printf("*********MENU********");
        printf("\n1 - Cadastrar Cliente\n2 - Pesquisar Cliente\n3 - Listar\n0 - Sair");
        printf("\n*********************\n");
        scanf("%d", &op);
        getchar();
        switch(op){
            case 1:
                cadastrar();
            break;
            case 2:
                pesquisar();
            break;
        }
        getchar();
    }while(op!=0);
}
void cadastrar(){
    int codigo;
    char nome[61];
    char sobrenome[61];
    int diaNasc, mesNasc, anoNasc;
    float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;
    int op;
    do{
        system("cls");
        printf("Insira o codigo do cliente: ");
        scanf("%d", &codigo);
        printf("Nome e Sobrenome: ");
        scanf("%s %s", &nome, &sobrenome);
        printf("Data de nascimento dia/mes/ano: ");
        scanf("%d/%d/%d",&diaNasc, &mesNasc, &anoNasc);
        printf("Digite os valores das ultimas 10 compras: ");
        scanf("%f %f %f %f %f %f %f %f %f %f", &v1, &v2, &v3, &v4, &v5, &v6, &v7, &v8, &v9, &v10);
        printf("\n1 - Continuar \n0 - Sair\n");
        scanf("%d", &op);
    }while(op!=0);
}
void pesquisar(){
    system("cls");
    int codigo;
    char nome[61];
    char sobrenome[61];
    int diaNasc, mesNasc, anoNasc;
    float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;
    printf("Digite o codigo do cliente para pesquisar: ");
    scanf("%d", &codigo);
    for (int i = 0; i<MAXCLIENTE; i++){
        if(clientes[i].codigo==codigo){
            printf("Codigo do cliente: %d.\n", codigo);
            printf("Nome do Cliente: %s %s.\n", nome, sobrenome);
            printf("Data de nascimento %d/%d/%d.\n", diaNasc, mesNasc, anoNasc);
            printf("Valores das ultimas 10 compras: R$%.1f R$%.1f R$%.1f R$%.1f R$%.1f\n", v1, v2, v3, v4, v5);
            printf("Valores das ultimas 10 compras: R$%.1f R$%.1f R$%.1f R$%.1f R$%.1f\n", v6, v7, v8, v9, v10);
        }
    }
}
1 resposta

Opa, respondi essa questão no seu tópico anterior. O que tá acontecendo no seu código é o seguinte:

void cadastrar(){ 
        int codigo; 
        char nome[61]; 
        char sobrenome[61]; 
        int diaNasc, mesNasc, anoNasc; 
        float v1,v2,v3,v4,v5,v6,v7,v8,v9,v10; 
        int op;
        do{ 
                system("cls");
                printf("Insira o codigo do cliente: ");
                scanf("%d", &codigo);
                printf("Nome e Sobrenome: "); 
                scanf("%s %s", &nome, &sobrenome); 
                printf("Data de nascimento dia/mes/ano: ");
                scanf("%d/%d/%d",&diaNasc, &mesNasc, &anoNasc); 
                printf("Digite os valores das ultimas 10 compras: "); 
                scanf("%f %f %f %f %f %f %f %f %f %f", &v1, &v2, &v3, &v4, &v5, &v6, &v7, &v8, &v9, &v10);
                printf("\n1 - Continuar \n0 - Sair\n");
                scanf("%d", &op); 
            }while(op!=0); 
}

Dentro de cadastrar você cria as variáveis né, nome, sobrenome, valores, etc. Você faz as pergunta, amarzena esses valores nessas variáveis, mas nunca cria uma variável cliente para ser armazenado dentro do seu array clientes. Por isso seu array fica sempre vazio.

Eu criaria um array de controle, tipo: int qtd_armazenado, iniciaria com 0 ela, e faria esse controle.

int qtd_armazenado = 0; // coloca isso como variável global pra não pŕecisar trabalhar com ponteiros

void cadastrar(){ 
        int op;
        do{ 
                system("clear");
                printf("Insira o codigo do cliente: ");
                scanf("%d", &clientes[qtd_armazenado].codigo);
                printf("Nome e Sobrenome: "); 
                scanf("%s %s", &clientes[qtd_armazenado].nome, &clientes[qtd_armazenado].sobrenome); 
                printf("Data de nascimento dia/mes/ano: ");
                scanf("%d/%d/%d",&clientes[qtd_armazenado].diaNasc, &clientes[qtd_armazenado].mesNasc, &clientes[qtd_armazenado].anoNasc); 
                printf("Digite os valores das ultimas 10 compras: "); 
                scanf("%f %f %f %f %f %f %f %f %f %f", &clientes[qtd_armazenado].v1, &clientes[qtd_armazenado].v2, &clientes[qtd_armazenado].v3, &clientes[qtd_armazenado].v4, &clientes[qtd_armazenado].v5, &clientes[qtd_armazenado].v6, &clientes[qtd_armazenado].v7, &clientes[qtd_armazenado].v8, &clientes[qtd_armazenado].v9, &clientes[qtd_armazenado].v10);
                qtd_armazenado++;
                printf("\n1 - Continuar \n0 - Sair\n");
                scanf("%d", &op); 
            }while(op!=0); 
}