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;
}
silnia w danym zakresie
- Rejestracja: dni
- Ostatnio: dni
- Postów: 28
0
- Rejestracja: dni
- Ostatnio: dni
0
Co to znaczy "nic z tego nie wychodzi"?
- nie działa kompilacja?
- program nic nie wyświetla?
- program wyświetla wyniki których nie rozumiesz?
- program czasami wyświetla wyniki których nie rozumiesz?
- program nic nie wyświetla mimo że dodałeś cout w środku pętli?
- program nie daje się debugować?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 28
0
Program nie wyświetla poprawnego wyniku.Wyświetla to co jest przypisane przy int czyli w tym wypadku silniaz=1.
- Rejestracja: dni
- Ostatnio: dni
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";
- Rejestracja: dni
- Ostatnio: dni
2
Dla jakich i to
for(int i=zakres-skreslenia;i>=zakres;...)
się wykona?
- Rejestracja: dni
- Ostatnio: dni
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?.