C ++ генерирует паскаль треугольник, неправильный вывод

У меня есть проблема с генерацией паскаль треугольника в C ++, тот же алгоритм работает хорошо в Java, а в C ++ он работает только для первых двух чисел каждой строки треугольника в любом другом, он генерирует путь к большим числам. Например, в Java это генерирует:
1 5 10 10 5 1 и в C ++: 1 5 1233124 1241241585 32523523500 и т. Д.
Вот код:

#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

class Pascal {
private:
int* tab;
int prev1;
int prev2;
public:

Pascal(int n) {
tab = new int[n+1];
prev1=0;
prev2=0;

for(int i = 0; i <= n; i++) {
for(int k = 0; k <= i; k++) {
if (k == 0) {
tab[k] = 1;
prev2 = 1;
} else {
prev1 = tab[k-1] + tab[k];
tab[k-1] = prev2;
prev2 = prev1;
}
}
}
}

int wspolczynnik(int m) {
return tab[m];
}
};

int main (int argc, char* argv[]) {
int n = 0, m = 0;

n = atoi(argv[1]);  // konwersja string na int

if (n >= 0)

for (int i = 2; i < argc; i++) {
Pascal *wiersz = new Pascal(n);
m = atoi(argv[i]);int result = wiersz->wspolczynnik(m);

if (m < 0 || m > n)
cout << m << " - element poza zakresem" << endl;
else
cout << m << " : " << result << endl;

delete[] wiersz;
}
return 0;
}

0

Решение

Смотрите, если инициализация tab массив помогает:

tab = new int [n + 1] ();

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]