Jump to content
Fórum Script Brasil
  • 0

invalid operand to binary(resolvido)


X4B
 Share

Question

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.

Edited by X4B
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...