Nicola Posted January 5, 2010 at 10:02 PM Report Share #304351 Posted January 5, 2010 at 10:02 PM Boas! Tenho um problema num pequeno programa que estou a desenvolver. É um programa em que sao inseridos dados sobre um aluno, depois esses dados sao guardados num vector que vai posteriormente ser utilizado para procurar alunos... Por enquanto ainda so fiz a parte de inserçao de alunos... mas o programa quando arranca depois de inserir os dados avisa que a main deixou de funcionar. Agradecia muito que alguem me pudesse corrigir este pequeno erro, agradeço desde ja a disponibilidade. O codigo do meu programa é o seguinte... #include <stdio.h> #include <string.h> #define Tamanho_Alunos 50 typedef struct { char nome[100]; char morada[100]; int telefone; } Tipo_Aluno; void insere_no_final(Tipo_Aluno tamanho[], int n_alunos, Tipo_Aluno a) { tamanho[n_alunos] = a; } void ordena_por_nome(Tipo_Aluno tamanho[],int numero_alunos) { Tipo_Aluno a; int i,j; for(i = 1; i < numero_alunos; i++) a = tamanho[i]; for(j = i-1; (j >= 0) && (strcmp(a.nome, tamanho[j].nome)<0); j--) tamanho[j + 1] = tamanho[j]; tamanho[j+1] = a; } void ler_aluno(Tipo_Aluno *u,Tipo_Aluno tamanho_alunos[], int *numero) { fflush(stdin); printf("Nome : \t"); gets(u->nome); printf("Morada : \t"); gets(u->morada); printf("Telefone : \t"); scanf("%d",&u->telefone); insere_no_final(tamanho_alunos, *numero, *u); *numero++; ordena_por_nome( tamanho_alunos, *numero); } int main() { Tipo_Aluno aluno; int t_alunos[Tamanho_Alunos]; int n_alunos = 0; ler_aluno(&aluno, t_alunos, &n_alunos); } Link to comment Share on other sites More sharing options...
IRX773 Posted January 5, 2010 at 10:40 PM Report Share #304361 Posted January 5, 2010 at 10:40 PM Tira o int que está atrás do main .... Acho que assim já resolve Link to comment Share on other sites More sharing options...
Nicola Posted January 5, 2010 at 10:55 PM Author Report Share #304367 Posted January 5, 2010 at 10:55 PM Ja experimentei tirar o int atras do main... mas ele continua a nao funcionar... eu penso que o problema esta na declaraçao do t_alunos[Tamanho_Alunos], eu coloquei int porque nao sabia como declarar esse vector... alguem me pode ajudar sff Link to comment Share on other sites More sharing options...
Baderous Posted January 6, 2010 at 01:02 AM Report Share #304390 Posted January 6, 2010 at 01:02 AM Tira o int que está atrás do main .... Acho que assim já resolve Isso é uma asneira de todo o tamanho visto que todas as funções têm e devem indicar claramente o seu tipo de retorno. E o facto de tirares o "int" não quer dizer que ele desaparece. Para as funções que o programador não especifica o tipo de retorno, o compilador assume-o como sendo "int", logo ele continuava lá. Eu vejo aí logo um erro no tipo do t_alunos. Na main dizes que é "int" e depois na função ler_aluno dizes que é Tipo_aluno. Depois tens também bastante coisas mal feitas como o uso do fflush(stdin) para limpar o buffer, ler strings com gets, deves ter também outros problemas a nível de apontadores. Link to comment Share on other sites More sharing options...
IRX773 Posted January 6, 2010 at 02:29 PM Report Share #304463 Posted January 6, 2010 at 02:29 PM Isso é uma asneira de todo o tamanho visto que todas as funções têm e devem indicar claramente o seu tipo de retorno. E o facto de tirares o "int" não quer dizer que ele desaparece. Para as funções que o programador não especifica o tipo de retorno, o compilador assume-o como sendo "int", logo ele continuava lá. Eu vejo aí logo um erro no tipo do t_alunos. Na main dizes que é "int" e depois na função ler_aluno dizes que é Tipo_aluno. Depois tens também bastante coisas mal feitas como o uso do fflush(stdin) para limpar o buffer, ler strings com gets, deves ter também outros problemas a nível de apontadores. Era uma experiencia 😉 .... podia ser o compilador a "tripar-se" Link to comment Share on other sites More sharing options...
mogers Posted January 6, 2010 at 02:53 PM Report Share #304467 Posted January 6, 2010 at 02:53 PM Era uma experiencia 😉 .... podia ser o compilador a "tripar-se" Podias ter feito a experiência localmente antes de mandar a posta 😉 "What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação. Link to comment Share on other sites More sharing options...
IRX773 Posted January 6, 2010 at 03:19 PM Report Share #304477 Posted January 6, 2010 at 03:19 PM Pois 😉 Eu normalmente quando encontro erros marados no meu código por vezes (95% da mesmas) é algo "estúpido" como isso, daí a minha "papaia". Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now