Program liczacy silnie

0

Witam,
mam napisac program liczacy silnie dla podanej wartosci i. Co trzeba tu poprawic zeby dzialalo poprawnie? Teraz podaje mi wynik 1 niezaleznie od wprowadzonej wartosci

  private void button1_Click(object sender, EventArgs e)
        {
            int i = int.Parse(wartosc.Text);

            int a=1;

            for (int c= 1; c <= 1; ++c)
            {
              a = a * c;
          
            }
            DialogResult key = MessageBox.Show("Silnia=" + a, "Wynik", MessageBoxButtons.OK);
        }
0

Zobacz sobie to: http://www.algorytm.org/algorytmy-arytmetyczne/silnia/s-cs.html

private static int silnia2(int n)
{
int result = 1;
for (int i=1; i<=n; i++)
{
result *= i;
}
return result;
}
 
 

Zmień tu for (int c= 1; c <= i; ++c)

0
baton153 napisał(a)

Witam,
mam napisac program liczacy silnie dla podanej wartosci i. Co trzeba tu poprawic zeby dzialalo poprawnie? Teraz podaje mi wynik 1 niezaleznie od wprowadzonej wartosci

  private void button1_Click(object sender, EventArgs e)
        {
            int i = int.Parse(wartosc.Text);

            int a=1;

            for (int c= 1; c <= 1; ++c)
            {
              a = a * c;
          
            }
            DialogResult key = MessageBox.Show("Silnia=" + a, "Wynik", MessageBoxButtons.OK);
        }

Chyba ktoś nie wie, jak działa pętla for. Zaczynasz od c równego 1, a pętlę kończysz, gdy c równa się 1. Pętla wykonuje się raz.
Po co Ci to "i", skoro nigdy go nie używasz?

0

Znalazlem blad, jest tak banalny ze az wstyd:P w kazdym razie dzieki

0

Dobra, a mam jeszcze jedno pytanie, jak zrobic zeby kiedy wpisze przykladowo 5 w wyskakujacym okienku wyswietlal sie nastepujacy komunikat: "silnia wynosi 12345=120"?

0

Ułożyć napis i wyświetlić okienko. Konkretnie czego nie umiesz?

0

No wpisujac w ten sposob:

DialogResult key = MessageBox.Show("Silnia=" + a, "Wynik", MessageBoxButtons.OK);

wyswietla mi tylko: Silnia= "wynik", i wlasnie nie wiem jak to zrobic zeby wyswietlal 123*... w zaleznosci od podanego parametru

0

Hmmmm. Pętla?

0

No dobra, na tyle ze pewnie trzeba to zrobic w jakis sposob petla to ja wpadlem, a cos bardziej konkretnego? Znam tylko totalne podstawy jesli chodzi o programowanie

0

Jakbym nie probowal to bym nawet nie myslal o tym zeby tu pisac

2

http://tinyurl.com/5sccm8n - aż mi żal dupę ściska, że muszę Ci to pisać :/

1

Pewnie narażę się wielu osobom, ale tak bywa. Obserwując takie fora jak to, zastanawiam się dlaczego niektóre osoby biorą się za programowanie, skoro nie potrafią użyć szarych komórek do rozwiązania podstawowych problemów. Przecież programowanie to czynność, która wymaga nieustannego myślenia. Teraz jeśli taka osoba jakimś cudem trafi do firmy na stanowisko programisty, to jak poradzi sobie z jakimś poważnym problemem?

0

O takie coś Ci chodzi:

 
            string napis="";
            for (int j = 1; j <= i; j++)
            {
                napis += j+"*";
            }
            MessageBox.Show("Silnia liczby:"+i+"!"+"="+a+"="+napis,"Wynik");

Tylko nie wiem jak usunąć ostatni niepotrzebny znak * ze strigna. Czy jest jakiś prosty sposób? Pewnie można by wczytać stringa to tablicy i pominąć ostatni znak.

0

W ciele pętli for dałbym if-a sprawdzającego, czy j jest równe i. Jeśli tak to:
napis+=j;

0

A ja bym zrobił tak:

string napis="";
for (int j = 1; j < i; j++) {
  napis += j+"*";
}
MessageBox.Show("Silnia liczby:"+i+"!"+"="+a+"="+napis+i,"Wynik");

Jeden niepotrzebny skok mniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1