Ir ao conteúdo
  • Cadastre-se
fdsmello

Ajuda aqui nesse codigo

Recommended Posts

Gostaria de implementar a 4 questão. Eu tive a ideia de chamar a função pesquisar id e a partir dela alterar(so que não sei como) o salario se tiver outra forma de fazer alguem pode  amostrar.

 

[noparse][code] /*

                                    
1) Altere o programa para que este permita gravar e realizar todas as operações com [ 2,0 (dois) pontos ]:
    - o nome de pessoas com até 200 caracteres;
    - o IDcliente substituído por IDcliente com 9 caracteres;
    - adicionar os campos idade (inteiro) e salario (float) à struct.


2) Proceda as implementações necessárias ao código original para que as funções inserirRegistro e
   apresentarRegistros possam funcionar corretamente [ 3,0 (três ) pontos ];

3) Crie uma função que procura por um registro (com valor escolhido pelo usuário do programa) de acordo com o
   IDcliente de ordem na lista [ 2,5 (três vírgula cinco) pontos ];

4) Crie uma função que altera o valor salario de acordo com o IDcliente de ordem na lista [ 2,5 (três vírgula cinco) pontos ];


 

-------------------------------------------------------------------------------------------------------------------*//*-------------------------------------------------------------------------------------------------------------------Início do programa que será adaptado e alterado pelo aluno.-------------------------------------------------------------------------------------------------------------------*/#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<ctype.h>#include<string.h>#define QUANTIDADE 50//void PesquisarID (void);void apresentarRegistros(void);int inicioLista = 0;int fimLista = -1;//sempre +1struct cliente{    char IDcliente[10];    char nome[201];    int idade;    float salario;}lista[QUANTIDADE];char apresentarMenu(){    // Menu principal do programa    char escolha = ' ';    printf("---------------------------------------\n");    printf("           CADASTRO CLIENTES\n");    printf("---------------------------------------\n");    printf("\nEscolha uma das opções:\n");    printf("\n[1] - Inserir Registro\n");    printf("\n[2] - Apresentar Registros\n");    printf("\n[6] - Excluir Registro\n");    printf("\n[7] - Pesquisar oir ID do cliente \n");    printf("\n[9] - Sair do programa\n");    escolha = getch();    fflush(stdin);    return(escolha);}void inserirRegistro(){    // Inserção de registro(s) na lista    system("cls");    printf("---------------------------------------\n");    printf("         INSERIR REGISTRO\n");    printf("---------------------------------------\n");    char opcao = '1';    do    {        if((fimLista+1)<QUANTIDADE) // Se a lista não está cheia, permite a inserção        {            printf("\nRegistro %d -----------------------------\n", fimLista+2);            printf ("Digite o id do Cliente \n");            scanf("%[^\n]",lista[fimLista+1].IDcliente );            fflush(stdin);            printf ("\nDigite o nome do Cliente\n");            scanf("%[A-Z a-z][^\n]",lista[fimLista+1].nome );            fflush(stdin);            printf ("\nDigite o idade do Cliente\n");            scanf("%d",& lista[fimLista+1].idade );            fflush(stdin);            printf ("\nDigite o salario do Cliente\n");            scanf("%f",&lista[fimLista+1].salario );            fflush(stdin);            fimLista++;            do            {                printf("\nDeseja inserir outro registro? [S]im ou [N]ao.\n");                opcao = toupper(getch());                fflush(stdin);                if((opcao != 'S')&&(opcao != 'N'))                {                    printf("\nOpcao invalida!!!\n");                }            }            while((opcao != 'S')&&(opcao != 'N'));        }        else // Lista cheia, não permite a inserção, apresenta mensagem e volta ao menu principal        {            printf("\nLista Cheia!!!\n");            opcao = 'N';        }    }    while(opcao != 'N');    system("pause");}void apresentarRegistros(){    //Apresentação dos registros da lista e respectivos campos    system("cls");    printf("---------------------------------------\n");    printf("          APRESENTAR REGISTROS\n");    printf("---------------------------------------\n");    int indiceLista = 0;     char opcao = '2';    indiceLista =inicioLista;    if(fimLista > -1) // Se a lista não está vazia, permite exibir toda a lista    {        for(indiceLista;indiceLista<fimLista+1;indiceLista++)        {            printf("\n\t%s\t%s\t%d\t%f",lista[fimLista].IDcliente,lista[fimLista].nome,lista[fimLista].idade,lista[fimLista].salario);        }        printf("\n");    }    else // Lista vazia, não executa nada, apresenta mensagem e prepara a volta ao menu principal    {        printf("\nLista vazia!!!\n");    }    printf("\n");    system("pause");}void excluirRegistro(){    // Exclusão de registro(s) da lista    system("cls");    printf("---------------------------------------\n");    printf("           EXCLUIR REGISTRO\n");    printf("---------------------------------------\n");    int indiceLista = 0;    char opcao = '6';    do    {        if( fimLista > -1 ) // Se a lista não está vazia, permite a exclusão        {            printf("\nDigite o numero de ordem da posicao que deseja excluir\n");            printf("ou 0 para apagar todos os registros:\n");            scanf("%d",&indiceLista);            fflush(stdin);            if(indiceLista == 0) //Exclusão de todos os registros            {                for(fimLista; fimLista>= indiceLista; fimLista--)                {                    lista[indiceLista].IDcliente[0] = '\0';                    lista[indiceLista].nome[0] = '\0';                }                printf("\nTodos os registros apagados com sucesso!!!\n");                opcao = 'N';            }            else //Exclusão de um único registro por vez            {                indiceLista--;                if(( indiceLista <= fimLista )&&( indiceLista > -1 )) //Se o registro é maior do que início da                {                                                      //lista e menor que fim->exclui                    if( indiceLista < fimLista )                    {                        for(indiceLista; indiceLista < fimLista; indiceLista++)                        {                            strcpy(lista[indiceLista].IDcliente,lista[indiceLista+1].IDcliente);                            strcpy(lista[indiceLista].nome,lista[indiceLista+1].nome);                        }                        lista[indiceLista].IDcliente[0] = '\0';                        lista[indiceLista].nome[0] = '\0';                        fimLista--;                    }                    else                    {                        lista[indiceLista].IDcliente[0] = '\0';                        lista[indiceLista].nome[0] = '\0';                        fimLista--;                    }                    printf("\nRegistro excluido com sucesso!!!\n");                    do                    {                        printf("\nDeseja excluir outro registro? [S]im ou [N]ao.\n");                        opcao = toupper(getch());                        fflush(stdin);                        if((opcao != 'S')&&(opcao != 'N'))                        {                            printf("\nOpcao invalida!!!\n");                        }                    }                    while((opcao != 'S')&&(opcao != 'N'));                }                else // Registro não existe na lista                {                    printf("\nRegistro inexistente!!!\n");                    system("pause");                }            }        }        else // Lista vazia, não executa nada , apresenta mensagem e prepara a volta ao menu principal        {            printf("\nLista vazia!!!\n");            opcao = 'N';        }    }    while(opcao != 'N');    system("pause");}int main(){    char opcao = ' ';    do    {        system("cls");        opcao = apresentarMenu(); //Chamada à função menu principal do programa que retorna a opcao selecionada        fflush(stdin);        switch(opcao)        {            case '1': inserirRegistro(); //  Opção que chama a  função que insere um novo registro                      break;            case '2': apresentarRegistros(); //  Opção que chama a  função que apresenta todos os registros                      break;            case '6': excluirRegistro(); // Opção que chama a função que exclui um novo ou todos os registros                      break;            case '7': PesquisarID();                     // break;            case '8': AlterarSalario();                        break;            case '9': system("cls"); // Opção que prepara a saída do programa                      printf("\nSaindo do programa...\n");                      system("pause");                      break;            default:  system("cls"); // Na ausência de seleção das opções acima, informa a erro e retorna ao menu                      printf("\nOpcao invalida!!!\n");                      system("pause");                      break;        }    }    while(opcao != '9');    return 0;}void PesquisarID(){   int ind =0;    char pesqID[10];    char opcao = '7';    printf("Digite o id que deseja pesquisa\n");    scanf("%[0-9][^\n]",pesqID);    fflush(stdin);    for(ind=0;ind<fimLista+1;ind++)    {        if (!strcmp(pesqID,lista[ind].IDcliente))            {            printf("Id encontrado %s\n\n",lista[ind].IDcliente);            }        else            {            printf("Id não encontrado\n");            }            system("pause");    }}void AlterarSalario (){    PesquisarID();    int ind =0;    char opcao = '7';}/*-------------------------------------------------------------------------------------------------------------------Fim do programa que será adaptado e alterado pelo aluno.-------------------------------------------------------------------------------------------------------------------*/[/code][/noparse]

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@fdsmello

 



Eu tive a ideia de chamar a função pesquisar id e a partir dela alterar(so que não sei como) o salario se tiver outra forma de fazer alguem pode  amostrar.

 

O raciocínio é exatamente esse !

 

 

Talvez esse exemplo te ajude:

#include <stdio.h>#include <stdlib.h>typedef struct cadastro{    int id;    char nome[20];}cadastro;cadastro pessoa(){    cadastro p;        printf("Nome: ");    scanf("%s%*c", p.nome);    printf("Id: ");    scanf("%d", &p.id);    printf("\n");    return p;}int main(){    int i, id;    cadastro cad[2];    for (i=0; i<2; i++)    {        cad[i] = pessoa();    }    printf("Digite id: ");    scanf("%d", &id);    for (i=0; i<2; i++)    {         /*Quando achar o id, troca o nome */        if (cad[i].id == id)        {            printf("Digite novo nome: ");            scanf("%s%*c", cad[i].nome);            break;        }    }    for (i=0; i<2; i++)    {        printf("%s %d\n", cad[i].nome, cad[i].id);    }    return 0;}

Seria +ou- isso...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×