Ir para conteúdo
Fórum Script Brasil
  • 0

Maior valor


Rê Carvalho

Pergunta

Gente, é o seguinte, estou precisando fazer um programa que tenha uma estrutura e funções pra imprimir o maior e menor valor, sabendo que há alunos com a mesma nota. A parte de imprimir, beleza. Mas eu não tou conseguindo a parte dos alunos com a mesma nota, tipo, eu entro com o João, nota 5, Maria, nota 5 e José 7. Quando eu for imprimir, :rolleyes: tenho que imprimir 'Maior nota: José 7 e Menor nota: João 5, Maria 5. Já fiz o código, só falta essa parte. Agradeço previamente...

Olha aí está o código do que eu já fiz...

#include<stdio.h>
#include<stdlib.h>
struct Ealuno{
    char nome[50];
    float nota;
};
struct Ealuno maior(struct Ealuno *p,int n);
struct Ealuno menor(struct Ealuno *p,int n);
int main(){
    struct Ealuno *p;
    struct Ealuno m;
    struct Ealuno o;
    int i,n;    
    printf("Entre com a quantidade de alunos:");
    scanf("%d",&n);
    p=(struct Ealuno *)malloc(n*sizeof(struct Ealuno));
        if(p==NULL){
                printf("Erro- Memória Insuficiente.\n\n");
                exit(1);
        }
    getchar();
    for(i=0;i<n;i++){
        printf("Entre com o nome do aluno %d: ",i+1);
        gets(p[i].nome);
        printf("Entre com a nota do aluno %d: ",i+1);
        scanf("%f",&p[i].nota);
        getchar();
    }
    m=maior(p,n);
    o=menor(p,n);
    
    printf("\n\nMaior nota.\n\n");
    puts(m.nome);
    printf("%.2f\n\n",m.nota);
    printf("Menor nota.\n\n");
    puts(o.nome);
    printf("%.2f\n\n",o.nota);
    
    free(p);
    system("pause");
    return 0;
}
struct Ealuno maior(struct Ealuno *p,int n){
    int i;
    struct Ealuno aux;
    aux=p[0];
    for(i=1;i<n;i++){
        if(p[i].nota>aux.nota)
            aux=p[i];
       else
        aux=aux;
                 }
                 return aux;
} 
struct Ealuno menor(struct Ealuno *p,int n){
    int i,j;
    struct Ealuno aux;

    aux=p[0];
    for(i=1;i<n;i++){
        if(p[i].nota<aux.nota)
            aux=p[i];
                }
    return aux;
}

Editado por Durub
Adicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Edit: Hum... sim... mas qual é a dúvida? // Opa antes de você editar só tinha uma frase, aí eu não entendi.. hehehe

Rê Carvalho,

Coloca aí o pedaço do código que você tem dúvida, aí fica mais fácil a gente te ajudar, pois poderemos ver aonde está o problema.

Editado por webpantoja
Link para o comentário
Compartilhar em outros sites

  • 0

Tens de correr o vector da estrutura e ires comparado cada campo com o anterior...

tens algo deste tipo;

/*#include<stdio.h>
# define N 3
// ler um vector(temperaturas) de tamanho 12 e escrever.Calcular o maximo e o minimo.

int vec ()
{
    
}
int media(int s)
{
    return s/N;
}
int main()
{
    int temp[N], i, max, min, soma=0;
    for (i=0; i<N; i++)    
    {
        printf("Insira o valor da temperatura: \n");
        scanf("%d",&temp[i]);
        printf("já registou: %d de %d\n",i+1,N);
        soma=temp[i]+soma;
    }
    media(soma);
    max=temp[0];
    min=temp[0];
    for (i=0; i<N; i++)
        {
            if (temp[i]<min)
            {
                min=temp[i];
            }
            else 
                min=min;

            if (temp[i]>max)
            {
                max=temp[i];
            }
            else
                max=max;
    }
    
    system("cls");
    for (i=0; i<N; i=i+1)
    {
        printf("Temperatura %d: %d\n",i+1,temp[i]);
    }
    printf("\n\nA temperatura minina é: %d\n",min);
    printf("A temperatura maxima é: %d\n",max);
    printf("A media das temperaturas é: %d\n",media(soma));
    return 0;
}

Este é para temperaturas

Link para o comentário
Compartilhar em outros sites

  • 0

Agora ficou melhor!

Cara eu faria uma lista de struturas... assim fica mais fácil manipular os dados... pelo menos na minha opinião :)

Eu fiz um exemplo simples aí com o que você colocou, acho que ele vai te ajudar em alguma coisa.

#include<iostream>

struct aluno
{
        char nome[50];
        int nota;
};

int main()
{
        int quant = 0;
        int maiorNota = 0; //nota maxima 10 e no exemplo so pode numero inteiro... 
        int menorNota = 11;

        printf("Quantidade de alunos: " );
        scanf("%d", &quant );

        struct aluno alunoVet[quant];

        getchar();
        for( int cont = 0; cont < quant; cont++ )
        {
                printf("Entre com o nome do aluno %d: ", cont+1);
                gets( alunoVet[cont].nome );

                printf("Nota: " );
                scanf("%d", &alunoVet[cont].nota);

                getchar();
                if( alunoVet[cont].nota > maiorNota )
                {
                        maiorNota = alunoVet[cont].nota;
                }
                if( alunoVet[cont].nota < menorNota )
                {
                        menorNota = alunoVet[cont].nota;
                }
        }

        printf("\n\n\nMaior(es) nota(s):\n");
        for( int cont = 0; cont < quant; cont++ )
        {
                if( maiorNota == alunoVet[cont].nota )
                {
                        printf("Aluno: %s  nota: %d \n", alunoVet[cont].nome, alunoVet[cont].nota );
                }
        }

        printf("\n\n\nMenor(es) nota(s)\n");
        for( int cont = 0; cont < quant; cont++ )
        {
                if( menorNota == alunoVet[cont].nota )
                {
                        printf("Aluno: %s  nota: %d \n", alunoVet[cont].nome, alunoVet[cont].nota );
                }
        }


        return 0;
}

Se tiver algo errado ai pode falar.. tem tempo que não mexo com C... trabalho mais com o C++ e as vezes posso confundir algo...

Espero ter te ajudado nessa,

WebPantoja

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...