mundo Posted July 8, 2012 at 10:21 AM Report #467883 Posted July 8, 2012 at 10:21 AM Bom dia, estou aqui a resolver um teste e nao estou a conseguir fazer um exercicio, envolvendo uma struct. tenho que fazer uma função int maisFreq(Pauta p, int n) que calcula a nota mais frequente entre os n primeiros alunos da lista p. O codigo que tenho é o seguinte, com bastantes asneiras, mas nao estou a conseguir resolver, se alguem me puder ajudar agradecia: #include <stdio.h> #include <stdlib.h> #define MAX 300 typedef struct linha{ int numero; char nome[100]; int nota; }Pauta[MAX]; int contaElem(Pauta p[MAX], int n){ int x; //contador int i,j;//indices para percorrer o array int flag; //determina se foi encontrado for(i = 0, j = i+1; i < (n-1); i++, j++){ if(p->nota[i] == p->nota[j]){ if(flag == 0){ x++; flag = 1; } } else{ flag = 0; } } return x; } int maisFreq(Pauta p[MAX], int n){ int t, flag; int *moda; //sera o que retornará o valor da nota mais frequente int i, j, k; t = contaElem(p,n); moda = (int *) malloc (t * sizeof(Pauta)); k = flag = 0; for(i = 0, j = i+1; i < (n-1); i++, j++){ if(p->nota[i] == p->nota[j]){ if(flag == 0){ moda[k++] = p->nota[j]; flag = 1; } } else{ flag = 0; } } return moda; }
renafi Posted July 8, 2012 at 11:00 AM Report #467885 Posted July 8, 2012 at 11:00 AM Qual é o erro que te dá? Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist
mundo Posted July 8, 2012 at 12:14 PM Author Report #467888 Posted July 8, 2012 at 12:14 PM In function 'contaElem': ex1.c:25: error: request for member 'nota' in something not a structure or union ex1.c:25: error: request for member 'nota' in something not a structure or union ex1.c: In function 'maisFreq': ex1.c:50: error: request for member 'nota' in something not a structure or union ex1.c:50: error: request for member 'nota' in something not a structure or union ex1.c:52: error: request for member 'nota' in something not a structure or union ex1.c:60: warning: return makes integer from pointer without a cast
Guest Posted July 8, 2012 at 12:24 PM Report #467889 Posted July 8, 2012 at 12:24 PM (edited) if(p->nota[i] == p->nota[j]){ typedef struct linha{ int numero; char nome[100]; int nota; }Pauta[MAX]; Como podes ver nota não é um array de inteiros mas sim somente um inteiro. Edited July 8, 2012 at 12:25 PM by Guest
mundo Posted July 8, 2012 at 12:30 PM Author Report #467890 Posted July 8, 2012 at 12:30 PM Sim mas como vou diferenciar as notas entao?
Guest Posted July 8, 2012 at 01:02 PM Report #467895 Posted July 8, 2012 at 01:02 PM Não percebi a tua pergunta, mas tu tens 1 nota pot linha por isso se quiseres mais notas por linha tens que criar um array de int's
Happening Posted July 8, 2012 at 02:38 PM Report #467898 Posted July 8, 2012 at 02:38 PM Sugestão: não uses os teus for's para ver se a nota existe. já uqe crias-te uma struct usa-a para ires dessa struct para a próxima e assim sucessivamente até o teu apontador te apontar para null. O apontador estará na própria struct.
Rui Carlos Posted July 8, 2012 at 04:30 PM Report #467920 Posted July 8, 2012 at 04:30 PM Possivelmente o que pretendes é p->nota, e não p->nota. Rui Carlos Gonçalves
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