• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lordqwerty

Media, minimo, maximo em C

9 mensagens neste tópico

Ola. Sou um grande iniciante nesta programaçao e precisava de uma ajuda. O enunciado do exercicio é o seguinte: Escreva um programa que leia um sequencia de numeros inteiros ate entrar 0 ou atingir um valor maximo de valores lidos, a especificar. Nesse momento o programa deve escrever a media, o maximo e o minimo dos numeros lidos.

Este programa deve ser feito com um ciclo "while"... agradecia toda a vossa ajuda.

Cumps  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

OK, o enunciado está aí. Agora tens dúvidas em que parte? Já tentaste fazer algum algoritmo (sem ser necessariamente em C), ou alguma ideia para resolver o problema?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim claro! O código que eu fiz ate agora é o seguinte:

#include <stdio.h>
#include <conio.h>

main ()
{
     int lim, max, min, i, soma, num;
     float media;
     soma=0;
     media=0;
     i=0;
     printf("Limite: ");
     scanf("%d\n", &lim);
     
     while ((lim>=0)||(num==0))
           {
           printf("Introduza o %d numero: ", ++i);
           scanf("%d\n", &num);
           
           soma=soma+num;           
           printf("Soma: %d", soma);
           media=(float)soma/i;
           i++;
           lim--;
           }
     
     printf("Media: \n", media);
     getch();
}

Ainda nao fiz o maximo nem o minimo porque ensinaram.me a fazer "por partes"... e a parte da media ainda nao funciona.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apenas tens de calcular a média aritmética no fim de toda a introdução de dados, isto é, fora do ciclo.

O máximo e mínimo, podes considerar usar o primeiro valor da sequência, e ir actualizando se outro número for maior que o máximo, ou menor que o mínimo actual, respectivamente. Estas interacções já têm de ser feitas dentro do teu ciclo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Apenas tens de calcular a média aritmética no fim de toda a introdução de dados, isto é, fora do ciclo.

Mas eu nao posso também ir actualizando a media dentro do ciclo? Porque a minha prof falou que dava, mas eu nao percebi muito bem.

Cumps  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu nao posso também ir actualizando a media dentro do ciclo? Porque a minha prof falou que dava, mas eu nao percebi muito bem.

Cumps  :D

Podes evidentemente. O que é a média de um conjunto de valores? É o somatório desses valores a dividir pelo número de valores. Então basta-te ir guardando o somatório dos valores e o número de valores lidos e no fim dividir esses valores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sou de postar aqui muito codigo pronto, mas acho que o exemplo que deste é grande para o que queres de resultado.

aqui tens o teu codigo pronto e ainda se pode reduzir mais qualquer coisa.

#include <stdio.h>
#include <conio.h>

main ()
{
     int lim, max, min, i, soma, num, inserido, totalinseridos;
     float media;
     soma=0;
     media=0;
     i=0;
     max = 0;
     printf("Limite: ");
     scanf("%d", &lim);
     min = 99999999; // inicias a variavel num numero demasiado alto para que o
                    // utilizador insira um numero sempre mais baixo.
                    // Acho uma solução errada, mas para iniciantes é optima.
   
   
   for (i=0; i<lim ; i++)
   {
       printf ("Insira um numero: \n");
       scanf ("%d", &inserido);
       if ( inserido != 0)
       {
       soma = soma + inserido; // para fazer a soma total
       totalinseridos++;
       
         if (inserido >= max)
          {
            max = inserido;  // para se saber o valor máximo         
          }
          if ( inserido <= min)
          {
             min = inserido;
          }
      media = (soma / totalinseridos); //Para se saber a média
      }
      else break;
   }
     printf ("Soma: %d\n", soma); // Pode ser removido
     printf("Media: %f\n", media);
     printf("Valor Maximo: %d\n", max);
     printf ("Minimo Inserido: %d", min);
     getch();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    min = 99999999; // inicias a variavel num numero demasiado alto para que o

                    // utilizador insira um numero sempre mais baixo.

                    // Acho uma solução errada, mas para iniciantes é optima. 

Pois, só há mesmo uma solução melhor que essa para iniciantes, a correcta: Inicializar o valor mínimo e máximo com o primeiro valor que o utilizador inserir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigados pela ajuda. Ja funciona bem o programa. Fiquei esclarecido.  ;) Espero um dia destes poder discutir mais profundamente sobre esta linguagem.

Cumps,  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora