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

Programa notas alunos


viciado

Pergunta

Receber o nome dos 30 alunos de uma sala, determinar e mostrar a média aritmética de todos os alunos e indicar os alunos aprovados e reprovados, a média é 6

Problema com soma de das notas. "invalid operands to binary +"

#include <stdio.h>
#include <stdlib.h>

#define M 30
struct alunos
       {
             char nome[50];
             float nota1[M];
             float nota2[M];
             float nota3[M];
             float nota4[M];
             }dados[M];
float media(){
      int i;
      for(i=0;i<M;i++){
               printf("\n %s \n",dados[i].nome);
               float media = (dados[i].nota1 + dados[i].nota2 + dados[i].nota3 + dados[i].nota4) / 4;
               printf("Media: \n %f",media);
               if(media < 6){
                        printf("\n %s reprovado \n",dados[i].nome);
                        }
               else{
                    printf("\n %s aprovado \n",dados[i].nome);
                    }
               }
}
int main(void)
{
    int i;
    for(i=0;i<M;i++){
              printf("Informe o nome do alunos \n");
              scanf("%s",&dados[i].nome);
              printf("Informe a primeira nota do aluno \n");
              scanf("%f",&dados[i].nota1);
              printf("Informe a segunda nota \n");
              scanf("%f",&dados[i].nota2);
              printf("Informe a terceira notas \n");
              scanf("%f",&dados[i].nota3);
              printf("Informe a quarta nota \n");
              scanf("%f",&dados[i].nota4);
              }
    media();
    system("PAUSE");
    return 0;
}

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Primeiramente, essa struct não faz sentido. Você criou um vetor dessa struct, mas cada nota é um vetor. O certo é usar a struct para representar cada aluno.

Outra coisa:> evite o uso de variáveis globais. Passe-as como parâmetro. Para programas pequenos, não faz diferença, mas em programas garneds, faz muita diferença.

O ideal é fazerf a struct assim:

typedef struct
{
    char nome[50];
    float notas[NUMERO_DE_PROVAS];
} ALUNO;

Tendo um vetor para representar as notas, você pode automatizar o cálculo da média, usando um loop.

Link para o comentário
Compartilhar em outros sites

  • 0

Qual o problema nos calculos ?

#include <stdio.h>
#include <stdlib.h>

#define M 30
struct alunos
       {
             char nome[50];
             float notas[120];
             }dados[M];
float media(){
      int i,j;
      float soma = 0;
      for(i=0;i<M;i++){
               printf("\n %s \n",dados[i].nome);
               for(j=0;j<4;j++){
                    soma = soma + dados[i].notas[j];
                    float media = soma / 4;
               printf("Media: \n %f",media);
               if(media < 6){
                        printf("\n %s reprovado \n",dados[i].nome);
                        }
               else{
                    printf("\n %s aprovado \n",dados[i].nome);
                    }
                    }
               }
}
int main(void)
{
    int i,j;
    for(i=0;i<M;i++){
              printf("Informe o nome do alunos \n");
              scanf("%s",&dados[i].nome);
              for(j=0;j<4;j++){
                               printf("Informe as notas do alunos \n");
                               scanf("%f",&dados[i].notas[j]);
                               }
              }
    media();
    system("PAUSE");
    return 0;
}

Link para o comentário
Compartilhar em outros sites

  • 0

float notas[120] ???

Há 120 provas??

Você está dividindo por 4 logo após cada soma. Tem que dividir depois de sair do loop

Tome cuidado com o local onde vocÊ cria as variáveis. Elas só existem no bloco onde foram criadas. Se forem criadas dentro do for, por exemplo, só existirão naquele bloco

De novo, evite o uso de variáveis globais. Passe os dados por parâmetros

#include <stdio.h>
#include <stdlib.h>

#define M 3
#define PROVAS 4

struct alunos
       {
             char nome[50];
             float notas[PROVAS];
             }dados[M];


void media(){
      int i,j;
      
      for(i=0;i<M;i++)
      {
         float media = 0;
         printf("\n %s \n",dados[i].nome);
         for(j=0;j<PROVAS;j++)
         {
              
              media += dados[i].notas[j];
              
         }
               media /= (float) PROVAS;
               printf("Media: %f ", media);
               if(media < 6)
               {
                        printf("\n %s reprovado \n",dados[i].nome);
                 }
               else{
                    printf("\n %s aprovado \n",dados[i].nome);
                    }
            }
               
}
int main(void)
{
    int i,j;
    for(i=0;i<M;i++){
              printf("Informe o nome do alunos \n");
              scanf("%s", dados[i].nome);
              for(j=0;j<PROVAS;j++){
                               printf("Informe as notas do alunos \n");
                               scanf("%f",&dados[i].notas[j]);
                               }
              }
    media();

    return 0;
}

Link para o comentário
Compartilhar em outros sites

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...