static void Main(string[] args)
{
Console.WriteLine("Podaj liczbę: ");
try // blok testowania w razie podania liczby ujemnej lub "nie liczby"
{
uint liczba = uint.Parse(System.Console.ReadLine()); // czytanie liczby z klawiatury
uint wynik = 1; //przypisanie poczatkowej wartosci dla wyniku
int i;
for (i = 2; i <= liczba; i++) //petla dajaca wynik = silnia z liczby
wynik *= i; //to jest to samo co zapis: wynik=wynik*i
Console.WriteLine(liczba + "! = " + wynik); //wyswietlenie wyniku
}
catch // reakcja w razie wystąpienia błędu w blokuy try
{
System.Console.WriteLine("Coś nie tak z liczbą, którą podałeś :(" );
}
Console.ReadLine();
}
Enumerable.Range(1, count).Aggregate((i, j) => i*j);
wystarczy połowa mnożeń
a ile bys chciał zeby sie mnożeń wykonywało? na jakim poziomie matematyki Ty jestes...
wykonujemy LICZBA-1 mnożeń (razem 3*LICZBA operacji), to mniej więcej dwa razy za dużo.
Może dla tak małego zakresu nie ma to znaczenia, ale...
a ja nie traktuje tego jako wrzuta :)
Pytanko: to gdzie mam wrzucić całą resztę skoro kompilator mi woła, że zmienna liczba niezdefiniowana?
w try{} wystarczyło objąć
uint liczba = uint.Parse(System.Console.ReadLine());
reszta zbędnie tam siedzi
i co do "pasuje?" - to nie wrzuta, wyluzuj :) to rady i sugestie jak pisać coraz lepiej :)
Tak swoją drogą, nie pasuje to bardziej do FAQ?
moze i sensowniej, ale zawsze możesz poprawić :P
Czy nie byłoby sensowne zadeklarowanie wynik jako uint?
pasuje?
btw. link USUŃ nie działa na komentarzach. Krzyczy, że wszystkie pola w formularzu mają byc wypełnione. Chyba jest podpięta ta sama akcja co pod przycisk kasacji podczas edycji
No więc właśnie - czyli kod sprawdzony i gotowy do wstawienia do swojego programu :)
Taki nieoptymalny kod nadaje się na artykuł, z opisem silni i info, że można go usprawnić. :)
w sumie racja :)
Ale też to "tylko" gotowiec" ;)
Może warto int.Parse objąć w klauzulę try/catch jakby user wpisał [^0-9] :)
No i jaki jest sens pisać
for (i = 1; ...
zamiast
for (i = 2; ...
? jak już pisać to optymalnie :)