Ir ao conteúdo

Posts recomendados

Postado

Oi. O exercicio é o seguinte: Pretende-se recolher dados de alunos indicando por cada aluno, o número e a sua nota a uma dada cadeira. A recolha de informação apenas deve terminar quando o número de aluno for igual a 0 (zero). No fim, deve apresentar a informação do aluno com a pior e com a melhor nota, bem como a média de todos os alunos. Elabore o respetivo algoritmo.

 

e eu tenho isto.

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

int main()
{
    int numero, nota, maior, menor;
    do{
        printf ("Introduza o seu numero de aluno. Para finalizar introduza 0\n");
        scanf ("%d",&numero);
        printf ("Introduza a sua nota Na cadeira\n");
        scanf ("%d", &nota);
        maior=nota;
        menor=nota;
        if (nota>maior)
        {
            maior=nota;
        }

        if (nota<menor)
        {
            menor=nota;
        }

    }while (numero != 0);

    printf ("A melhor nota e %d\n", &maior);
    printf ("A pior nota e %d\n", &menor);
    return 0;
}

O problema é que quando ponho o numero 0 ele continua pedindo nota da cadeira e so depois que finaliza. Ja tentei por o while sem o do e continua sem dar. Alem de que ele não consegue calcular a melhor nota nem a pior, da-me sempre 0

Postado
1 hora atrás, Manu Duarte disse:

Ja tentei por o while sem o do e continua sem dar.

Isso realmente não existe em nenhum livro, apenas na cabeça do programador que determina o melhor das duas  estrategias para o problema. Outra coisa, é só olhar onde fica o  scanf ("%d",&numero); o que vem antes, principalmente o que vem depois e do que depende.

 

 

 

  • Confuso 1
Postado

@Manu Duarte

 

Eu perguntaria ao usuario quantos alunos serão lidos a nota. E resolveria com um for, pois para mim o programa vai parar quando não tiver mais aluno para ler a nota, ou seja, zero alunos.

 

E guardaria as notas num vetor, para assim eu ter como comparar a melhor e pior nota. E depois fazer a media.

(MAS DA PARA RESOLVER SEM SER ASSIM)

 

Um erro que tambem apresenta no seu programa e na hora de mostrar a maior e menor nota. Nao se utiliza o operador &, ao menos que queira ver o endereco de memoria, mas ainda teria que usar o formatador %p.

 

 

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

int main()
{
    int numero=0, nota=0, maior=0, menor=0, i=0;  // INICIALIZANDO COM ZERO
    do{
        printf ("Introduza o seu numero de aluno. Para finalizar introduza 0\n");
        scanf ("%d",&numero);
        if(numero==0)  // AQUI O PROGRAMA IRA PARA DE EXECUTAR CASO O NUMERO DIGITADO SEJA ZERO.
        break;
        printf ("Introduza a sua nota Na cadeira\n");
        scanf ("%d", &nota);
        if(i==0){       // AQUI FOI PARA SOMENTE NA PRIMEIRA VEZ O PROGRAMA ATRIBUIR O VALOR DA NOTA AS VARIAVEIS, OU TODA VEZ QUE 
          maior=nota;    // QUE FOSSE LER ELE IA ATRIBUIR
          menor=nota;
        }
        i++;
      
        if (nota>maior)
        {
            maior=nota;
        }

        if (nota<menor)
        {
            menor=nota;
        }

    }while (numero != 0);

    printf ("A melhor nota e %d\n", maior);  // NAO SE UTILIZA O '&' PARA MOSTRAR O CONTEUDO DA VARIAVEL
    printf ("A pior nota e %d\n", menor);
    return 0;
}

 

COMENTEI O CÓDIGO, ESPERO QUE CONSIGA ENTENDER E CONTINUE ESTUDANDO.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!