Ir ao conteúdo
  • Cadastre-se

Calcular média escolar, aprovado ou reprovado


carssio

Posts recomendados

faca um programa que leia o nome e 4 notas de um aluno. Armazene as notas também em um vetor. Por fim, o programa deve informar se o aluno foi aprovado (média maior ou igual a 6,0) ou reprovado (média menor que 6,0).

#include <stdio.h>
int main(void) {
  float nota1[2];
  float nota2[2];
  float nota3[2];
  float nota4[2];
  float media;
  int i;
  char nome;
  printf("\nEntre com o nome do aluno: ");
  scanf("%s", &nome);
  printf("Informe a 1a. nota:\n");
  scanf("%f", &nota1);
  printf("\nInforme a 2a. nota:\n");
  scanf("%f", &nota2);
  printf("\nInforme a 3a. nota:\n");
  scanf("%f", &nota3);
  printf("\nInforme a 3a. nota:\n");
  scanf("%f", &nota4);
  media = (nota1 + nota2 + nota3 + nota4) / 4;
  printf("\nMedia final = %.2f", media);
  if (media >= 6.0)
     printf(" (aluno aprovado).");
  else if ((media >= 5.0) && (media < 6.0))
          printf(" (aluno em recuperacao).");
       else
      printf(" (aluno reprovado).");
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Cara, Respondi sua outra pergunta. você precisa reestudar os conceitos de vetor. Esse exercício é pra usar um vetor só. Vetor é um assunto complicado pra quem tá começando (como eu). Recomendo ter um livro pra ler além de tutoriais de internet. André Backes é muito bom pra C e tem aula dele no Youtube. Mas vamos à questão:

 

se são quatro notas o array tem 4 indices de 0 a 3: int total=4; int notas[total]; int soma=0;

 

Soma acumula os valores dos indices de array dentro do loop:

 

soma = soma+notas ou soma+=notas;

 

Se eu falar mais que isso você não fica inteligente! Valeu.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@carssio        seu código está dando erro porque você colocou as variáveis nota1[2] até nota4[2] do tipo float como se fosse vetor, então se remover esses caracteres aqui   [2]   ele funciona, mas ele mostra apenas um aluno de cada vez para mostrar os quatro alunos é preciso fazer algumas modificações e colocar mais algumas bibliotecas como a string e a conio e também a stdlib.  e usaremos o comando atof, para converter os valores que estão como string, para float

veja como seu código ficaria :

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
char vetor [4][5][20];
int main(void) {
    float nota1;
    float nota2;
    float nota3;
    float nota4;
    float media;
    int i,j;
    char nome[20];
    for(i=0;i<4;i++){
        printf("\nEntre com o nome do aluno: ");
        fflush(stdin);
        gets(vetor[i][0]);
        for(j=1;j<5;j++){
            printf("Informe a %da. nota:",j);
            fflush(stdin);
            gets(vetor[i][j]);
        }
    }
    for(i=0;i<4;i++){
        nota1=atof(vetor[i][1]);nota2=atof(vetor[i][2]);
        nota3=atof(vetor[i][3]);nota4=atof(vetor[i][4]);
        media = (nota1 + nota2 + nota3 + nota4) / 4;
        printf("\nMedia final = %.2f", media);
        if (media >= 6.0)
            printf(" ( aluno %s aprovado ).",vetor[i][0]);
        else if ((media >= 5.0) && (media < 6.0))
            printf(" ( aluno %s em recuperacao ).",vetor[i][0]);
        else
            printf(" ( aluno %s reprovado ).",vetor[i][0]);
    }
    getch();
}

 

Link para o comentário
Compartilhar em outros sites

nao executou amigo ,

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char vetor [4][5][20];
int main(void) {
    float nota1;
    float nota2;
    float nota3;
    float nota4;
    float media;
    int i,j;
    char nome;
    for(i=0;i<1;i++){
        printf("\nEntre com o nome do aluno: ");
        
        scanf("%s", &nome);
        
        for(j=1;j<5;j++){
            printf("Informe a %da. nota:",j);
            scanf("%d", &j);

        }
    }
    for(j=0;j<4;j++){
        nota1=atof(vetor[j][1]);nota2=atof(vetor[j][2]);
        nota3=atof(vetor[j][3]);nota4=atof(vetor[j][4]);
        media = (nota1 + nota2 + nota3 + nota4) / 4;
        printf("\nMedia final = %.2f", media);
        if (media >= 6.0)
            printf(" ( aluno %s aprovado ).",vetor[j][0]);
        else if ((media >= 5.0) && (media < 6.0))
            printf(" ( aluno %s em recuperacao ).",vetor[j][0]);
        else
            printf(" ( aluno %s reprovado ).",vetor[j][0]);
    }
    }

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@carssio    aqui no code block está funcionando bem,  mas esse código que você postou não funciona mesmo não porque você modificou ele ali no loop j que faz  a entrada de dados você colocou para ler inteiros mas o vetor é de string e nesse caso ele não consegue verificar o que está no vetor.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
Em 14/05/2017 às 19:04, carssio disse:

faca um programa que leia o nome e 4 notas de um aluno. Armazene as notas também em um vetor. Por fim, o programa deve informar se o aluno foi aprovado (média maior ou igual a 6,0) ou reprovado (média menor que 6,0).


#include <stdio.h>
int main(void) {
  float nota1[2];
  float nota2[2];
  float nota3[2];
  float nota4[2];
  float media;
  int i;
  char nome;
  printf("\nEntre com o nome do aluno: ");
  scanf("%s", &nome);
  printf("Informe a 1a. nota:\n");
  scanf("%f", &nota1);
  printf("\nInforme a 2a. nota:\n");
  scanf("%f", &nota2);
  printf("\nInforme a 3a. nota:\n");
  scanf("%f", &nota3);
  printf("\nInforme a 3a. nota:\n");
  scanf("%f", &nota4);
  media = (nota1 + nota2 + nota3 + nota4) / 4;
  printf("\nMedia final = %.2f", media);
  if (media >= 6.0)
     printf(" (aluno aprovado).");
  else if ((media >= 5.0) && (media < 6.0))
          printf(" (aluno em recuperacao).");
       else
      printf(" (aluno reprovado).");
}

 

/* O ideal para quem  trabalha com c/c++ sempre  e bom  fazer uso da   struct, assim criando 
funções separada que visam os 3 elementos fundamental de um programa como,entrada,processamento e saida */
segue o exemplo :


//Biblioteca padrão
#include <stdio.h>
#include <stdlib.h>
#define TAM 3
#define MAX 50 

// Estrutura e seus atributos, assim criando um vetor de objetos! 
typedef struct MediaAluno{    
	char nome[MAX];
	double vetnotas[TAM];
	double media;
}MediaAluno;


//Prototipações das  funções
double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n);
double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m);
void  ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n);


