Programowanie w języku C# » Gotowce

Silnia

  • 2007-03-17 17:36
  • 12 komentarzy
  • 4968 odsłon
  • Oceń ten tekst jako pierwszy
 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();
        }

12 komentarzy

Xitami 2007-03-23 14:58

wystarczy połowa mnożeń

SebaZ 2007-03-23 00:09

a ile bys chciał zeby sie mnożeń wykonywało? na jakim poziomie matematyki Ty jestes...

Xitami 2007-03-22 23:36

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...

SebaZ 2007-03-19 23:48

a ja nie traktuje tego jako wrzuta :)

Pytanko: to gdzie mam wrzucić całą resztę skoro kompilator mi woła, że zmienna liczba niezdefiniowana?

Marooned 2007-03-19 23:44

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

Coldpeer 2007-03-18 00:19

Tak swoją drogą, nie pasuje to bardziej do FAQ?

SebaZ 2007-03-17 17:34

moze i sensowniej, ale zawsze możesz poprawić :P

Qyon 2007-03-17 17:32

Czy nie byłoby sensowne zadeklarowanie wynik jako uint?

SebaZ 2007-03-17 17:27

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

Marooned 2007-03-17 17:00

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

SebaZ 2007-03-17 09:35

w sumie racja :)
Ale też to "tylko" gotowiec" ;)

Marooned 2007-03-17 02:15

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