D4RKbulle7 Posted February 19, 2018 at 12:53 PM Report #609396 Posted February 19, 2018 at 12:53 PM Estou a fazer um banco de dados meteorologico e estou a ter um problema: na void VianaDoCastelo aparece um aviso com :"declared here" e na void Distrito na opcao de viana do castelo hã um erro:"too few arguments to function 'VianaDoCastelo'" obrigado pela ajuda, #define TAM 30 typedef struct data{ unsigned short int dia,mes,ano; }DATA; typedef struct meteorologia{ unsigned short int humidade; short int temperatura; }METEOROLOGIA; typedef struct cidade{ unsigned short int id; char cidade[TAM]; char concelho[TAM]; char distrito[TAM]; DATA dia,mes,ano; METEOROLOGIA humidade, temperatura; }CIDADE; //Distrito de Viana do Castelo void VianaDoCastelo(CIDADE *ap_cidade){ unsigned short int opcao; printf(" Código, Cidade, Concelho, Distrito ou Região Autónoma \n" "141, Viana do Castelo, Viana do Castelo, Viana do Castelo\n"); scanf("%i",&opcao); cleanInputBuffer(); switch (opcao){ case (141): ap_cidade[opcao].id = 141; strcpy(ap_cidade[opcao].cidade, "Viana do Castelo"); strcpy(ap_cidade[opcao].concelho, "Viana do Castelo"); strcpy(ap_cidade[opcao].distrito, "Viana do Castelo"); break; } } //Menu para escolher o distrito void Distrito (CIDADE *ap_cidade){ unsigned short int opcao; printf("Escolha o distrito ou Região Autónoma : \n" "1 - Aveiro \n" "2 - Beja \n" "3 - Braga\n" "4 - Bragança\n" "5 - Castelo Branco\n" "6 - Coimbra\n" "7 - Évora\n" "8 - Faro\n" "9 - Guarda\n" "10 - Leiria\n" "11 - Lisbon\n" "12 - Portalegre\n" "13 - Porto\n" "14 - Santarém\n" "15 - Setúbal\n" "16 - Viana do Castelo\n" "17 - Vila Real\n" "18 - Viseu\n" "19 - Açores\n" "20 - Madeira\n"); scanf("%i",&opcao); cleanInputBuffer(); switch (opcao){ case (1): Aveiro(); break; case (2): Beja(); break; case (3): Braga(); break; case (4): Braganca(); break; case (5): CasteloBranco(); break; case (6): Coimbra(); break; case (7): Evora(); break; case (8): Faro(); break; case (9): Guarda(); break; case (10): Leiria(); break; case (11): Lisbon(); break; case (12): Portalegre(); break; case (13): Porto(); break; case (14): Santarem(); break; case (15): Setubal(); break; case (16): VianaDoCastelo(); break; case (17): VilaReal(); break; case (18): Viseu(); break; case (19): Azores(); break; case (20): Madeira(); break; } } int main(int argc, char** argv) { CIDADE*ap_cidade; unsigned short int opcao; printf("*************************MENU************************\n" "1 - Adicionar,Editar,Remover Informação Meteorologica\n" "2 - Guardar/Carregar dados de um ficheiro\n" "3 - Valores Medios,Maximos e Minimos\n" "4 - Exportar resultados para um ficheiro cvs\n" "5 - Listar Cidades\n" "6 - Sair\n" "Escolha uma opção\n"); scanf("%i",&opcao); switch (opcao){ case (1) : Menu1(); break; case (2): break; case (3): break; case (4): break; case (5): break; case (6): return (EXIT_SUCCESS); } }
M6 Posted February 19, 2018 at 02:30 PM Report #609397 Posted February 19, 2018 at 02:30 PM No Case 16 tens uma chamada à função "VianaDoCastelo" em que não estás a passar nenhum argumento, mas a função, tal como a definiste, está à espera de receber um argumento que é um apontador para uma CIDADE. 1 Report 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
thefirex Posted February 19, 2018 at 02:33 PM Report #609398 Posted February 19, 2018 at 02:33 PM Está a chamar a função VianaDoCastelo na função Distrito sem passar o apontador ap_cidade, daí ele indicar o erro de "too few arguments to function 'VianaDoCastelo'"
D4RKbulle7 Posted February 19, 2018 at 02:52 PM Author Report #609399 Posted February 19, 2018 at 02:52 PM 18 minutos atrás, M6 disse: está à espera de receber um argumento que é um apontador para uma CIDADE. Não percebi esta parte,dentro da função Distrito no case 16 devo de por CIDADE *ap_cidade;?
thefirex Posted February 19, 2018 at 04:13 PM Report #609400 Posted February 19, 2018 at 04:13 PM A função void VianaDoCastelo tem como argumento(o que está entre parenteses) CIDADE *ap_cidade , ou seja, declaras que a função tem um argumento apontador do tipo de dados CIDADE e que dentro daquela função se chama ap_cidade (que também é o nome usado em main para criar o apontador). Na função distrito, no case 16, chama a função VianaDoCastelo sem passar o argumento que antes foi definido para essa função. A solução passa por passar o apontador que está na função Distrito (e que veio da função main) para a função VianaDoCastelo quando a chama, ficando no case 16 case (16): VianaDoCastelo(ap_cidade); break; 2 Report
D4RKbulle7 Posted February 19, 2018 at 07:53 PM Author Report #609402 Posted February 19, 2018 at 07:53 PM Obrigado
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