Ir ao conteúdo

Posts recomendados

Postado

Então gente, eu tô tendo dificuldade com esse código, como posso pra fazer ele verificar as notas e depois passar os dados da struct pro outro vetor. Eu tentei fazer de 2 jeitos. Nesse primeiro ele nem compila, no segundo ele compila mas quando escolho a opção pra dividir em aprovados ou reprovados o console trava. 

/*Faça um programa que leia os dados de 10 alunos (nome, matricula, média
final), armazenados num vetor. Uma vez lido os dados, divida estes dados em 2
novos vetores, o vetor dos aprovados e o vetor dos reprovados. Considere a
média mínima para a aprovação como sendo 6.0. Exibir na tela os dados do
vetor de aprovados, seguido dos dados do vetor de reprovados. */
#include <stdio.h>
#include <string.h>
#define tf 10


struct medialunos {
    int matricula;
    char nome[20];
    double mediafinal; 
};

void leitura (struct medialunos vet[tf], int vet1[tf], int vet2[tf]){
    int i, j; 
    for (i=0;i<tf;i++){
        for (j=0; j<tf;j++){
            printf ("\nEntre com a matricula: ");
            scanf ("%d", &vet[i].matricula);
            
            printf ("\nEntre com o nome: ");
            fflush (stdin);
            fgets (vet[i].nome,20,stdin);
            
            printf ("\nEntre com a media final: ");
            scanf ("%lf", &vet[i].mediafinal);
            
            printf ("\n_____________________________________________\n");
            
                if (vet[i].mediafinal >= 6){
                vet1[j] = vet[i];
                vet++;
        }
                else {
                vet2[j] = vet[i];
                vet2++;
            }
            }
        }
    }


void exibevet (struct medialunos vetor[tf]){
    int i;
    for (i=0;i<tf;i++){
        printf ("\nMatricula do aluno: %d", vetor[i].matricula);
        printf ("\nNome do aluno: %s", vetor[i].nome);
        printf ("\nMedia do aluno: %.2lf", vetor[i].mediafinal);
        printf ("\n___________________________________________________\n");
    }
}

void aprovados (struct medialunos vt[tf], int vtaprov[tf]){
    int i;
    for (i=0;i<tf;i++){
        printf ("\nAprovado!");
        printf ("\nMatricula do aluno: %d", vtaprov[i].matricula);
        printf ("\nNome do aluno: %s", vtaprov[i].nome);
        printf ("\nMedia do aluno: %.2lf", vtaprov[i].mediafinal);
    }    
}

void reprovados (struct medialunos vt[tf], int vetreprov[tf]){
    int i;
    for (i=0;i<tf;i++){
        printf ("Reprovado!");
        printf ("\nMatricula do aluno: %d", vetreprov[i].matricula);
        printf ("\nNome do aluno: %s", vetreprov[i].nome);
        printf ("\nMedia do aluno: %.2lf", vetreprov[i].mediafinal);
    }
}

int main (){
    struct medialunos vt[tf];
    int vtaprov[tf], vtreprov[tf];
    int opcao = 0;
    
    while (opcao != 5){
        
        printf ("\n\n################ MENU ##########################");
        printf ("\n1 - Leitura dos alunos");
        printf ("\n2 - Exibir todos os alunos");
        printf ("\n3 - Exibir Vetor Aprovados");
        printf ("\n4 - Exibir Vetor Reprovados"); 
        printf ("\n5 - Sair");
        printf ("\n\nQual a sua opcao? ");
        scanf ("%d", &opcao);
        
        switch (opcao){
            case 1: leitura (vt, vtaprov, vtreprov);
                    break;
            
            case 2: exibevet (vt);
                    break; 
                    
            case 3: aprovados (vt, vtaprov);
                    break;
                    
            case 4: reprovados (vt, vtreprov);
                    break; 
            
            default: 
                    printf ("\nOpcao invalida!");
        }
        
    }
    
}

Agora com os ifs em duas funções 

 

/*Faça um programa que leia os dados de 10 alunos (nome, matricula, média
final), armazenados num vetor. Uma vez lido os dados, divida estes dados em 2
novos vetores, o vetor dos aprovados e o vetor dos reprovados. Considere a
média mínima para a aprovação como sendo 6.0. Exibir na tela os dados do
vetor de aprovados, seguido dos dados do vetor de reprovados. */
#include <stdio.h>
#include <string.h>
#define tf 3


struct medialunos {
    int matricula;
    char nome[20];
    double mediafinal; 
};

void leitura (struct medialunos vet[tf], struct medialunos aprov[tf], struct medialunos reprov[tf]){
    int i;
    for (i=0, aprov =0, reprov = 0;i<tf;i++){
            printf ("\nEntre com a matricula: ");
            scanf ("%d", &vet.matricula);
            
            printf ("\nEntre com o nome: ");
            fflush (stdin);
            fgets (vet.nome,20,stdin);
            
            printf ("\nEntre com a media final: ");
            scanf ("%lf", &vet.mediafinal);
            
            printf ("\n_____________________________________________\n");
            
    }
}

void exibevet (struct medialunos vetor[tf]){
    int i;
    for (i=0;i<tf;i++){
        printf ("\nMatricula do aluno: %d", vetor.matricula);
        printf ("\nNome do aluno: %s", vetor.nome);
        printf ("\nMedia do aluno: %.2lf", vetor.mediafinal);
        printf ("\n___________________________________________________\n");
    }
}

void aprovados (struct medialunos vt[tf], struct medialunos aprov[tf], struct medialunos reprov[tf] ){
    int i;
    for (i=0, aprov = 0, reprov = 0;i<tf;i++){
                if (vt.mediafinal >= 6) {
            vt = aprov;
            aprov++;
                
   }
   printf ("\nAprovado!");
                printf ("\nMatricula do aluno: %d", aprov.matricula);
                printf ("\nNome do aluno: %s", aprov.nome);
        printf ("\nMedia do aluno: %.2lf", aprov.mediafinal);
        
        
        
    }    
}

void reprovados (struct medialunos vt[tf], struct medialunos reprov[tf]){
    int i;
    for (i=0;i<tf;i++){
        if (vt.mediafinal < 6) {
            vt = reprov;
            reprov++;
        }
        printf ("Reprovado!");
        printf ("\nMatricula do aluno: %d", reprov.matricula);
        printf ("\nNome do aluno: %s", reprov.nome);
        printf ("\nMedia do aluno: %.2lf", reprov.mediafinal);
    }
}

int main (){
    struct medialunos vt[tf];
    struct medialunos vtaprov[tf], vtreprov[tf];
    int opcao = 0;
    
    while (opcao != 5){
        
        printf ("\n\n################ MENU ##########################");
        printf ("\n1 - Leitura dos alunos");
        printf ("\n2 - Exibir todos os alunos");
        printf ("\n3 - Exibir Vetor Aprovados");
        printf ("\n4 - Exibir Vetor Reprovados"); 
        printf ("\n5 - Sair");
        printf ("\n\nQual a sua opcao? ");
        scanf ("%d", &opcao);
        
        switch (opcao){
            case 1: leitura (vt, vtaprov, vtreprov);
                    break;
            
            case 2: exibevet (vt);
                    break; 
                    
            case 3: aprovados (vt, vtaprov, vtreprov);
                    break;
            
            default: 
                    printf ("\nOpcao invalida!");
        }
        
    }
    
}

 

Postado

@KXSY Obrigada! Vou dar uma estudada, tem muita dica boa aí. Vou tentar começar o typedef também. 

É que eu tô estudando pra prova e a professora exige que use função e menu. 

Ok! 

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!