mnożenie ciągu kolejnych po sobie liczb

mnożenie ciągu kolejnych po sobie liczb
adrian.widzew
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Witam. Mam kod programu, ale wynik wychodzi nie taki jaki powinien być. Wzór powinien być dobry liczba=liczban, z czego "liczba" jest na początku zadeklarowana jako 1, a "n" jest liczba zadeklarowana przez użytkownika. Używam pętli for. Przy każdym przejściu pętli n jest zwiększane o 1 za pomocą modyfikatora w deklaracji pętli. Warunkiem zakończenia mnożenia przez siebie liczb jest sytuacja kiedy n<=m. m to druga liczba którą podaje użytkownik, większa od n. Czyli np. n=6 i m=15 powinno działać tak: 6789101112131415=10897286400 a wynik wyświetla mi wynik 2307351808.

Podam również kod:

Kopiuj
using namespace std;
int main(){
	unsigned int n, m, liczba=1;
cout<<"Podaj liczbe n: ";
cin>>n;
cout<<"Podaj liczbe m: ";
cin>>m;
for(n; n<=m; n++){
	liczba=liczba*n;
}
cout<<liczba;
	getch();
	return 0;
}
M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Za duża liczba, daj unsigned long

adrian.widzew
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Dalej zły wynik

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A jaki jest zakres danych? Bo nawet long long przechowa nie więcej niż 21! Jak zakresy są większe to musisz zaimplementować własne mnożenie pisemne, albo użyć jakiejś biblioteki do dużych liczb.

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Dalej ten sam wynik, czy jakiś inny?

adrian.widzew
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Dobra. Zakres long long int pasuje.
Źle porównałem poprawny wynik z zakresem unsigned long int

adrian.widzew
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

A. I czy jest możliwość sprawdzenia jaki zakres posiada konkretny typ zmiennej na swoim kompie/kompilatorze? Bo podobno u każdego zakresy typów mogą się różnić.

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0
adrian.widzew napisał(a):

A. I czy jest możliwość sprawdzenia jaki zakres posiada konkretny typ zmiennej na swoim kompie/kompilatorze? Bo podobno u każdego zakresy typów mogą się różnić.

Owszem, jest. http://en.cppreference.com/w/cpp/types/numeric_limits

Na dole jest nawet przykład.

adrian.widzew
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 149
0

Tak. Tylko nie ma kodu do funkcji lowest() i max()

M2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Są zaimplementowane w klasie numeric_limits w bibliotece limits. Tylko je wywołaj.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.