Ir ao conteúdo
  • Cadastre-se

C dificuldade em completar exercício em C


Posts recomendados

Leia o cadastro de 5 alunos que contenha as informações: nome, idade, turma, valor de quatro notas (utilize um vetor para armazenar as notas) e a média do aluno (média baseada no valor das quatro notas.

 a. Defina um registro/struct para armazenar as informações sobre o aluno.

b. Obtenha as informações sobre os alunos através de entradas fornecidas pelo usuário.

c. Calcule a média de cada um aluno com base no vetor com as quatro notas.

d. Escreva os dados dos alunos “aprovados” (média >= 7.0).

e. Escreva os dados dos alunos em “exame” (3.0 <= média < 7.0).

f. Escreva os dados dos alunos “reprovados” (média < 3.0).

 

Como faço para calcular essa media(No meu código)?

#include<stdio.h>

typedef struct aluno{
	char nome[30];
	char idade[3];
	char turma[10];
	int notas[4];
}informações;

main(){
	
	informações Aluno[5];
	float media [5];
	int i,k,t,j=0;
	
	for(i=0;i<5;i++){
		
		printf("Insira o nome do aluno:");
		scanf("%[^\n]", Aluno[i].nome);
		
		printf("\n Insira a idade do aluno:");
		scanf("%d", &Aluno[i].idade);
		
		printf("\n Insira a turma do aluno:");
		scanf("%f", &Aluno[i].turma);
		
		for(k=0;k<4;k++){
			j++;
			printf("\n Insira a nota %d:", j);
			scanf("%f", &Aluno[i].notas[k]);
			
		setbuf(stdin, NULL);
		getchar();
		}
		
		setbuf(stdin, NULL);
		getchar();
	}

}

 

Link para o comentário
Compartilhar em outros sites

26 minutos atrás, Helio Junnior Sartor Dalmolin disse:

Como faço para calcular essa media(No meu código)?

Esse seu algorítimo funciona?

 

27 minutos atrás, Helio Junnior Sartor Dalmolin disse:

c. Calcule a média de cada um aluno com base no vetor com as quatro notas.

Pelo o que eu aprendi na 3° serie, você soma todas as notas e divide pela quantidade de notas.

https://mundoeducacao.uol.com.br/matematica/media-aritmetica.htm

Em C seria assim

	media = (aluno[0].nota[0]+aluno[0].nota[1]+aluno[0].nota[2]+aluno[0].nota[3])/4;

Mas é claro que seria melhor fazer isso com um laço for por exemplo.

Link para o comentário
Compartilhar em outros sites

44 minutos atrás, kgin disse:

Esse seu algorítimo funciona?

 

Pelo o que eu aprendi na 3° serie, você soma todas as notas e divide pela quantidade de notas.

https://mundoeducacao.uol.com.br/matematica/media-aritmetica.htm

Em C seria assim


	media = (aluno[0].nota[0]+aluno[0].nota[1]+aluno[0].nota[2]+aluno[0].nota[3])/4;

Mas é claro que seria melhor fazer isso com um laço for por exemplo.

Vi agora meu código não esta funcionando mesmo.

	informações Aluno[5];
	float media [5];
	int i,k,t,j=0;
	
	for(i=0;i<5;i++){
		
		printf("Insira o nome do aluno:");
		scanf("%[^\n]", Aluno[i].nome);
		
		printf("\n Insira a idade do aluno:");
		scanf("%d", &Aluno[i].idade);
		
		printf("\n Insira a turma do aluno:");
		scanf("%f", &Aluno[i].turma);
		
		for(k=0;k<4;k++){
			j++;
			printf("\n Insira a nota %d:", j);
			scanf("%f", &Aluno[i].notas[k]);
		}
		
	}

}

fiz ele assim e deu erro nos for ai fica assim quando executo:

737375702_2021-06-16(1).thumb.png.d17d6c23ebfb185d63d0c59a9e0cfaa7.png

Como posso arrumar isso?

Link para o comentário
Compartilhar em outros sites

14 minutos atrás, Helio Junnior Sartor Dalmolin disse:

Como posso arrumar isso?

O primeiro passo é desistir do DevC++, recomendo usar o codeblocks ou esse site aqui https://replit.com/

 

Em C quando você pede alguma entrada para o scanf ele deixa a tecla enter (carryReturn) no buffer do teclado, para resolver temporariamente isso você pode colocar o caractere de controle para ignorar o enter.

	scanf("%d%*c");

Com isso ele só vai pegar o numero decimal (com o %d) e descartar a próxima tecla (com o %*c).

 

para pegar strings você tem que usar fgets()

 

Exemplo de como pegar a entrada do teclado

#include <stdio.h>
#include <string.h>

#define T_NOME 60
#define T_TURMA 5
#define Q_NOTAS 4
#define Q_ALUNOS 5

struct informacao_aluno
{
    char nome[T_NOME];
    int idade;
    char turma[T_TURMA];
    float notas[Q_NOTAS];
};

int main(void)
{
    int contador1, contador2;
    struct informacao_aluno alunos[Q_ALUNOS];
    /* Pega as informações dos alunos */
    for (contador1 = 0; contador1 < Q_ALUNOS; contador1++) {
        puts("Digite o nome do aluno");
        fgets(alunos[contador1].nome, T_NOME, stdin);

        puts("Digite a idade do aluno");
        scanf("%d%*c", &alunos[contador1].idade);

        puts("Digite a turma do aluno");
        fgets(alunos[contador1].turma, T_TURMA, stdin);

        printf("Digite as %d notas do aluno\n", Q_NOTAS);
        for (contador2 = 0; contador2 < Q_NOTAS; contador2++) {
            printf("Nota[%d]:", contador2+1);
            scanf("%f%*c", &alunos[contador1].notas[contador2]);
        }
    }

    /* Mostra as informações de cada aluno */
    for (contador1 = 0; contador1 < Q_ALUNOS; contador1++) {
        printf("Nome:%s", alunos[contador1].nome);
        printf("Idade:%d\n", alunos[contador1].idade);
        printf("Turma:%s", alunos[contador1].turma);
        for (contador2 = 0; contador2 < Q_NOTAS; contador2++) {
            printf("Nota[%d]:%.2f\n", contador2+1, alunos[contador1].notas[contador2]);
        }
        putchar('\n');      /* Salta uma linha */
    }
    
    getchar();
    return(0);
}

 

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