Ir ao conteúdo

Posts recomendados

Postado

Meu programa ficou assim, ele rodou até a consulta de todos os dados, mas pra fazer a consulta individual eu fiquei travada.

#include <stdio.h>
#include <locale.h> 
#include <stdlib.h>
#include <string.h>
struct compra{
    char nome[40];
    char produto[40];
    int quantidade;
    float valorProd;
    int contado;
    char formaPag[20];
} compraProg[80];

int indice=0;

void limpaBufferTechado();
void incluir();
void consultarTodos();
void consultarUm();

int main() {
    setlocale(LC_ALL, "Portuguese"); 
    char opcao;
    do {
        system("CLS");
         printf("Cadastro de Clientes\n");
      printf("I - Incluir novo cliente\n");
      printf("C - Consultar todos os clientes\n");
      printf("P - Consultar um cliente específico\n");
      printf("F - Fim do Programa\n");
      printf("\nDigite a opção desejada:");
      scanf("%c%*c", &opcao);
      switch(opcao) {
        case 'i':
        case 'I': incluir(); break;
        case 'c':
        case 'C': consultarTodos(); break;
        case 'p':
        case 'P': consultarUm(); break;
        case 'f':
        case 'F': printf("\nFim do programa"); break;
        default : printf("Opção Inválida!!\n");
      }
      printf("\nDigite <Enter> para continuar...");
      limpaBufferTechado();
      } while (opcao != 'f' && opcao != 'F');
        return 0;
    }
    void incluir()
{
    if(indice < 80)
    {
        printf("Digite o nome do cliente: ");
        gets(compraProg[indice].nome);  
        printf("Nome do produto comprado: ");
        gets(compraProg[indice].produto);
        printf("Quantidade de itens: ");  
        scanf("%i%*c", &compraProg[indice].quantidade);
        printf("Preço do produto: ");
        scanf("%f%*c", &compraProg[indice].valorProd);
        printf("Informe um número pra contado: ");
        scanf("%i%*c",&compraProg[indice].contado);
        printf("Forma de pagamento escolhida(A vista ou parcelado): ");
        gets (compraProg[indice].formaPag);
        indice++; 
    }
    else
    {
        printf("Espaço reservado cheio.\nNão é possível cadastrar novos clientes no momento.\n");
    }
}
//Permite a consulta dos registros da struct
void consultarTodos()
{
    if(indice==0)
        printf("\nNão existem clientes cadastrados no sistema da loja!!\n");
    else
    {
        int index;
        printf("\n\n**********Clientes Cadastrados************\n");
        for(index=0; index<indice; index++)
        {
            printf("\nNome do cliente: %s",compraProg[index].nome);  
            printf("\nNome do produto comprado: %s", compraProg[index].produto);   
            printf("\nQuantidade de itens comprados: %i", compraProg[index].quantidade);   
            printf("\nPreço do Produto:%4.2f%", compraProg[index].valorProd);
            printf("\nInforme um número para contado:%i",compraProg[index].contado);
            printf("\nForma de pagamento escolhida(A vista ou parcelado): %s",compraProg[index].formaPag);
        }
    }
}
void consultarUm()
{
    int i;
    char nomeProcurado;

    printf("\nDigite o nome do cliente: ");
    scanf("%s%*c", &nomeProcurado);
    for(i = 0; i<80;i++)
    {
    if(nomeProcurado == compraProg[i].nome)
        {
            printf("\nRegistro encontrado: ");
            printf("\nNome do cliente: %s",compraProg[i].nome);  
            printf("\nNome do produto comprado: %s", compraProg[i].produto);   
            printf("\nQuantidade de itens comprados: %i", compraProg[i].quantidade);   
            printf("\nPreço do Produto:%4.2f%", compraProg[i].valorProd);
            printf("\nInforme um número para contado:%i",compraProg[i].contado);
            printf("\nForma de pagamento escolhida(A vista ou parcelado): %s",compraProg[i].formaPag);    
    }
    else
    printf("Cliente não encontrado");
    }
}
//Função para limpar o buffer do teclado
void limpaBufferTechado()
{
    char ch;
    while ((ch = getchar()) != '\n' && ch != EOF);
}

Postado

