Witam, to część mojego pierwszego programu, wszystko robię na "czuja" i chciałbym prosić o wytłumaczenie. Pierwsze pytanie to dlaczego w wywołaniu metody "podanieN" w nawiasie musi być jakaś liczba (ja wpisałem 0 bo bez niej pokazuje błąd) i co ona oznacza?
A drugie to dlaczego przy podaniu wartości "a" przykładowo: 0,5 ; 0,3 ; 0,451 itd. wychodzą błędne wyniki? Możliwe że powinienem podawać je z kropką zamiast przecinka ale wtedy działa to jakby niebyły liczbami i nie przepuszcza ich "while (!float.TryParse(Console.ReadLine(), out a))". Serdecznie proszę o pomoc.
namespace ProjektCsharp
{
class Program
{
static ushort podanieN(ushort n)
{
do
{
//wpisanie zaproszenia do podania wartości 'n'
Console.Write("\n\tPodaj liczność ciągu liczbowego n = ");
while (!ushort.TryParse(Console.ReadLine(), out n))
{
Console.WriteLine("\n\tError: w zapisnie wystąpił niedozwolony znak");
//ponowne wpisanie zaproszenia do podania wartości 'n'
Console.Write("\n\tPodaj liczność ciągu liczbowego n = ");
}
//n podane poprawnie
//sprawdzenie warunku wejściowego n > 0
if (n <= 0)
//sygnalizacja błędu
Console.WriteLine("\n\tError: podana wartość liczności nie spełnia warunku wejściowego: n > 0");
} while (n <= 0);
return n;
}
static void Main(string[] args)
{
//Deklaracje zmiennej dla przechowania kodu naciśniętego klawisza
ConsoleKeyInfo Wybranaopcja;
//Wypisanie metryki programu
Console.WriteLine("\n\n\t\tProgram 'KalkulatorWielkościMatematycznych'");
//Zapisanie instrukcji do_while, która zapewni powtarzanie obliczeń
do
{
//wypisanie menu programu
Console.WriteLine("\n\n\tWybierz jedną z poniższych opcji: ");
Console.WriteLine("\n\tA. Obliczenie średniej harmonicznej wyrazów ciągu liczbowego");
//podpowiedz dla użytkownika
Console.Write("\n\n\n\tNaciśnij klawisz aby wybrać jedną z opcji: ");
//wczytanie klawisza który został wybrany przez użytkownika
Wybranaopcja = Console.ReadKey();
//rozpoznanie i obsłużenie wybranej opcji
if (Wybranaopcja.Key == ConsoleKey.A)
{
//potwierdzenie wybranej opcji
Console.WriteLine("\n\n\n\t\tWybrana funkcjonalność: A. Obliczenie średniej harmonicznej wyrazów ciągu liczbowego");
//deklaracje lokalne
float a; //dla przechowania wartości wczytanego wyrazu ciągu liczbowego
float S; //dla przechowania obliczonej średniej harmonijnej wyrazów ciągu liczbowego
//wywołanie metody
ushort n = podanieN(0);
//obliczenie średniej harmonicznej wyrazów ciągu liczbowego
S = 0.0F; //ustawienie początkowego stanu obliczeń
//obliczenie średniej harmonicznej wyrazów ciągu liczbowego według zależności iteracyjnej
for (int i = 1; i <= n; i++)
{
//wczytanie wartości i-tego wyrau liczkowego
Console.Write("\n\tPodaj wartość {0}-go wyrazu ciągu liczbowego: ", i);
do
{
while (!float.TryParse(Console.ReadLine(), out a))
{
//sygnalizacja błędu
Console.WriteLine("\n\tError: w podanym zapisnie wyrazu ciągu liczbowego wystąpił niedozwolony znak");
//wczytywanie wartości i-tego wyrazu ciągu liczbowego
Console.Write("\n\tPodaj ponownie wartość {0}-go wyrazu ciągu liczbowego: ", i);
}
//a podane poprawnie
//sprawdzenie warunku wejściowego a != 0
if (a == 0)
{ //sygnalizacja błędu
Console.WriteLine("\n\tError: podana wartość wyrazu ciągu liczbowego nie może być równa 0");
//wczytywanie wartości i-tego wyrazu ciągu liczbowego
Console.Write("\n\tPodaj ponownie wartość {0}-go wyrazu ciągu liczbowego: ", i);
}
} while (a == 0);
//obliczanie średniej harmonicznej wyrazów ciągu liczbowego
S = S + (1.0F/ a);
}
S = n / S;
//wypiasnie wyniku obliczeń
Console.WriteLine("\n\tWyniki obliczeń suma {0} wyrazów ciągu liczbowego jest równa {1,10:F5}", n, S);
Console.WriteLine("\n\tNaciśnij jakikolwiek przycisk aby kontynuować");
//chwilowe zatrzymanie programu
Console.ReadKey(true);
}
} while (Wybranaopcja.Key != ConsoleKey.X);
}
}
}