Witam, próbowałem zrobić na zaliczenie program do liczenia średniej kwadratowej wg wzoru na nią, ale wynik końcowy wychodzi zły. Próbowałem na różne strony to zmieniać itd. ale już nie mam pomysłu. Być może błąd jest w części gdzie każdy wyraz licznika trzeba podnieść do potęgi i potem zsumować. Nie wiem jak to inaczej zrobić. :(
Proszę o pomoc albo wskazówki.
Problem: wychodzi zły wynik końcowy.
Jak ma działać: obliczać prawidłowo średnią kwadratową podanych wyrazów.
{
{
int db_n;
float db_wynik;
float db_a, db_D, db_S = 0.0f;
Console.WriteLine("\n\tObliczamy średnią kwadratową wyrazów ciągu arytmetycznego");
do //dla zapewnienia spełnienia warunku wejściowego dla n, n>0
{ //wczytanie wartości n
Console.Write("\n\tPodaj wartość (liczbę) n: ");
while (!int.TryParse(Console.ReadLine(), out db_n))
{
Console.WriteLine("\n\tERROR: w zapisie liczby n wystąpił niedozwolony znak");
Console.Write("\n\tPodaj wartość n jeszcze raz, ale uważaj, co piszesz.");
}
//sprawdzenie warunku wejściowego
if (db_n <= 0)
{
Console.WriteLine("\n\tERROR: liczba musi być > 0");
Console.Write("\n\tPodaj wartość n jeszcze raz, ale uważaj, co piszesz.");
}
} while (db_n <= 0); /* gdy warunek n <= 0 przyjmie wartość true,
to nastąpi powtórzenie wartości n */
//obliczenie sumy wyrazów ciągu liczbowego
for (int db_i = 1; db_i <= db_n; db_i++)
{
Console.Write("\n\tPodaj {0}-ą wartość ciągu liczbowego: ", db_i);
while (!float.TryParse(Console.ReadLine(), out db_a))
{
Console.WriteLine("\n\tERROR: w zapisie {0}-go wyrazu ciągu liczbowego"
+ "wystąpił niedozwolony \n\t\t znak", db_i);
Console.Write("\n\tPodaj wartość wyrazu ciągu liczbowego jeszcze raz,"
+ "ale uważaj\n\t co piszesz: ");
}
/*w tym miejscu wartość wyrazu a jest "poprawna"
* obliczenie wyniku ze wzoru na średnią kwadratową */
db_S = (float)Math.Pow(db_S, 2) + (float)Math.Pow(db_a, 2); //sumowanie licznika
}
db_D = db_S / db_n; //podzielenie licznika przez n
db_wynik = (float)Math.Sqrt(db_D); //pierwiastek kw. z otrzymanej liczby
Console.WriteLine("\n\tŚrednia kwadratowa podanych wyrazów jest równa {0,6:F3}", db_wynik);
Console.WriteLine("\n\tDla kontynuacji programu naciśnij dowolny klawisz");
Console.ReadKey();
}