quinta-feira, 3 de maio de 2012

Tarefa 3

Descrição da tarefa:

O mesmo que foi pedido na tarefa 2 mas agora para o desafio "Average of positive and negative numbers".

Devem usar o código que já é fornecido para resolver a tarefa.

A tarefa deve estar concluída às 12h15.

A pontuação a obter será a seguinte:

- 3 pontos por apresentar uma tentativa de resolução
- 10 pontos se a resolução estiver correcta
- 2 pontos de for dada como concluída com sucesso no programr.com
- 5 pontos para o grupo mais rápido, 4 para o segundo, etc.

10 comentários:

  1. - Este programa foi feito para calcular a média de numeros negativos e positivos calculados. (A soma dos mesmos)

    - A variavel "arr" serve para gravar os numeros indicados pelo utilizador, a variavel "avg_pos" serve para fazer a media dos positivos, e a variavel "avg_neg" para a ,edia dos negativos;

    - Caso o numero for negativo, acrescenta o numero aos negativos e soma aos aue ja la estao caso houver algum, e se for positivo, soma os positivos.

    - Apos isso faz a média e apresenta-a.


    Codigo:

    using System;

    class AvgPositiveNegative
    {

    static void Main(string[] args)
    {

    int[] arr = new int[10];
    int NumeroN = 0, NumeroP = 0;

    double avg_pos = 0.0, avg_neg = 0.0, negativos = 0.0, positivos = 0.0;

    for (int i = 0; i < 10; i++)
    {

    Console.WriteLine("Insira o número [" + i + "]:");

    arr[i] = int.Parse(Console.ReadLine());

    }

    //Write your logic here
    for (int i = 0; i < 10; i++)

    {

    if (arr[i] < 0)
    {
    negativos = negativos + arr[i];
    NumeroN++;
    avg_neg = negativos / NumeroN;

    }
    if (arr[i] >= 0)
    {
    positivos = positivos + arr[i];
    NumeroP++;
    avg_pos = positivos / NumeroP;
    }
    }


    //end

    Console.WriteLine("Numeros Positivos:\n" + avg_pos);

    Console.WriteLine("Numeros Negativos:\n" + avg_neg);

    Console.ReadKey();
    }

    }

    ResponderEliminar
    Respostas
    1. A resolução está bem mas o cálculo das médias só deveria ser feito no fim. Tal como está, a média é apresentada por cada elemento do array.

      Eliminar
  2. O programa adiciona 10 numeros á array, em seguida soma os negativos e positivos, e divide a quantidade de positivos/negativos pela soma de positivos/negativos, e ai dá a media.

    using System;

    class AvgPositiveNegative
    {

    static void Main(string[] args)
    {

    int[] arr = new int[10];
    int nPositivos = 0, nNegativos = 0;
    double avg_pos = 0.0, avg_neg = 0.0, positivos = 0.0, negativos = 0.0;

    for (int i = 0; i < 10; i++)
    {

    Console.WriteLine("Insira o número [" + i + "]:");

    arr[i] = int.Parse(Console.ReadLine());

    }

    //Write your logic here

    for (int i = 0; i < arr.Length; i++)
    {
    if (arr[i] > 0)
    {
    nPositivos++;
    positivos = positivos + arr[i];
    }
    else
    {
    nNegativos++;
    negativos = negativos + arr[i];
    }
    }

    avg_neg = negativos / nNegativos;

    avg_pos = positivos / nPositivos;

    //end
    Console.WriteLine("Numeros Positivos:\n" + avg_pos);

    Console.WriteLine("Numeros Negativos:\n" + avg_neg);

    Console.ReadKey();

    }

    }

    ResponderEliminar
    Respostas
    1. Ok, mas as variáveis que guardam o somatório de números positivos e o somatório de números negativos deveriam ser inteiras (tipo int) e não double. Para o cálculo das médias ficar correcto seria necessário aplicar o cast.
      Por exemplo: avg_neg = (double)negativos / nNegativos;
      sendo negativos declarado como int negativos

      Eliminar
  3. Inserimos um "for" que vê a quantidade de números positivos e negativos que a arraylist tem e depois soma positivos com positivos e negativos com negativos e no final a apresentar resultado dividi a soma pela quantidade e tenho a média.

    int[] arr = new int[10];
    double avg_pos=0.0,avg_neg=0.0;
    double somapos=0,somaneg=0;

    for(int i=0;i<10;i++)
    {
    Console.WriteLine("Enter Number ["+i+"]:");
    arr[i]=int.Parse(Console.ReadLine());
    }


    for(int i=0;i<10;i++)
    {
    if(arr[i]>0)
    {
    somapos=somapos+arr[i];
    avg_pos=avg_pos+1;
    }
    if(arr[i]<0)
    {
    somaneg=somaneg+arr[i];
    avg_neg=avg_neg+1;
    }
    }
    Console.WriteLine("positivenumbers:\n"+avg_pos) Console.WriteLine("negativenumbers:\n"+avg_neg);
    Console.WriteLine("Média dos números positivos:{0}",somapos/avg_pos);
    Console.WriteLine("Média dos números negativos:{0}",somaneg/avg_neg);

    Console.Write("Press any key to continue . . . ");
    Console.ReadKey(true);

    ResponderEliminar
    Respostas
    1. O Trabalho 3, Calcula a média de numeros positivos e negativos fazendo a destinção entre positivos e negativos.

      Código:

      double Pox=0, Nex=0;
      double Pos = 0, neg = 0;
      int[] numbers = new int[10];


      for (int i = 0; i < 10; i++)
      {
      Console.WriteLine("Introduza Um Numero [" + i + "]");

      numbers[i] = int.Parse(Console.ReadLine());

      }

      for (int i = 0; i < 10; i++)
      {
      if (numbers[i] > 0)
      {
      Pos = Pos + 1;
      Pox = Pox+numbers[i];

      }
      if (numbers[i] < 0)
      {

      neg = neg + 1;
      Nex = Nex + numbers[i];
      }


      }
      Console.WriteLine("Positivo: {0}", Pos);
      Console.WriteLine("Negativo: {0}", neg);
      Console.WriteLine("---------------------");
      Console.WriteLine("Média dos Positivos é: {0}",Pox/Pos);

      Console.WriteLine("Média dos Negativos é: {0}",Nex/neg);
      Console.ReadKey();

      Eliminar
    2. Ok, mas as variáveis avg_pos e avg_neg deveriam ser usadas só para cálculo das médias. Estão a ser usadas também para contar o número de valores positivos e o número de valores negativos.

      Eliminar
    3. Resposta a União TGP:
      Ok, mas as variáveis Pox, Nex, Pos e neg deveriam ser inteiras e não double. Para calcular a média deveria aplicar um cast. Ver comentário ao grupo L.A.M.P.

      Eliminar
  4. Adiciona-se 10 números arrays,soma os positivos e os negativos separadamente e depois faz-se a média dos positivos e negativos.

    class AvgPositiveNegative
    {
    static void Main(string[] args)
    {

    int[] arr = new int[10];
    int p = 0, n = 0;
    double avg_pos = 0.0, avg_neg = 0.0,p1 = 0,n1 = 0;

    for (int i = 0; i < 10; i++)
    {
    Console.WriteLine("Enter Number [" + i + "]:");
    arr[i] = int.Parse(Console.ReadLine());
    }

    //Write your logic here

    for (int i = 0; i < arr.Length; i++)
    {
    if (arr[i] > 0)
    {
    p++;
    p1 = p1 + arr[i];
    }
    else
    {
    n++;
    n1 = n1 + arr[i];
    }
    }

    avg_neg = n1 / n;

    avg_pos = p1 / p;

    //end
    Console.WriteLine("Numeros Positivos:\n" + avg_pos);

    Console.WriteLine("Numeros Negativos:\n" + avg_neg);

    Console.ReadKey();





    //end
    Console.WriteLine("positivenumbers:\n" + avg_pos);
    Console.WriteLine("negativenumbers:\n" + avg_neg);
    Console.ReadKey();
    }
    }
    Fim da conversa de chat

    ResponderEliminar