//Essa função recebe as atribuições aplicada pelo usuario e retorna seus valores;
double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n){    
	   int i=0;
	   for(i=0;i<3;i++){
           printf("\nDigite seu nome: ");
           gets(n->nome);
           printf("\nDigite a nota 1: ");                 
		   scanf("\n%lf",&n1->vetnotas[i]);
           printf("\nDigite a nota 2: ");      		  
		   scanf("\n%lf",&n2->vetnotas[i]);	
           printf("\nDigite a nota 3: ");      	   
	       scanf("\n%lf",&n3->vetnotas[i]);
	       return n->nome,n1->vetnotas[i], n2->vetnotas[i], n3->vetnotas[i];
           printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");  
	   }


}

/* Essa função recebe os 3 valores retornado e soma, e no final dividi por 3, e  retorna o valor do resultado */
double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m ){
       int i;       
       for(i=0;i<3;i++){	 
	       m->media = (n1->vetnotas[i] + n2->vetnotas[i] + n3->vetnotas[i])/3;
         
	       if(m->media>=7)
		      return m->media;
	        else
		      return m->media;	  
     }
}

//Essa função recebe o valores retornado com o resultado e mostra  na tela; 
void  ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n){        
      int i;            
	   if(m->media>=7)             
		  printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Aprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media);		  
	    else	    
	   	  printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Reprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media);
	      system("pause");
	   }

//Programa principal, iniciando somente com as  funções das  operações
int main(){
	MediaAluno n,n1,n2,n3,m;    
	IserirDados(&n1,&n2,&n3,&n);
	ProcessaDados(&n1,&n2,&n3,&m);
	ExibirDados(&n1,&n2,&n3,&m,&n);
  
}

 

adicionado 6 minutos depois
Em 15/05/2017 às 02:22, devair1010 disse:

@carssio        seu código está dando erro porque você colocou as variáveis nota1[2] até nota4[2] do tipo float como se fosse vetor, então se remover esses caracteres aqui   [2]   ele funciona, mas ele mostra apenas um aluno de cada vez para mostrar os quatro alunos é preciso fazer algumas modificações e colocar mais algumas bibliotecas como a string e a conio e também a stdlib.  e usaremos o comando atof, para converter os valores que estão como string, para float

