Ir para conteúdo
Fórum Script Brasil

X4B

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre X4B

X4B's Achievements

0

Reputação

  1. Olá. Estou tentando implementar este código com estrutura de dados, porém o compilador GCC 4.7 diz que há operandos inválidos. Dei uma pesquisada aqui no fórum e descobri que este pode ser um erro em que não está se fazendo a operação com o valor do vetores. Não consigo entender o porque ele não está passando os valores. Alguém pode me ajudar? Os erros acontecem nas linhas: 146:27 , 151:27, 164:30, 176:21, 188:21 #include<stdio.h> #include<stdlib.h> #define ALUNOS 15 #define MEDIA 7.0 #define TAMANHO 80 //Tamanho do nome dos alunos typedef struct { char *nomeAluno; double notas1[ALUNOS]; double notas2[ALUNOS]; int matricula[ALUNOS]; }Cadastro; ... Cadastro *nome(int tamanho) { Cadastro *ptr; int i; if(!(ptr=malloc(tamanho*sizeof(Cadastro)))){ printf("Sem memória\n"); exit(1); } for(i=0;i<tamanho;i++){ ptr[i].nomeAluno=malloc(TAMANHO); } return ptr; } //Função que recebe informações e as armazena em um vetor. void recebe_informacoes_alunos(Cadastro *cad) { int i; for(i=0;i<ALUNOS;i++){ printf("\n"); // printf("Entre com o nome do aluno: \t"); // scanf("%s",cad.nomeAluno[i]); printf("Entre com a matrícula do %dº aluno:\t ",i+1); scanf("%d",&cad[i].matricula); printf("Entre com a nota da primeira avaliação:\t "); scanf("%lf",&cad[i].notas1); /* while((cad[i].notas1>10.0)||(cad[i].notas1<0.0)){ printf("Valor informado está incorreto! A nota vai de 0 a 10.\n"); printf("Insira a nota novamente:\t"); scanf("%lf",&cad[i].notas1); }*/ printf("Entre com a nota da segunda avaliação:\t "); scanf("%lf",&cad[i].notas2); /* while((cad[i].notas2>10.0)||(cad[i].notas2<0.0)){ printf("O valor informado está incorreto! A nota vai de 0 a 10.\n"); printf("Insira a nota novamente:\t"); scanf("%lf",&cad[i].notas2); }*/ } system("clear"); } //Calcula a média de cada avaliação. double calcula_media_turma(Cadastro *cad, double avaliacao) { int i; if(avaliacao==2){ avaliacao=0; //Média para avaliação 1 for(i=0;i<ALUNOS;i++){ avaliacao=cad[i].notas1+avaliacao; } }else{ avaliacao=0; //Média para avaliação 2 for(i=0;i<ALUNOS;i++){ avaliacao=cad[i].notas2+avaliacao; } } return avaliacao=(avaliacao/ALUNOS); } //Calcula a média de cada aluno. void lista_media_final_alunos(Cadastro *cad) { int i; double mediafinal; for(i=0;i<ALUNOS;i++){ mediafinal=((cad[i].notas1+cad[i].notas2)/2); printf("A média do aluno %d é: \t%.1lf",cad[i].matricula,mediafinal); printf("\n"); } } //Lista os alunos aprovados. void lista_alunos_aprovados(Cadastro *cad) { int i; for(i=0;i<ALUNOS;i++){ if((cad[i].notas1+cad[i].notas2)/2>=MEDIA){ printf("O aluno de matrícula %d está aprovado.\n",cad[i].matricula); } } } //Lista os alunos em exame. void lista_alunos_exame(Cadastro *cad) { int i; for(i=0;i<ALUNOS;i++){ if((cad[i].notas1+cad[i].notas2)/2<MEDIA){ printf("O aluno de matrícula %d está em exame.\n",cad[i].matricula); } } } void libera(Cadastro *cad, int tam) { int i; for(i=0;i<tam;i++){ free(cad[i].nomeAluno); } free(cad); }. Já descobri! Eram os vetores da struct que estava dando erro. Só retirei-os e foi corrigido. Como foi feita a alocação lá embaixo não precisava estes vetores.
×
×
  • Criar Novo...