@Helo03    Na função consultarUm  você está usando o símbolo de comparação de string da Linguagem c++ ,  pois na Linguagem  c  , como está nesse tópico ,  é a função  strcmp  ,  e para fazer a pesquisa ali creio que seja melhor usar uma variável para informar se encontrou ou não o nome pesquisado , e encontrando , já para de pesquisar  , pois do jeito que está , ele vai escrevendo aquela mensagem de que não encontrou , várias vezes ,  e então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
#define barra for(f=0;f<40;f++)printf("*");printf("\n");
struct compra
{
    char  nome[40];
    char  produto[40];
    int   quantidade;
    float valorProd;
    int   contado;
    char  formaPag[20];
} compraProg[80];
int indice;  //  aqui antes da main todas as variável são inicializadas com valor zero
void limpaBufferTeclado();
void incluir();
void consultarTodos();
void consultarUm();
int main()
{
    setlocale(LC_ALL, "Portuguese");
    int f;
    char opcao,abarra[30];
    do
    {
        system("cls"                                    );
        barra                                            ;
        printf("Menu De opções :\n"                     );
        printf("  I - Incluir novo cliente\n"           );
        printf("  C - Consultar todos os clientes\n"    );
        printf("  P - Consultar um cliente específico\n");
        printf("  F - Fim do Programa\n"                );
        printf("      Digite a opção desejada:\n\n"     );
        barra                                            ;
        opcao = toupper((char)getch()                   );
        printf("\n\n\a"                                 );
        switch(opcao)
        {
        case 'I':
            incluir();
            break;
        case 'C':
            consultarTodos();
            break;
        case 'P':
            consultarUm();
            break;
        case 'F':
            printf("\nFim do programa");
            break;
        default :
            printf("Opção Inválida!!\n");
        }
        printf("\nDigite <Enter> para continuar...");
        limpaBufferTeclado();
    }while( opcao != 'F' );
    return 512;
}
void incluir()
{
    if(indice < 80)
    {
        printf("Digite o nome do cliente ------: "   );
        gets(compraProg[indice].nome                 );
        printf("Nome do produto comprado ------: "   );
        gets(compraProg[indice].produto              );
        printf("Quantidade de itens -----------: "   );
        scanf("%i%*c", &compraProg[indice].quantidade);
        printf("Preço do produto --------------: "   );
        scanf("%f%*c", &compraProg[indice].valorProd );
        printf("Informe um número pra contado -: "   );
        scanf("%i%*c",&compraProg[indice].contado    );
        printf("Forma de pagamento escolhida\n"      );
        printf("A vista ou parcelado ----------: "   );
        gets (compraProg[indice].formaPag            );
        indice++;
    }
    else
    {
        printf("Espaço reservado cheio.\n");
        printf("Não é possível cadastrar novos clientes no momento.\n\n");
    }
}
//Permite a consulta dos registros da struct
void consultarTodos()
{
    if( indice == 0 )
        printf("\nNão existem clientes cadastrados no sistema da loja !!\n");
    else
    {
        int index;
        printf("\n\n**********Clientes Cadastrados************\n\n"                          );
        for(index=0; index<indice; index++)
        {
            printf("Nome do cliente ----------------: %s\n"    , compraProg[index].nome      );
            printf("Nome do produto comprado -------: %s\n"    , compraProg[index].produto   );
            printf("Quantidade de itens comprados --: %i\n"    , compraProg[index].quantidade);
            printf("Preço do Produto ---------------: %4.2f%\n", compraProg[index].valorProd );
            printf("Informe um número para contado -: %i\n"    , compraProg[index].contado   );
            printf("Forma de pagamento escolhida\n"                                          );
            printf("A vista ou parcelado -----------: %s\n\n"  , compraProg[index].formaPag  );
        }
    }
}
void consultarUm()
{
    int i,flag = 0;
    char nomeProcurado[30];
    printf("Digite o nome do cliente: ");
    scanf("%s%*c", &nomeProcurado);
    for(i = 0; i<80;i++)
    {
        if(strcmp(nomeProcurado,compraProg[i].nome) == 0)
        {
            flag = 1;
            break;
        }
    }
    if( flag )
    {
        printf("\nRegistro encontrado :\n\n"                                                             );
        printf("Nome do cliente ------------------------------------: %s\n"    , compraProg[i].nome      );
        printf("Nome do produto comprado ---------------------------: %s\n"    , compraProg[i].produto   );
        printf("Quantidade de itens comprados ----------------------: %i\n"    , compraProg[i].quantidade);
        printf("Preço do Produto -----------------------------------: %4.2f%\n", compraProg[i].valorProd );
        printf("Informe um número para contado ---------------------: %i\n"    , compraProg[i].contado   );
        printf("Forma de pagamento escolhida(A vista ou parcelado) -: %s\n\n"  , compraProg[i].formaPag  );
    }
    else
        printf("Cliente não encontrado"                                                                  );
}
//Função para limpar o buffer do teclado
void limpaBufferTeclado()
{
    char ch;
    while ((ch = getchar()) != '\n' && ch != EOF);
}

 

  • Amei 1
Postado

@devair1010 

 

Simpatizei demais com seu estilo, percebe-se que gosta muito de usa-lo: É como um texto bem formatado, contudo, o autor não queria impressionar ninguém somente a si, ainda assim, sem essa exigência acaba encantando com sua obra.

"

  • Curtir 1
Postado

@devair1010 Compreendi, não estava conseguindo fazer está comparação e ficava dando erro toda hora. Muitissimo obrigada.

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!