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.
- Este programa foi feito para calcular a média de numeros negativos e positivos calculados. (A soma dos mesmos)
ResponderEliminar- 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();
}
}
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.
EliminarO 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.
ResponderEliminarusing 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();
}
}
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.
EliminarPor exemplo: avg_neg = (double)negativos / nNegativos;
sendo negativos declarado como int negativos
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.
ResponderEliminarint[] 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);
O Trabalho 3, Calcula a média de numeros positivos e negativos fazendo a destinção entre positivos e negativos.
EliminarCó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();
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.
EliminarResposta a União TGP:
EliminarOk, 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.
Adiciona-se 10 números arrays,soma os positivos e os negativos separadamente e depois faz-se a média dos positivos e negativos.
ResponderEliminarclass 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
Ok. Ver o comentário feito ao grupo L.A.M.P.
Eliminar