Ir ao conteúdo
  • Cadastre-se

Problemas em meu código C


Avila RS

Posts recomendados

Boa noite!

Sou acadêmico de Eng Transportes e Logística, 1º Semestre, estou em Cachoeira do Sul-RS, e vim até este fórum porque não achei ninguém na cidade q possa me ajudar!!!!  Preciso entregar esse programa redondinho ou vou perder o semestre!!!

Estou tendo problemas com um trablho, onde devo fazer um cadastro em c (CRUD) a partir de uma base dada pelo professor, e o mesmo esta apresentando bugs e não consigo achar os erros. É um bom exemplo para todos iniciantes em C como eu!!

 Alguém estaria disposto a ajudar!! Ou sabe de alguém q possa ajudar, mesmo q pagando pelo acessoramento?

 Desde já agradeço a tensão.

Wilson Avila

Link para o comentário
Compartilhar em outros sites

Se souber um pouco de C e precisar de ajuda pra terminar o programa, é só mostrar o código que a gente ajuda. Ou então pense bem forte que tentaremos ler o código telepaticamente.

 

Se não souber nada de C e tiver esperado até o final do semestre pra entregar o trabalho, na tentativa de passar de semestre mesmo sem saber nada da matéria, contribuindo assim com o problema da educação no país, então eu posso fazer por você. Como pagamento aceito Farcry 4 e o novo Borderlands no steam.

 

Mentira. :}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Acho q fui mal interpretado. Só quero ajuda para ver os erros e aprender com eles!!!! Procurei ajuda aqui porque não existe quem de aulas particulares aqui no interior!!! Eu e um colega fizemos o código com base no q o professor passou!!!

Não mandei o código antes  porque estava tentando anexar, para q não ficasse essa "tripa" q ficou!!!

Desculpe se não me fiz entender!!!

 

   Código organizado esta postado a seguir..

Link para o comentário
Compartilhar em outros sites

  Bom dia!!

  O trabalho consiste de um CRUD de 10 alunos, onde deve ter os menus de novo cadastro, editar cadastro, excluir cadastro, relatório e sair..

  1.ao cadastrar deveria salvar o nome com as primeiras letras em maiúscula, independente mente de como foi digitado,com  mascaras em datas e números fornecidos;

   2. o programa deve editar o aluno a partir do CPF, nome ou matrícula;

   3. a exclusão pelos mesmos meios de procura;

   4. busca por cpf, nome ou matrícula;

   5. o relatório deve ser ordenado por nome, idade ou matricula;

 O usuário escolhe como quer executar as funções.

 

   Parece simples, mas é longo, a medida q altero alguma coisa,  causa danos a outras partes, por ainda não dominar a linguagem...

  Estava rodando com erros e bugs, até eu incluir as ordenações do relatório.

   Problemas já verificados:

   a. ao salvar o nome da rua, se for composto o programa entra em looping;- já resolvido por gets no lugar do scanf..

   b. não consegui fazer a função q salva só a primeira letra do nome e sobrenome maiúscula;

   c. esta dando erros na ordenação do relatório..

 Seria isso...sei q é muita coisa , mas qualquer parte q possa ajudar eu agradeço...



 

 Fiz algumas correções e esta rodando mas apresenta problemas q podem ser verificados ao rodar!!!

gostaria de anexar, mas o sistema esta impedindo!! Então vou copiar  para q possa ser testado!!!

 

