Ir ao conteúdo
  • Cadastre-se

Ajuda aqui nesse codigo


fdsmello

Posts recomendados

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]
Link para o comentário
Compartilhar em outros sites

@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...

 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...