Ir ao conteúdo

Posts recomendados

Postado

Boa tarde.

estou fazendo o seguinte exercício:

Faça um programa que leia os dados de 10 alunos (Nome, matricula, Media Final), armazenando em um vetor. Uma vez lidos os dados, divida estes dados em 2 novos vetores, o vetor dos aprovados e o vetor dos reprovados, considerando a media mınima para a aprovacao como sendo 5.0. Exibir na tela os dados do vetor de aprovados, seguido dos dados do vetor de reprovados.

Desenvolvi o script abaixo, porque esta dando errado?

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

void main (void){
    struct classe{ /*Cria tipo struct*/
        char nome[30];
        char matricula[8];
        float media_final;
    };

    struct classe alunos[10]; /*Cria variaveis do tipo strutc para calculos*/
    struct classe alunos_rep[10];
    struct classe alunos_aprov[10];

    for(int x=0;x<10;x++){ /*Coloca os campos que vão ser impressos como em branco para facilitar impressao*/
        strcpy(alunos_rep[x].nome," ");
        strcpy(alunos_aprov[x].nome," ");
    }

    for(int x=0;x<10;x++){  /*Entrada de dados*/
        printf("Digite o nome: ");
        scanf("%s",&alunos[x].nome);
        fflush(stdin);
        printf("Digite o numero da matricula: ");
        scanf("%s",&alunos[x].matricula);
        fflush(stdin);
        printf("Digite a media final: ");
        scanf("%f",&alunos[x].media_final);
        fflush(stdin);
        printf("\n");
    }
    
    int cont_aprov=0; /*Variaveis para percorrer o vetor a ser impresso */
    int cont_rep=0;
    
    for (int x=0;x<10;x++){
        if(alunos[x].media_final<5.0){/*ONDE ACHO QUE ESTA O ERRO comparações para saber para qual vetor o registro atual vai*/
            alunos_rep[cont_rep]=alunos[x];
            cont_rep++;
        }
        else{
            alunos_aprov[cont_aprov]=alunos[x];
            cont_aprov++;
        }
    }

    for(int x=0;x<10;x++){ /*printa o que estiver no vetor aprovado e reprovado*/
        if(alunos_aprov[x].nome!=" "){
            printf("[Aprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos[x].nome,alunos[x].matricula,alunos[x].media_final);
        }
    }

    for(int x=0;x<10;x++){
        if(alunos_rep[x].nome!=" "){
            printf("[Reprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos[x].nome,alunos[x].matricula,alunos[x].media_final);
        }
    }
}

 

Postado

OS dois vetores que criei esta imprimindo tudo novamente. Acredito que o problema seja nessa linha

5 minutos atrás, Jessé P. de Melo disse:

if(alunos[x].media_final<5.0)

Resumindo alunos_rep alunos_aprov virou uma copia de alunos.

adicionado 10 minutos depois

Perai o erro ta aqui. Estou ocupado agr assim que der arrumo. E falo

16 minutos atrás, Jessé P. de Melo disse:

printf("[Aprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos[x].nome,alunos[x].matricula,alunos[x].media_final);

 

16 minutos atrás, Jessé P. de Melo disse:

printf("[Reprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos[x].nome,alunos[x].matricula,alunos[x].media_final);

 

adicionado 28 minutos depois

Resolvi era aquilo mesmo. Desculpe pelo inconveniente.

Segue: 

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

void main (void){
    struct classe{ /*Cria tipo struct*/
        char nome[30];
        char matricula[8];
        float media_final;
    };

    struct classe alunos[10]; /*Cria variaveis do tipo strutc para calculos*/
    struct classe alunos_rep[10];
    struct classe alunos_aprov[10];

    for(int x=0;x<10;x++){ /*Coloca os campos que vão ser impressos como em branco para facilitar impressao*/
        alunos_rep[x].nome[0]=' ';
        alunos_aprov[x].nome[0]=' ';
    }

    for(int x=0;x<10;x++){  /*Entrada de dados*/
        printf("Digite o nome: ");
        scanf("%s",&alunos[x].nome);
        fflush(stdin);
        printf("Digite o numero da matricula: ");
        scanf("%s",&alunos[x].matricula);
        fflush(stdin);
        printf("Digite a media final: ");
        scanf("%f",&alunos[x].media_final);
        fflush(stdin);
        printf("\n");
    }

    int cont_aprov=0; /*Variaveis para percorrer o vetor a ser impresso */
    int cont_rep=0;

    for (int x=0;x<10;x++){
        if(alunos[x].media_final<(5.0)){/*ONDE ACHO QUE ESTA O ERRO comparações para saber para qual vetor o registro atual vai*/
            alunos_rep[cont_rep]=alunos[x];
            cont_rep++;
        }
        if(alunos[x].media_final>(5.0)){
            alunos_aprov[cont_aprov]=alunos[x];
            cont_aprov++;
        }
    }

    for(int x=0;x<10;x++){ /*printa o que estiver no vetor aprovado e reprovado*/
        if(alunos_aprov[x].nome[0]!=' '){
            printf("[Aprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos_aprov[x].nome,alunos_aprov[x].matricula,alunos_aprov[x].media_final);
        }
    }

    for(int x=0;x<10;x++){
        if(alunos_rep[x].nome[0]!=' '){
            printf("[Reprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos_rep[x].nome,alunos_rep[x].matricula,alunos_rep[x].media_final);
        }
    }
}

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!