Sofia Gonçalves Posted January 7, 2017 at 10:09 AM Report Share #601883 Posted January 7, 2017 at 10:09 AM Bom dia! Estou com um grave problema, pois tenho de entregar o trabalho dentro de horas e não consigo resolver algumas coisas! O programa tem um menu principal com vários submenus e nestes há uma opção para eliminar quadra ou participante (o trabalho trata uma corrida de cavalos). Fiz a parte do eliminar e "corre", no entanto, depois não eliminar nada e aparece simplesmente "Quadra não encontrada..." ou "Participante não encontrado..." O meu outro problema está na função FemeaMaisIdosa(), pois quando chamei esta função numa outra função (a função do submenu) começou a aparecer "Error: too few arguments to function "FemeaMaisIdosa". Eu já vi em todo lado e não sei o que mais fazer. Ponho aqui parte do meu programa na esperança que me consigam ajudar! Agradeço desde já a ajuda #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <locale.h> #define Max_Q 100 //Maximo de quadras #define MAX_C 100 //Maximo de Cavalos #define MAX_J 100 //Maximo de Jockeis #define Max_P 3 //Maximo de Provas #define MAX_NJ 15 //Maximo de Jornadas #define MAX_PAR 100 //Maximo de participantes typedef struct Data { int d; int m; int ano; } data; struct tempoGastoProva { int m; int seg; int mseg; }; struct partJornada { char nc[9]; struct tempoGastoProva tGastoProva; }; struct provas { int nProvas; int nParticipantes; struct partJornada pProva[10]; }; typedef struct Quadra { int cod; char NomeQuadra[100]; char Localidade[100]; int nCavalos; int vazio; } quadra; typedef struct RegParticipante { char nomeCavalo[100]; char sexoCavalo; int idadeCavalo; char nifJockey[9]; char nomeQuadra[100]; int cod1; int vazio1; } participante; typedef struct Jornada { int nJornada; char localJornada[100]; data dataJornada; int nprovas; struct provas prova[Max_P]; } jornada; quadra q[Max_Q]; jornada vj[MAX_NJ]; jornada JO[MAX_NJ]; participante part[MAX_PAR]; char op; unsigned int ultimoReg = 0; unsigned int ultimaJornada = 0; main() { setlocale(LC_ALL, "Portuguese"); MenuPrincipal(); return 0; } void MenuPrincipal() { char op; do { system("cls"); printf("MENU PRINCIPAL\n\n"); printf("1 – Gestão de Quadras\n"); printf("2 – Gestão de Participantes\n"); printf("3 – Gestão de Jornadas\n"); printf("4 – Estatísticas\n"); printf("0 – Sair\n"); printf("Selecionar opção: \n\n"); op=getchar(); switch (op) { case '1':GestaoDeQuadras(); break; case '2':MenuGestaoDeParticipantes(); break; case '3':GestaoDeJornadas(); break; case '4':MenuEstatisticas(); break; case '0': exit(0); } }while(op!='1' && op!='2' && op!='3' && op!='4' && op!='0'); } void FemeaMaisIdosa (participante part[], int *num) { int p, max, pmax; p=0; pmax=0; max=part [p].idadeCavalo; for (p=1; p<*num; p++) { if(part[p].sexoCavalo=='C'|| part[p].sexoCavalo) { if(part[p].idadeCavalo>max) { max=part[p].idadeCavalo; pmax=p; } } else printf("\nO cavalo nao e femea"); } printf("\nA femea mais idosa e %s",part[pmax].nomeCavalo); printf("\nSexo: %c",part[pmax].sexoCavalo); printf("\nIdade: %d",part[pmax].idadeCavalo); printf("\nNC: %d", part[pmax].nifJockey); printf("\nQuadra: %s",part[max].nomeQuadra); } void MenuGestaoDeParticipantes() { char op2; do { system("cls"); printf("MENU GESTÃO DE PARTCIPANTES \n\n"); printf("1 - Inserir participante\n"); printf("2 - Eliminar participante\n"); printf("3 - Consultar participante por NC do jockey\n"); printf("4 - Consultar participante cujo cavalo seja a femea mais idosa\n"); printf("5 - Listar todos os participantes\n"); printf("0 - Voltar ao Menu Principal\n\n"); printf("Selecionar opção:_\n"); op2=getchar(); switch (op2) { case '1':inserirParticipante(); break; case '2':EliminarParticipante(); break; case '3':ConsultarPorNCjockey(); break; case '4':FemeaMaisIdosa (participante part[], int *num); break; case '5': case '0':Sair(); break; } }while(op2!=0); Sair(); } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2017 at 10:41 AM Report Share #601884 Posted January 7, 2017 at 10:41 AM no que toca ao problema de apagar, bem, não apresentas código nenhum ... vai ser dificil não só perceber o que está a acontecer, como a tua própria explicação é estranha. o outro problema, parece estar na chamada da função : case'4':FemeaMaisIdosa (participante part[], int *num) a chamada da função requer somente a referencia Às variáveis. se não for isso, é como te disse anteriormente : o código apresentado é muito deminuto IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
PsySc0rpi0n Posted January 7, 2017 at 10:41 AM Report Share #601885 Posted January 7, 2017 at 10:41 AM A da função FemeaMaisIdosa(...) é fácil! Repara bem como chamas a função!!! Responde e escreve o seguinte: Como declaraste a função? Como chamaste a função? Kurt Cobain - Grunge misses you Nissan GT-R - beast killer Link to comment Share on other sites More sharing options...
Sofia Gonçalves Posted January 7, 2017 at 10:46 AM Author Report Share #601886 Posted January 7, 2017 at 10:46 AM Peço desculpa, ocorreu algum erro e a função do eliminar não passou. volto aqui a pôr tudo! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <locale.h> #define Max_Q 100 //Maximo de quadras #define MAX_C 100 //Maximo de Cavalos #define MAX_J 100 //Maximo de Jockeis #define Max_P 3 //Maximo de Provas #define MAX_NJ 15 //Maximo de Jornadas #define MAX_PAR 100 //Maximo de participantes typedef struct Data { int d; int m; int ano; } data; struct tempoGastoProva { int m; int seg; int mseg; }; struct partJornada { char nc[9]; struct tempoGastoProva tGastoProva; }; struct provas { int nProvas; int nParticipantes; struct partJornada pProva[10]; }; typedef struct Quadra { int cod; char NomeQuadra[100]; char Localidade[100]; int nCavalos; int vazio; } quadra; typedef struct RegParticipante { char nomeCavalo[100]; char sexoCavalo; int idadeCavalo; char nifJockey[9]; char nomeQuadra[100]; int cod1; int vazio1; } participante; typedef struct Jornada { int nJornada; char localJornada[100]; data dataJornada; int nprovas; struct provas prova[Max_P]; } jornada; quadra q[Max_Q]; jornada vj[MAX_NJ]; jornada JO[MAX_NJ]; participante part[MAX_PAR]; char op; unsigned int ultimoReg = 0; unsigned int ultimaJornada = 0; main() { setlocale(LC_ALL, "Portuguese"); MenuPrincipal(); return 0; } char menuGestaoQuadras() { char op; do { system("cls"); printf("MENU GESTÃO DE QUADRAS \n\n"); printf("1 - Inserir Quadra\n"); printf("2 - Eliminar Quadra\n"); printf("3 - Consultar Quadra por nome\n"); printf("4 - Consultar Quadra com mais cavalos \n"); printf("5 - Listar Todas as Quadras\n"); printf("0 - Voltar ao Menu Principal\n\n"); printf("Selecionar opção:_\n"); op=getchar(); }while(op!='1' && op!='2' && op!='3' && op!='4' && op!='5' && op!='0'); return op; } void GestaoDeQuadras() { char op; op = menuGestaoQuadras(); switch (op) { case '1':inserirQuadra(); break; case '2':EliminarQuadra(); break; case '3':ConsultarQuadra(); break; case '4':ConsultaQuadraMaisCavalos(); break; case '5':ListAllQuadras(); break; case '0': Sair(); break; } } void MenuPrincipal() { char op; do { system("cls"); printf("MENU PRINCIPAL\n\n"); printf("1 – Gestão de Quadras\n"); printf("2 – Gestão de Participantes\n"); printf("3 – Gestão de Jornadas\n"); printf("4 – Estatísticas\n"); printf("0 – Sair\n"); printf("Selecionar opção: \n\n"); op=getchar(); switch (op) { case '1':GestaoDeQuadras(); break; case '2':MenuGestaoDeParticipantes(); break; case '3':GestaoDeJornadas(); break; case '4':MenuEstatisticas(); break; case '0': exit(0); } }while(op!='1' && op!='2' && op!='3' && op!='4' && op!='0'); } void inserirQuadra() { char ch; unsigned int i; i=ultimoReg; printf("---------------------------------------------------------------------------------------\n"); printf("--------------------------------- INSERIR QUADRA(S) -----------------------------\n"); printf("---------------------------------------------------------------------------------------\n\n\n"); do { fflush(stdin); printf("Nome da Quadra: "); fflush(stdin); gets(q.NomeQuadra); fflush(stdin); printf("Localidade: "); fflush(stdin); gets(q.Localidade); fflush(stdin); printf("Quantidade de Cavalos: "); scanf("%i",&q.nCavalos); puts("Quer inserir outra Quadra [(S)im | (N) ão]"); fflush(stdin); op = toupper(getchar()); ultimoReg++; i++; }while(i>=100 || op!='N'); fflush(stdin); system("pause"); regressarMenuQuadras(); } void EliminarQuadra() /* Através desta função, o utilizador poderá eliminar o conteúdo que inseriu no 'Inserir Quadra' */ { int cod, cont=0; char resp; char NQ[100]; system("cls"); printf("\nQual o nome da quadra que deseja eliminar?\n"); fflush(stdin); gets (NQ); while (cont<=100) { if (q[cont].vazio == 1 && strcmp(q[cont].NomeQuadra,NQ)==0) { printf("\nNome da quadra: %s", q[cont].NomeQuadra); printf("\nLocalidade: %s", q[cont].Localidade); printf("\nQuantidade de cavalos: %d", q[cont].nCavalos); getchar(); printf("\nDeseja realmente eliminar? S/N\n "); scanf("%c", &resp); if ((resp == 'S') || (resp == 's')) { q[cont].vazio=0; printf ("\nA quadra foi eliminada com sucesso\n"); break; } else { if ((resp == 'N') || (resp == 'n')) { printf ("\nQuadra nao eliminada\n"); break; } } } cont++; if(cont>100) printf("\nQuadra nao encontrada!\n"); } } void FemeaMaisIdosa (participante part[], int *num) { int p, max, pmax; p=0; pmax=0; max=part [p].idadeCavalo; for (p=1; p<*num; p++) { if(part[p].sexoCavalo=='C'|| part[p].sexoCavalo) { if(part[p].idadeCavalo>max) { max=part[p].idadeCavalo; pmax=p; } } else printf("\nO cavalo nao e femea"); } printf("\nA femea mais idosa e %s",part[pmax].nomeCavalo); printf("\nSexo: %c",part[pmax].sexoCavalo); printf("\nIdade: %d",part[pmax].idadeCavalo); printf("\nNC: %d", part[pmax].nifJockey); printf("\nQuadra: %s",part[max].nomeQuadra); } void MenuGestaoDeParticipantes() { char op2; do { system("cls"); printf("MENU GESTÃO DE PARTCIPANTES \n\n"); printf("1 - Inserir participante\n"); printf("2 - Eliminar participante\n"); printf("3 - Consultar participante por NC do jockey\n"); printf("4 - Consultar participante cujo cavalo seja a femea mais idosa\n"); printf("5 - Listar todos os participantes\n"); printf("0 - Voltar ao Menu Principal\n\n"); printf("Selecionar opção:_\n"); op2=getchar(); switch (op2) { case '1':inserirParticipante(); break; case '2':EliminarParticipante(); break; case '3':ConsultarPorNCjockey(); break; case '4':FemeaMaisIdosa (participante part[], int *num); break; case '5': case '0':Sair(); break; } }while(op2!=0); Sair(); } Link to comment Share on other sites More sharing options...
Sofia Gonçalves Posted January 7, 2017 at 10:50 AM Author Report Share #601887 Posted January 7, 2017 at 10:50 AM 7 minutos atrás, PsySc0rpi0n disse: A da função FemeaMaisIdosa(...) é fácil! Repara bem como chamas a função!!! Responde e escreve o seguinte: Como declaraste a função? Como chamaste a função? Chamei a função assim " case '4':FemeaMaisIdosa (participante part[], int *num);" até já tirei o que está entre parentesis e não funciona na mesma Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2017 at 11:10 AM Report Share #601888 Posted January 7, 2017 at 11:10 AM (edited) uma coisa de cada vez: Explica o que fazes para determinar que a eliminação tem problemas, assim todos os eventos que deveriam acontecer e não acontecem, e o inverso, acontecem e nao deveriam acontecer Edited January 7, 2017 at 11:10 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Sofia Gonçalves Posted January 7, 2017 at 11:25 AM Author Report Share #601889 Posted January 7, 2017 at 11:25 AM Eu compilei e programa corre mas quando vou para eliminar a informação que inseri, insiro o nome da quadra, por exemplo, e aparece automaticamente "Quadra não encontrada...". Poderá ser das variáveis que estou a utilizar? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2017 at 01:07 PM Report Share #601890 Posted January 7, 2017 at 01:07 PM primeiro de tudo, olha bem para o código. O ciclo e sempre feito ate ao fim, o que quer dizer que a mensagem ira sempre aparecer. Segundo, se a mensgame aparece sem mais nenhuma mensagem antes e porque realmente a quadra não foi encontrada (não existe na lista) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Sofia Gonçalves Posted January 7, 2017 at 01:13 PM Author Report Share #601891 Posted January 7, 2017 at 01:13 PM ou seja, o problema poderá estar na condição do while ou na "interligação" das funções "InserirQuadra" e "EliminarQuadra", não é? Pois se for o segundo caso, aparece sempre a msg de quadra não encontrada porque também não está a receber a informação do inserir quadra. Poderá ser isso? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2017 at 02:46 PM Report Share #601892 Posted January 7, 2017 at 02:46 PM vais fazer este pequeno exercício : tens alguma função para listar as quadras ? o que é listado se o fizeres ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus 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