Jump to content

Media, minimo, maximo em C


lordqwerty
 Share

Recommended Posts

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  ?

Link to comment
Share on other 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?

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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.

Link to comment
Share on other 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.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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  😄

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.

Não respondo a dúvidas por mensagem.

Link to comment
Share on other 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();
}

Para perguntas idiotas, respostas estúpidas!

Link to comment
Share on other 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.

Não respondo a dúvidas por mensagem.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.