silnia w danym zakresie

0
 Witam chciałbym zrobić silnie działającą w jakimś konkretnym zakresie.Zwykła mi się udaje takim sposobem lecz jak próbuje zrobić ją w jakimś zakresie który podaje podczas działania programu to nic z tego nie wychodzi.

Program ma polegać na tym ,że jak podam np zakres od 51 i 6 skreslen to program wyliczy mi 51*50*49*48*47*46; Prawdopodobnie zrobiłem jakiś głupi błąd i nie moge go zauważyc;/

```cpp
#include <iostream>

using namespace std;

int main()
{
    long double silniaz=1;
int zakres,skreslenia;
cout<<"Daj zakres i skreslenia";
    cin>>zakres;
    cin>>skreslenia;

   for(int i=zakres-skreslenia;i>=zakres;i++)
   {
       silniaz=silniaz*i;
   }
   cout<<silniaz<<endl;

}
0

Co to znaczy "nic z tego nie wychodzi"?
1) nie działa kompilacja?
2) program nic nie wyświetla?
3) program wyświetla wyniki których nie rozumiesz?
4) program czasami wyświetla wyniki których nie rozumiesz?
5) program nic nie wyświetla mimo że dodałeś cout w środku pętli?
6) program nie daje się debugować?

0

Program nie wyświetla poprawnego wyniku.Wyświetla to co jest przypisane przy int czyli w tym wypadku silniaz=1.

0
Filip270 napisał(a):

Program nie wyświetla poprawnego wyniku.Wyświetla to co jest przypisane przy int czyli w tym wypadku silniaz=1.

Naucz się używać debuggera. Jeśli nie masz czasu, użyj cout żeby skontrolować wartości na których bazuje Twój program.
W tym wypadku dodaj

cout << "zakres: " << zakres << ", skreslenia: " << skreslenia << "\n"; 

przed for i zobacz co wyświetla.
Jeśli nie pomoże dodaj wewnątrz for:

cout << "i: " << i << "\n"; 
2

Dla jakich i to

for(int i=zakres-skreslenia;i>=zakres;...)

się wykona?

1

Koniec pętli jest zły. Nie >=, tylko <= i będzie ok.
PS.
Skoro silnia jest na ogół liczbą całkowitą, to czy long long int bardziej by nie pasowało?.

0

Miś ma racje koniec pętli był zły wystarczyło zmienić koniec pętli.
Sam sie zastanwiam dlaczego takiego głupiego błędu nie mogłem zobaczyć.
Dziękuje :)

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