Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado

@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();
}

 

Postado

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
Postado

@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
  • 1 ano depois...
Postado
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

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...