veja como seu código ficaria :


#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
char vetor [4][5][20];
int main(void) {
    float nota1;
    float nota2;
    float nota3;
    float nota4;
    float media;
    int i,j;
    char nome[20];
    for(i=0;i<4;i++){
        printf("\nEntre com o nome do aluno: ");
        fflush(stdin);
        gets(vetor[i][0]);
        for(j=1;j<5;j++){
            printf("Informe a %da. nota:",j);
            fflush(stdin);
            gets(vetor[i][j]);
        }
    }
    for(i=0;i<4;i++){
        nota1=atof(vetor[i][1]);nota2=atof(vetor[i][2]);
        nota3=atof(vetor[i][3]);nota4=atof(vetor[i][4]);
        media = (nota1 + nota2 + nota3 + nota4) / 4;
        printf("\nMedia final = %.2f", media);
        if (media >= 6.0)
            printf(" ( aluno %s aprovado ).",vetor[i][0]);
        else if ((media >= 5.0) && (media < 6.0))
            printf(" ( aluno %s em recuperacao ).",vetor[i][0]);
        else
            printf(" ( aluno %s reprovado ).",vetor[i][0]);
    }
    getch();
}

 

#include <stdio.h>
#include <stdlib.h>
#define TAM 3
#define MAX 50 


typedef struct MediaAluno{    
	char nome[MAX];
	double vetnotas[TAM];
	double media;
}MediaAluno;


double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n);
double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m);
void  ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n);


double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n){    
	   int i=0;
	   for(i=0;i<3;i++){
           printf("\nDigite seu nome: ");
           gets(n->nome);
           printf("\nDigite a nota 1: ");                 
		   scanf("\n%lf",&n1->vetnotas[i]);
           printf("\nDigite a nota 2: ");      		  
		   scanf("\n%lf",&n2->vetnotas[i]);	
           printf("\nDigite a nota 3: ");      	   
	       scanf("\n%lf",&n3->vetnotas[i]);
	       return n->nome,n1->vetnotas[i], n2->vetnotas[i], n3->vetnotas[i];
           printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");  
	   }


}

double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m ){
       int i;       
       for(i=0;i<3;i++){	 
	       m->media = (n1->vetnotas[i] + n2->vetnotas[i] + n3->vetnotas[i])/3;
         
	       if(m->media>=7)
		      return m->media;
	        else
		      return m->media;	  
     }
}

void  ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n){        
      int i;            
	   if(m->media>=7)             
		  printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Aprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media);		  
	    else	    
	   	  printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Reprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media);
	      system("pause");
	   }


int main(){
	MediaAluno n,n1,n2,n3,m;    
	IserirDados(&n1,&n2,&n3,&n);
	ProcessaDados(&n1,&n2,&n3,&m);
	ExibirDados(&n1,&n2,&n3,&m,&n);
  
}

 

adicionado 7 minutos depois
#include <stdio.h>
#include <stdlib.h>
#define TAM 3
#define MAX 50 


typedef struct MediaAluno{    
	char nome[MAX];
	double vetnotas[TAM];
	double media;
}MediaAluno;


double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n);
double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m);
void  ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n);


double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n){    
	   int i=0;
	   for(i=0;i<3;i++){
           printf("\nDigite seu nome: ");
           gets(n->nome);
           printf("\nDigite a nota 1: ");                 
		   scanf("\n%lf",&n1->vetnotas[i]);
           printf("\nDigite a nota 2: ");      		  
		   scanf("\n%lf",&n2->vetnotas[i]);	
           printf("\nDigite a nota 3: ");      	   
	       scanf("\n%lf",&n3->vetnotas[i]);
	       return n->nome,n1->vetnotas[i], n2->vetnotas[i], n3->vetnotas[i];
           printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");  
	   }


}

double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m ){
       int i;       
       for(i=0;i<3;i++){	 
	       m->media = (n1->vetnotas[i] + n2->vetnotas[i] + n3->vetnotas[i])/3;
         
	       if(m->media>=7)
		      return m->media;
	        else
		      return m->media;	  
     }
}

void  ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n){        
      int i;            
	   if(m->media>=7)             
		  printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Aprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media);		  
	    else	    
	   	  printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Reprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media);
	      system("pause");
	   }


int main(){
	MediaAluno n,n1,n2,n3,m;    
	IserirDados(&n1,&n2,&n3,&n);
	ProcessaDados(&n1,&n2,&n3,&m);
	ExibirDados(&n1,&n2,&n3,&m,&n);
  
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!