średnia uogólniona

0

Cześć wszystkim
Mam problem z średnią. Wynik jest znacznie zawyżony. Gdy pętla for idzie pierwszy raz to wszystko jest ok, ale gdy zaczyna kolejny raz przechodzić przez pętle to wynik jest przeogromny.

double potega, liczba,liczbab = 0, liczby = 0;
Console.Write("\n\tPodaj stopień potegowania: ");
potega = Int32.Parse(Console.ReadLine());Console.Write("\n\tIle liczb chcesz zawrzeć w średniej: ");
liczba = Int32.Parse(Console.ReadLine());

for (int i = 0; i < liczba; i++)
{
Console.Write("\n\tPodaj liczbę: ");
liczbab += double.Parse(Console.ReadLine());
liczby += Math.Pow(liczbab, potega);
}
double licznikmianownik = liczby / liczba;
double sredniageometryczna = Math.Pow(licznikmianownik, 1.0 / potega);
Console.WriteLine("Wynik średniej potęgowej: " + liczby);
Console.ReadKey();
0

poprawione zmienne

double stopienpotegowania, iloscliczb, liczby = 0, liczbadopotegi = 0;

Console.Write("\n\tPodaj stopień potegowania: ");
 stopienpotegowania = Int32.Parse(Console.ReadLine());
Console.Write("\n\tIle liczb chcesz zawrzeć w średniej: ");
iloscliczb = Int32.Parse(Console.ReadLine());

 for (int i = 0; i < iloscliczb; i++)
 {
Console.Write("\n\tPodaj liczbę: ");
liczby += double.Parse(Console.ReadLine());
liczbadopotegi += Math.Pow(liczby, stopienpotegowania);

Console.WriteLine("wynik potegowanych liczb:" + liczbadopotegi);
}
                                                                               
double licznikmianownik = liczbadopotegi / iloscliczb;
console.WriteLine("ułamek:" + licznikmianownik);
 double sredniapotegowa = Math.Pow(licznikmianownik, 1.0 / stopienpotegowania);

Console.WriteLine("Wynik średniej potęgowej: " + sredniapotegowa );

0

Pozmieniaj te nazwy zmiennych bo to co jest obecnie sprawia tylko że ciężko zrozumieć co się dzieje i po co.
liczba - ilość liczb
liczbab - Suma liczb podawanych przez użytkownika
liczby - Suma liczb podawanych przez użytkownika po potęgi x

Tu i tak jest wielki WTF - liczba jest typem double, to tak jakby można było podać 5,5 liczby :D

Problem z przeogromnym wynikiem znajduje się tutaj. Za każdą iteracją pętli będziesz dodawał do zmiennej liczbab zamiast ją nadpisywać.

liczbab += double.Parse(Console.ReadLine()); 

Poza tym, tutaj liczysz średnią a wyświetlasz co innego

double sredniageometryczna = Math.Pow(licznikmianownik, 1.0 / potega);
Console.WriteLine("Wynik średniej potęgowej: " + liczby);
0

Nie zerujesz zmiennych.

0

szlak nie zauważyłem tego +

1 użytkowników online, w tym zalogowanych: 0, gości: 1