O Mauro  deu uma força e postou o programa da forma correta, logo a seguir..!!

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include <iostream>#include <cctype>#include <locale.h>struct endereco{    //armazena os dados do endereço    char rua[31];    int numero;    int cep;};struct notas{    //armazena os dados das notas    float nota1;    float nota2;    float medparc;    float notafinal;    float exame;    char situacao[10];};struct cadastro{    //armazena os dados do cadastro    char nome[21];    int matricula, dval;    char cpf[15];    char datanascimento[11];    int dia,mes,ano;    char datamatricula[11];    int diamat,mesmat,anomat;    int telefone;    struct endereco local;    struct notas desemp;};struct relatorio{ int tester;    int r,s;};struct cadastro aluno[10];char data (char data[11], int *dia, int *mes, int *ano){    //funcao mascara data    char tecla;    int i = 0;    while(1){        if(i==10){            data[i] = '\0';            break;        }else if(i==2 || i==5){            data[i] = '/';            printf("%c",data[i]);            i++;        }else{            tecla = getch();            if(tecla>='0' && tecla<='9'){                if(i<10){                    data[i]=tecla;                    printf("%c",tecla);                }                i++;            }else if( (tecla == '\b') ){                if(i>0){                    printf("\b");                    i--;                    if(i == 2 || i == 5){                        i--;                        printf("\b");                    }                }            }else if(tecla == ' '){                i++;                printf("%c",data[i-1]);            }        }    }     *dia = (data[0]-48)*10 + (data[1]-48);                  *mes = (data[3]-48)*10 + (data[4]-48);     *ano = (data[6]-48)*1000 + (data[7]-48)*100 + (data[8]-48)*10 + (data[9]-48);    return(data[11]);}char cpf(char cpf[15]){                    //funcao mascara cpf    char tecla;    int i=0;    while(1){        fflush(stdin);        if(i==14){            cpf[i] ='\0';            break;        }        if((i==3)||(i==7)){            cpf[i] = '.';            printf("%c", cpf[i]);            i++;        }        if((i==11)){            cpf[i] = '-';            printf("%c", cpf[i]);            i++;        }        else{            tecla=getch();            if((tecla>='0')&&(tecla<='9')){                if(i<14){                    cpf[i]=tecla;                    printf("%c", tecla);                }                i++;            }            else if(tecla=='\b'){                if(i>0){                    printf("\b");                    i--;                    if((i==3)||(i==7)||(i==11)){                        i--;                        printf("\b");                    }                }            }            else if(tecla==' '){                i++;                printf("%c", cpf[i-1]);            }        }    }return(cpf[15]);}void buscpf(int d, int *cdt){        //funcao busca pelo cpf    int cont,e=0;    char cpfbusca[15];    system("cls");    printf("\n\n\t\t\tDIGITE O CPF: ");    scanf("%s", cpfbusca);    for(cont=0; cont<d; cont++){        if(cpfbusca==aluno[cont].cpf)          printf("\n\n\t\t\tNOME: %s\n",aluno[cont].nome);            printf("\t\t\tCPF: %s\n", aluno[cont].cpf);            printf("\t\t\tMATRÍCULA: %d\n",aluno[cont].matricula);            printf("\t\t\tTELEFONE: %d\n", aluno[cont].telefone);            printf("\t\t\tENDEREÇO: %s, %d\n",aluno[cont].local.rua,aluno[cont].local.numero);            printf("\t\t\tCEP: %d\n", aluno[cont].local.cep);            printf("\t\t\tDATA DE NASCIMENTO: %s\n", aluno[cont].datanascimento);            printf("\t\t\tNOTA FINAL: %.2f\n\t\t\tSITUAÇÃO: %s\n", aluno[cont].desemp.notafinal, aluno[cont].desemp.situacao);            printf("\n\n");            getch();            e++;            *cdt=cont;        }}void busnome(int d, int *cdt){        //funcao busca pelo nome    int cont,e=0;    char nomebusca[21];    system("cls");    printf("\n\n\n\t\t\tDIGITE O NOME DO ALUNO: ");    scanf("%20[^\n]", nomebusca);    for(cont=0; cont<d; cont++){         if((stricmp (nomebusca , aluno[cont].nome))==0){             printf("\n\n\t\t\tNOME: %s\n",aluno[cont].nome);            printf("\t\t\tCPF: %s\n", aluno[cont].cpf);            printf("\t\t\tMATRÍCULA: %d\n",aluno[cont].matricula);            printf("\t\t\tTELEFONE: %d\n", aluno[cont].telefone);            printf("\t\t\tENDEREÇO: %s, %d\n",aluno[cont].local.rua,aluno[cont].local.numero);            printf("\t\t\tCEP: %d\n", aluno[cont].local.cep);            printf("\t\t\tDATA DE NASCIMENTO: %s\n", aluno[cont].datanascimento);            printf("\t\t\tNOTA FINAL: %.2f   SITUAÇÃO: %s\n", aluno[cont].desemp.notafinal,aluno[cont].desemp.situacao);            printf("\n\n");            getch();            e++;            *cdt=cont;        }    }    if(e==0){        printf("\t\t\tNENHUM ALUNO ENCONTRADO!");        getch();    }}void busmatricula(int d, int *cdt){      //funcao busca pela matricula    int e, cont, nm;    e=0;    system("cls");    printf("\n\n\n\t\t\tDIGITE O NÚMERO DA MATRÍCULA: ");    scanf("%d", &nm);    for(cont=0; cont<d; cont++){        if(nm==aluno[cont].matricula){            printf("\n\n\t\t\tNOME: %s\n",aluno[cont].nome);            printf("\t\t\tCPF: %s\n", aluno[cont].cpf);            printf("\t\t\tMATRÍCULA: %d\n",aluno[cont].matricula);            printf("\t\t\tTELEFONE: %d\n", aluno[cont].telefone);            printf("\t\t\tENDEREÇO: %s, %d\n",aluno[cont].local.rua,aluno[cont].local.numero);            printf("\t\t\tCEP: %d\n", aluno[cont].local.cep);            printf("\t\t\tDATA DE NASCIMENTO: %s\n", aluno[cont].datanascimento);            printf("\t\t\tNOTA FINAL: %.2f\n\t\t\tSITUAÇÃO: %s\n", aluno[cont].desemp.notafinal, aluno[cont].desemp.situacao);            printf("\n\n");            *cdt=cont;            getch();            e++;        }    }    if(e==0){        printf("\t\t\tNENHUM ALUNO ENCONTRADO!");        getch();    }}void novocadastro(int k){            //funcao que cria um novo cadastro        fflush(stdin);        system("cls");        int i,j;                printf("\n\t\t");       for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }                    printf("_");    }           inicio: printf("\n\n\t\t\t   DIGITE OS DADOS SOLICITADOS \n\t\t");     for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }          printf("_");    }                printf("\n\t\t\tNOME DO ALUNO: ");        scanf("%20[^\n]",aluno[k].nome);        printf("\n\t\t\tDATA DE NASCIMENTO: ");        data(aluno[k].datanascimento,&aluno[k].dia,&aluno[k].mes,&aluno[k].ano);        printf("\n\n\t\t\tCPF: ");        cpf(aluno[k].cpf);        printf("\n\n\t\t\tMATRÍCULA: ");        scanf("%d", &aluno[k].matricula);        printf("\n\t\t\tDATA DE MATRÍCULA: ");        data(aluno[k].datamatricula,&aluno[k].diamat,&aluno[k].mesmat,&aluno[k].anomat);        printf("\n\n\t\tNOME DA RUA:\n ");        scanf("%s",aluno[k].local.rua);        printf("\n\t\t\tNÚMERO\n: ");        scanf("%d", &aluno[k].local.numero);        printf("\n\t\t\tCEP:\n ");        scanf("%d", &aluno[k].local.cep);        printf("\n\t\t\tTELEFONE:\n ");        scanf("%d", &aluno[k].telefone);        printf("\n\t\t\tPRIMEIRA NOTA:\n ");        scanf("%f", &aluno[k].desemp.nota1);        printf("\n\t\t\tSEGUNDA NOTA:\n ");        scanf("%f", &aluno[k].desemp.nota2);        aluno[k].desemp.medparc=((aluno[k].desemp.nota1)+(aluno[k].desemp.nota2))/2;        if(aluno[k].desemp.medparc>=7){            aluno[k].desemp.notafinal = aluno[k].desemp.medparc;            aluno[k].desemp.exame = 0,00;            strcpy(aluno[k].desemp.situacao, "\t * APROVADO *\n");          }        else{            exame1:            printf("\n\t\t\tNOTA EXAME: ");            scanf("%f", &aluno[k].desemp.exame);            aluno[k].desemp.notafinal = (aluno[k].desemp.medparc+aluno[k].desemp.exame)/2;            if(aluno[k].desemp.notafinal>=5){                strcpy(aluno[k].desemp.situacao, "\t* APROVADO *\n");            }            else{                strcpy(aluno[k].desemp.situacao, "\t* REPROVADO *\n");            }        }        printf("\n\t\t\tMÉDIA FINAL %.2f  %s\n", aluno[k].desemp.notafinal,aluno[k].desemp.situacao);        //        system("pause");}int n,i,j;int menu(void){     int teste;          printf("\n\t\t");       for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }                    printf("_");    }           inicio: printf("\n\n\t\t\t   CADASTRO DE ALUNOS \n \t\t\t     MENU PRINCIPAL\n\t\t");     for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }          printf("_");    }    printf("\n\n");    printf("\t\t\t1 - NOVO CADASTRO\n");    printf("\t\t\t2 - EDITAR CADASTRO\n");    printf("\t\t\t3 - EXCLUÍR CADASTRO\n");    printf("\t\t\t4 - BUSCAR CADASTRO\n");    printf("\t\t\t5 - RELATÓRIO\n");    printf("\t\t\t6 - SAÍR\n");    printf("\n\n");    printf("\t\t\tDIGITE A OPÇÃO DESEJADA: ");    scanf("%d",&teste);    return(teste);}int menubusca(void){                //funcao que exibe o menu da busca    int teste;    int i,j;                printf("\n\t\t");       for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }                    printf("_");    }           inicio: printf("\n\n\t\t\t       MENU DE BUSCA \n\t\t");     for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }          printf("_");    }    printf("\n\t\t\t1 - BUSCAR POR NOME\n");    printf("\t\t\t2 - BUSCAR POR MATRÍCULA\n");    printf("\t\t\t3 - BUSCAR POR CPF\n");    printf("\t\t\t6 - SAÍR\n");      printf("\t\t\t    OPÇÃO: ");    scanf("%d",&teste);    return(teste);}int menuedit(){            //funcao que exibe o menu de editar cadastroint teste;                printf("\n\t\t");       for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }                    printf("_");    }           inicio: printf("\n\n\t\t\t       MENU EDITAR \n\t\t");     for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }          printf("_");    }    printf("\n\t\t\t1 - EDIÇÃO POR NOME\n");    printf("\t\t\t2 - EDIÇÃO POR MATRÍCULA\n");    printf("\t\t\t3 - EDIÇÃO POR CPF\n");    printf("\t\t\t6 - SAÍR\n");    printf("\t\t\t    OPÇÃO: ");    scanf("%d",&teste);    return(teste);}int menudel(void){            //menu que exibe o menu de excluir um cadastro    int teste;    int i,j;                printf("\n\t\t");       for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }                    printf("_");    }           inicio: printf("\n\n\t\t\t       MENU EXCLUSÃO \n\t\t");     for(i = 0; i < 45; i++) {          for(j = 0; j < 2000000; j++) {          }          printf("_");    }    printf("\n\t\t\t1 - EXCLUSÃO POR NOME\n");    printf("\t\t\t2 - EXCLUSSÃO POR MATRÍCULA\n");    printf("\t\t\t3 - EXCLUSÃO POR CPF\n");    printf("\t\t\t6 - SAÍR\n");    printf("\t\t\t    OPÇÃO: ");    scanf("%d",&teste);    return(teste);}main(){        //funcao principalsetlocale(LC_ALL, "Portuguese");    int j,opcao, busopcao, ediopcao, delopcao, relopcao, v, numerocdt,k, x;    int i=0;    int m=0;    int teste=0,aux;            int ordem[10]={0,1,2,3,4,5,6,7,8,9};    while(opcao!=6){        system("cls");        opcao = menu();        //chama funcao menu        switch(opcao){            case 1:                novocadastro(i); //chama funcao novocadastro                i++;                break;            case 4:                    while(busopcao!=6){                    system("cls");                    busopcao = menubusca();    //chama funcao menu busca                    switch(busopcao){                        case 1:                            fflush(stdin);                            busnome(i, &numerocdt); //chama funcao busca pelo nome                            break;                        case 2:                            fflush(stdin);                            busmatricula(i, &numerocdt); //chama funcao busca pela matricula                            break;                            case 3:                            fflush(stdin);                            buscpf(i, &numerocdt); //chama funcao busca pelo cpf                            break;                        }                    }                            break;            case 2:                while(ediopcao!=6){                    system("cls");                    ediopcao = menuedit(); //chama funcao menu editar                    switch(ediopcao){                        case 1:                            fflush(stdin);                            busnome(i,&numerocdt); //chama funcao editar pelo nome                                fflush(stdin);                                    novocadastro(numerocdt); //chama funcao para criar novo cadastro                                    break;                        case 2:                            fflush(stdin);                                busmatricula(i,&numerocdt); //chama funcao que edita pela matricula                                fflush(stdin);                                    novocadastro(numerocdt); //chama funcao para criar novo cadastro                                    break;                        case 3:                            fflush(stdin);                                buscpf(i,&numerocdt); //chama funcao que edita pelo cpf                                fflush(stdin);                                    novocadastro(numerocdt); //chama funcao para criar novo cadastro                                    break;                    }                }                break;                case 3:                    while(delopcao!=6){                    system("cls");                    delopcao = menudel();     //chama funcao menu excluir                    switch(delopcao){                        case 1:                            fflush(stdin);                                busnome(i, &numerocdt);     //chama funcao de busca pelo nome                                for(x=numerocdt; x<i; x++){                                    aluno[x]=aluno[x+1];                                }                                i--;                                break;                        case 2:                            fflush(stdin);                                busmatricula(i, &numerocdt);    //chama funcao de busca pela matricula                                for(x=numerocdt; x<i; x++){                                    aluno[x]=aluno[x+1];                                }                                i--;                                break;                                case 3:                            fflush(stdin);                                buscpf(i, &numerocdt);    //chama funcao de busca pelo cpf                                for(x=numerocdt; x<i; x++){                                    aluno[x]=aluno[x+1];                                }                                i--;                                break;                            }                    }                    break;                case 5:                system("cls");                while(delopcao!=6){                    system("cls");                    int ordem[10]={0,1,2,3,4,5,6,7,8,9};                    //delopcao = menurelatorio();                                    //funcao que exibe o menu relatório        int teste;        int r,s,m,aux;                 printf("\n\t\t");        for(r = 0; r < 45; r++) {          for(s = 0; s < 2000000; s++) {          }                           printf("_");                 }                        inicio: printf("\n\n\t\t\t       MENU DE RELATÓRIO \n\t\t");                  for(r = 0; r < 45; r++) {          for(s = 0; s < 2000000; s++) {          }          printf("_");           }              printf("\n\t\t\t1 - ORDENAR POR NOME\n");              printf("\t\t\t2 - ORDENAR POR MATRÍCULA\n");           printf("\t\t\t3 - ORDENAR POR IDADE\n");              printf("\t\t\t6 - SAÍR\n");                printf("\t\t\t    OPÇÃO: ");              scanf("%d",&teste);                  while(teste!=6){                           system("cls");            switch(teste){                               case 1:                 //por ordem alfabética                                                 teste=0;                               while(teste==0){                                   teste = 1;                                    for(m = 0 ; m < (r-1) ; m++){                                        if(strcmp(aluno[ordem[m]].nome,aluno[ordem[m+1]].nome)>0){                                           aux=ordem[m];                                           ordem[m]=ordem[m+1];                                           ordem[m+1]=aux;                                           teste = 0;                                        }                                     }                                  }                               for( m = 0 ; m < r ; m++ ){                                   printf("\t\t\tNOME: %s\n",aluno[ordem[m]].nome);                                   printf("\t\t\tMATRÍCULA: %d\n",aluno[ordem[m]].matricula);                                   printf("\t\t\tENDEREÇO: %s, %d, %d\n",aluno[ordem[m]].local.rua,aluno[m].local.numero,aluno[m].local.cep);                                   printf("\t\t\tDATA DA MATRÍCULA: %d",aluno[ordem[m]].datamatricula);                                   system("\t\t\tdate /t\n");                                   printf("\t\t\tCPF: %d\n",aluno[ordem[m]].cpf);                    printf("\t\t\tTELEFONE: %d\n",aluno[ordem[m]].telefone);                                   printf("\t\t\tNOTA 1: %.1f\n",aluno[ordem[m]].desemp.nota1);                                   printf("\t\t\tNOTA 2: %.1f\n",aluno[ordem[m]].desemp.nota2);                                   printf("\n\t\t\tNOTA FINAL: %.1f",aluno[ordem[m]].desemp.notafinal);                    printf("\n\n");                                }                                system("pause");                                break;                                        case 2:                    //ordena por matrícula                              teste=0;                    while(teste==0){                        teste = 1;                        for(m = 0 ; m < (r-1) ; m++){                            if((aluno[ordem[m]].matricula,aluno[ordem[m+1]].matricula)>0){                                aux=ordem[m];                                ordem[m]=ordem[m+1];                                ordem[m+1]=aux;                                teste = 0;                             }                              }                    }                  for( m = 0 ; m < r ; m++ ){                     printf("\t\t\tNOME: %s\n",aluno[ordem[m]].nome);                     printf("\t\t\tMATRÍCULA: %d\n",aluno[ordem[m]].matricula);                     printf("\t\t\tENDEREÇO: %s, %d, %d\n",aluno[ordem[m]].local.rua,aluno[m].local.numero,aluno[m].local.cep);                     printf("\t\t\tDATA DA MATRÍCULA: %d",aluno[ordem[m]].datamatricula);                     system("\t\t\tdate /t\n");                     printf("\t\t\tCPF: %d\n",aluno[ordem[m]].cpf);                     printf("\t\t\tTELEFONE: %d\n",aluno[ordem[m]].telefone);                     printf("\t\t\tNOTA 1: %.1f\n",aluno[ordem[m]].desemp.nota1);                     printf("\t\t\tNOTA 2: %.1f\n",aluno[ordem[m]].desemp.nota2);                     printf("\n\t\t\tNOTA FINAL: %.1f",aluno[ordem[m]].desemp.notafinal);                    printf("\n\n");                 }     system("pause");                 break;                 case 3:                                  //data(aluno[k].datanascimento,&aluno[k].dia,&aluno[k].mes,&aluno[k].ano);                    teste=0;                    while(teste==0){                        teste = 1;                        for(m = 0 ; m < (r-1) ; m++){                            if(strcmp(aluno[ordem[m]].datanascimento,aluno[ordem[m+1]].datanascimento)>0){                                aux=ordem[m];                                ordem[m]=ordem[m+1];                                ordem[m+1]=aux;                                teste = 0;                            }                        }                    }                 for( m = 0 ; m < r ; m++ ){                     printf("\t\t\tNOME: %s\n",aluno[ordem[m]].nome);                     printf("\t\t\tMATRÍCULA: %d\n",aluno[ordem[m]].matricula);                     printf("\t\t\tENDEREÇO: %s, %d, %d\n",aluno[ordem[m]].local.rua,aluno[m].local.numero,aluno[m].local.cep);                     printf("\t\t\tDATA DA MATRÍCULA: %d",aluno[ordem[m]].datamatricula);                     printf("\t\t\tDATA DE NASCIMENTO:%d\n", aluno[ordem[m]].datanascimento);                     printf("\t\t\tCPF: %d\n",aluno[ordem[m]].cpf);                     printf("\t\t\tTELEFONE: %d\n",aluno[ordem[m]].telefone);                     printf("\t\t\tNOTA 1: %.1f\n",aluno[ordem[m]].desemp.nota1);                     printf("\t\t\tNOTA 2: %.1f\n",aluno[ordem[m]].desemp.nota2);                     printf("\n\t\t\tNOTA FINAL: %.1f",aluno[ordem[m]].desemp.notafinal);                    printf("\n\n");                }                system("pause");                break;                    }                }            }     break;                     case 6:                break;            default:                printf("\t\t\t OPÇÃO INVÁLIDA.");        }    }}

