Silnia

SebaZ
 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();
        }

13 komentarzy

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 :)