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

0

У меня возникла проблема с созданием трассировки pascal в c++, тот же алгоритм работает хорошо в java, а в c++ он работает только для первых двух чисел каждой линии traingle в любом другом, который генерирует waaay для больших чисел. Например, в 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
    Тег «Паскаль» здесь относится к языку программирования, а не к треугольнику. Пожалуйста, прочтите описание тегов перед их использованием, чтобы убедиться, что вы используете теги, которые действительно имеют отношение к вашему вопросу. Это помогает им добраться до людей, которые могут ответить, и правильно классифицирует их для последующего использования в поисках. Благодарю. :-)
Теги:
pascals-triangle

1 ответ

0
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню