yDiioceN 5 Posted May 31, 2014 boas, alguém me pode ajudar a resolver uns problemas num trabalho? o problema é o seguinte, depois de inserir os dados quando vou tentar alterar diz que alterou mas quando vou consultar os dados ele eliminou alguns e outros ficaram iguais, alguém me sabe dizer de onde vem o erro sf ?? programa completo : #define MAX 50 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> typedef struct aluno{ int id; char aluno[50], morada[50], turma[3]; int num, idade, telefone; }aluno; struct aluno art[MAX]; unsigned int NumRegs; void inicializa(){ int i; NumRegs = 0; for(i=0; i<MAX; i++) art.id=0; } void menu(){ puts("Menu - Comandos :"); puts("n1-Inserir"); puts("2-Alterar"); puts("3-Consultar"); puts("n0-Sair"); printf("n Opcao:"); } void inserir(){ puts("INSERIR ALUNO"); art[NumRegs].id=NumRegs + 1; gets(art[NumRegs].aluno); printf("nIndique o nome do aluno:"); gets(art[NumRegs].aluno); printf("nIndique a idade:"); scanf("%d", &art[NumRegs].idade); printf("nIndique a morada:"); scanf("%s",art[NumRegs].morada); printf("nIndique o numero de telefone:"); scanf("%d", &art[NumRegs].telefone); printf("nIndique a turma:"); scanf("%s",art[NumRegs].turma); NumRegs++; printf("nn Aluno inserido com o numero:%d", NumRegs); getch(); } void alterar(){ int cod, i; puts("ALTERAR ALUNOS"); printf("nIndique o numero do aluno:"); scanf("%d", &cod); i=0; while ((art.id!=0) && (art.id!=cod)){ i++; } if (art.id==cod){ puts("n DADOS DO ALUNO"); printf("nn Nome do aluno: %s", art.aluno); printf("n Idade do aluno: %d", art.idade); puts("nn====================================nn"); puts("ALTERACAO A EFECTUAR"); gets(art.aluno); printf("nIndique o nome do aluno:"); gets(art[NumRegs].aluno); printf("nIndique a idade:"); scanf("%d", &art[NumRegs].idade); printf("nIndique a morada:"); scanf("%s",art[NumRegs].morada); printf("nIndique o numero de telefone:"); scanf("%d", &art[NumRegs].telefone); printf("nIndique a turma:"); scanf("%s",art[NumRegs].turma); puts("n Alteracao efectuada."); } else puts("nn ALUNO INEXISTENTE!"); getch(); } void consultar(){ int cod, i; puts("CONSULTAR ARTIGOS"); printf("indique o codigo do aluno: "); scanf("%d", &cod); i=0; while ((art.id!=0) && (art.id!=cod)){ i++; } if (art.id==cod){ puts("n Dados Do Aluno : "); printf("n Nome do aluno: %s", art.aluno); printf("nn Idade do aluno: %d", art.idade); printf("nn Morada do aluno: %s", art.morada); printf("nn Numero do telefone do aluno: %d", art.telefone); printf("nn Turma do aluno: %s", art.turma); } else puts("nn ALUNO INEXISTENTE!"); getch(); } main(){ int op; inicializa(); do{ system("cls"); menu(); scanf("%d", &op); system("cls"); switch (op){ case 1: inserir(); break; case 2: alterar(); break; case 3: consultar(); break; } }while(op!=0); } Share this post Link to post Share on other sites
yDiioceN 5 Posted June 3, 2014 boas, alguém me pode ajudar a resolver uns problemas num trabalho? o problema é o seguinte, depois de inserir os dados quando vou tentar alterar diz que alterou mas quando vou consultar os dados ele eliminou alguns e outros ficaram iguais, alguém me sabe dizer de onde vem o erro sf ?? programa completo : #define MAX 50 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> typedef struct aluno{ int id; char aluno[50], morada[50], turma[3]; int num, idade, telefone; }aluno; struct aluno art[MAX]; unsigned int NumRegs; void inicializa(){ int i; NumRegs = 0; for(i=0; i<MAX; i++) art.id=0; } void menu(){ puts("Menu - Comandos :"); puts("n1-Inserir"); puts("2-Alterar"); puts("3-Consultar"); puts("n0-Sair"); printf("n Opcao:"); } void inserir(){ puts("INSERIR ALUNO"); art[NumRegs].id=NumRegs + 1; gets(art[NumRegs].aluno); printf("nIndique o nome do aluno:"); gets(art[NumRegs].aluno); printf("nIndique a idade:"); scanf("%d", &art[NumRegs].idade); printf("nIndique a morada:"); scanf("%s",art[NumRegs].morada); printf("nIndique o numero de telefone:"); scanf("%d", &art[NumRegs].telefone); printf("nIndique a turma:"); scanf("%s",art[NumRegs].turma); NumRegs++; printf("nn Aluno inserido com o numero:%d", NumRegs); getch(); } void alterar(){ int cod, i; puts("ALTERAR ALUNOS"); printf("nIndique o numero do aluno:"); scanf("%d", &cod); i=0; while ((art.id!=0) && (art.id!=cod)){ i++; } if (art.id==cod){ puts("n DADOS DO ALUNO"); printf("nn Nome do aluno: %s", art.aluno); printf("n Idade do aluno: %d", art.idade); puts("nn====================================nn"); puts("ALTERACAO A EFECTUAR"); gets(art.aluno); printf("nIndique o nome do aluno:"); gets(art[NumRegs].aluno); printf("nIndique a idade:"); scanf("%d", &art[NumRegs].idade); printf("nIndique a morada:"); scanf("%s",art[NumRegs].morada); printf("nIndique o numero de telefone:"); scanf("%d", &art[NumRegs].telefone); printf("nIndique a turma:"); scanf("%s",art[NumRegs].turma); puts("n Alteracao efectuada."); } else puts("nn ALUNO INEXISTENTE!"); getch(); } void consultar(){ int cod, i; puts("CONSULTAR ARTIGOS"); printf("indique o codigo do aluno: "); scanf("%d", &cod); i=0; while ((art.id!=0) && (art.id!=cod)){ i++; } if (art.id==cod){ puts("n Dados Do Aluno : "); printf("n Nome do aluno: %s", art.aluno); printf("nn Idade do aluno: %d", art.idade); printf("nn Morada do aluno: %s", art.morada); printf("nn Numero do telefone do aluno: %d", art.telefone); printf("nn Turma do aluno: %s", art.turma); } else puts("nn ALUNO INEXISTENTE!"); getch(); } main(){ int op; inicializa(); do{ system("cls"); menu(); scanf("%d", &op); system("cls"); switch (op){ case 1: inserir(); break; case 2: alterar(); break; case 3: consultar(); break; } }while(op!=0); } resolvido, erro estúpido x) Share this post Link to post Share on other sites