Ir para conteúdo
Fórum Script Brasil
  • 0

invalid operand to binary(resolvido)


X4B

Pergunta

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.

Editado por X4B
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...