D4RKbulle7 Posted February 19, 2018 at 08:01 PM Report #609403 Posted February 19, 2018 at 08:01 PM neste programa de uma base de dados meteorológicos permite adicionar na mesma cidade e no mesmo dia + do que um dado de temperatura e humidade tbm permite listar todas as cidades mas queria que apenas lista-se as cidades com dados meteorológicos mas aparece um erro : error: invalid operands to binary != (have 'METEOROLOGIA {aka struct meteorologia}' and 'int') #define TAM 40 /* * */ //Registro da data 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; //Adicionar Informação Meteorologica int adicionar_meteo(CIDADE *ap_cidade) { printf("Escolha a cidade para adicionar informaçao: \n"); Distrito(ap_cidade); printf("\nDigite a temperatura: \n"); scanf("%i",ap_cidade[ap_cidade ->id].temperatura); printf("\nDigite a Humidade: \n"); scanf("%i",ap_cidade[ap_cidade ->id].humidade); printf("\nDigite a data: (Dia/Mes/Ano) \n"); scanf("%i,%i,%i",ap_cidade[ap_cidade ->id].dia,ap_cidade[ap_cidade ->id].mes,ap_cidade[ap_cidade ->id].ano); } //Editar Informação Meteorologica int editar_meteo(CIDADE *ap_cidade) { printf("Escolha a cidade para editar informaçao:\n"); Distrito(ap_cidade); } //Remover Informação Meteorologica int remover_meteo(CIDADE *ap_cidade) { printf("Escolha a cidade para remover informaçao:\n"); Distrito(ap_cidade); } //Listar cidades com dados meteorologicos void listar(CIDADE *ap_cidade){ int i=0; for(;i<=151;i++) if( ap_cidade[i].humidade != 0 && ap_cidade[i].temperatura != 0){ printf("%hu - %s,%s,%s temperatura %i ºC ,Humidade %i %%,Data %i/%i/%i)\n", ap_cidade[i].id, ap_cidade[i].cidade, ap_cidade[i].concelho, ap_cidade[i].concelho ,ap_cidade[i].temperatura,ap_cidade[i].humidade, ap_cidade[i].dia,ap_cidade[i].mes,ap_cidade[i].ano); } }
thefirex Posted February 19, 2018 at 10:24 PM Report #609405 Posted February 19, 2018 at 10:24 PM (edited) Isso acontece porque creio que tenhas mal configurado os teus structs. Dentro do struct CIDADE tu queres guardar os valores da humidade e da temperatura. Agora, tu criaste um struct à parte chamado METEOROLOGIA e colocaste lá um unsigned short int humidade e um short int temperatura, e dentro do struct CIDADE o que fizeste foi colocar METEOROLOGIA humidade, temperatura, e depois onde dá o erro colocaste "if(ap_cidade.humidade != 0.....)" e isto dá erro pois simplesmente estás a ir dentro do struct CIDADE ao campo humidade que está como tipo de dados METEOROLOGIA e não como inteiro. Então, ou simplesmente eliminas o struct METEOROLOGIA e colocas a humidade e a temperatura dentro do struct CIDADE com tipo de dados inteiro(ou short, unsigned, qualquer tipo de dados numéricos que te dê mais jeito), ou, caso queiras um array do tipo METEOROLOGIA dentro do struct CIDADE colocas dentro deste struct METEOROLOGIA dados[20](por exemplo), pois como está não está correto e é por isso que dá o erro a comparar. Edited February 19, 2018 at 10:29 PM by thefirex
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