Estou repostando o software, para imprimir melhor, vou estudar também, mais sem promessa nenhum, claro que minha intenção e ajudar.

Link para o comentário
Compartilhar em outros sites

Desde já agradeço!!!

Resolvi o problema do nome da rua, trocando o scanf por gets...

printf("ntttNOME DA RUA: ");

fflush(stdin);

gets(aluno[k].local.rua);

sei q é gambiarra, mas...não sei outro modo..

Já eu predileto o scanf, veja bem!

O gets pode facilmente ultrapassar o limite do vetor que é 31 caracteres sendo o ultimo '';

Se eu disse que os scanf pode ficar assim:

printf( "ntttNOME DA RUA: " );scanf( "%30[^\n]s", aluno[k].local.rua ); fflush( stdin ); // a função fflush limpa o descarta as sobras// Esse 30 significa o tamanho do campo, limitando o usuário a digitar apenas 30 letras, descartando o resto
Link para o comentário
Compartilhar em outros sites

Tem uma coisa que eu não entendo...
 
Quando eu tava na faculdade e o professor mandava esse tipo de projeto pra fazer. O meu processo era o seguinte: eu sabia que o programa precisava de uma função pra inserir, uma pra remover e uma pra listar. Então eu criava a função main, criava o tipo de dado (struct) que eu ia usar, em seguida criava a função de inserir.
 
Daí eu tentava usar essa função de inserir e via se tava funcionando como eu queria. Eu testava se tava inserindo corretamente, se tava inserindo mais de uma struct, etc.
 
Só depois de ver que a função inserir tava funcionando corretamente é que eu começava a fazer a função de remover. Afinal de contas não faria sentido criar uma função pra remover, sabendo-se que não haveria nada pra remover pois a função inserir não tava funcionando. Seria perda de tempo.
 
Mas aí, olhando esse código agora, tem muita coisa que eu tô vendo que tá incorreta mas mesmo assim outras funções foram feitas usando as funções que não estão funcionando. Então até mesmo pra ajudar fica difícil pois uma coisa depende da outra.
 
Começando com a função menu()
 
- Por que essas variáveis estão globais em vez de locais?

int n,i,j;

 
- Por que você tem um FOR que vai até 2000000 se ele não faz nada?

for(i = 0; i < 45; i++)for(j = 0; j < 2000000; j++) { }

- Na função main(), você tá comparando o valor de uma variável que não foi inicializada ainda:

while(opcao!=6) { ... }

- Na função novocadastro(), você tá passando como parametro uma variável que não foi definida ainda:

data(aluno[k].datanascimento,&aluno[k].dia,&aluno[k].mes,&aluno[k].ano);

- Nas funções data() e cpf(), você tá retornando valores inválidos:

return(data[11]); // data possui 11 caracteres, então você só pode acessar os elementos de 0 até 10
Link para o comentário
Compartilhar em outros sites

Bom,

01-As variáveis acabaram ficando de outras tentativas;

02- Esse for junto com printf q vem logo abaixo, faz um efeito visual na abertura dos menus;

03- Opcao esta esta na main e esta funcionando bem no while...eu acho..;

04- (data(aluno[k].......Esta ligada com a função data, q acrescenta a mascara ao dado inserido;

05- return(data[10]); return(cpf[15]);  Dei uma olhada, acho q esta correto, por se tratar de mascaras, não pode ficar fora dos parâmetros...tem q ser 11 e 15 como esta...eu acho..

Obrigado pelas observações...

Link para o comentário
Compartilhar em outros sites

Bom,

01-As variáveis acabaram ficando de outras tentativas;

02- Esse for junto com printf q vem logo abaixo, faz um efeito visual na abertura dos menus;

03- Opcao esta esta na main e esta funcionando bem no while...eu acho..;

04- (data(aluno[k].......Esta ligada com a função data, q acrescenta a mascara ao dado inserido;

05- return(data[10]); return(cpf[15]);  Dei uma olhada, acho q esta correto, por se tratar de mascaras, não pode ficar fora dos parâmetros...tem q ser 11 e 15 como esta...eu acho..

Obrigado pelas observações...

 

1 - O problema é que essas variáveis globais possuem o mesmo nome que as variáveis locais nas funções seguintes. Eu não cheguei a testar isso, mas existe a chance delas estarem interferindo no valor das variáveis locais em outros pontos do código. Se você precisar usar variáveis globais, prefira nomes grandes e únicos no seu código.

 

2 - Bem... tecnicamente o código tá correto, mas ainda não entendo o porquê de usar algo que vai apenas deixar o programa mais lento. Não conheço nenhum usuário que ao abrir um programa, pensa "nossa, que programa tão rápido... preferia que o programador tivesse feito essa função mais lenta, com uns pontinhos dançando na tela", :P

 

3 - Quando você declara uma variável, a princípio ela tem um valor indefinido. O sistema operacional apenas jogou ela lá num espaço da memória, sem se importar qual valor que estava escrito alí antes. Então se você tentar imprimir essa variável, ou comparar o valor dela ou fazer qualquer operação usando ela, não é possível dizer com certeza o que irá acontecer.

 

int x;if (x != 1) { ... } // x pode ser qualquer coisa entre 0 e 2^32

 

No código acima, se você rodar o programa 100mil vezes, pode ser que x seja diferente de 1 nessas 100mil vezes, mas aí quando você rodar ele novamente, o x pode ser 1. Isso porque o programador não tem como saber qual valor da memória o x vai catar quando for alocado.

O único jeito de ter certeza que o x nunca será 1, é inicializando o x antes de usar ele.

 

int x = 0;if (x != 1) { ... } // x sempre será diferente de 1, mesmo que você rode o código 1 bilhão de vezes

 

4 - Você tá passando a string de aluno[x].data pro função data(), só que essa string tá vazia. Quando a função tentar acessar algum elemento dela, vai dar erro.

 

5 - Eu não sei o que você quer dizer com máscaras. As funções data() e cpf() são do tipo CHAR, o que significa que elas precisam retornar um valor do tipo CHAR. Na função data() você tá retornando o elemento 11 do array data[], mas por esse array ter 11 elementos, você só poderia retornar um elemento entre 0 e 10. Na função cpf() você tá retornando o elemento 15 do array cpf[], mas por este array ter 15 elementos, você só poderia retornar os elementos entre 0 e 14.

 

Se sua intenção era retornar uma string, então você precisa mudar o tipo de retorno da função pra char* e no final retornar apenas o endereço da string.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...