Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
#1

Треугольник Паскаля - C++

12.11.2012, 21:02. Просмотров 587. Ответов 0
Метки нет (Все метки)

Вот написал я реализацию треугольника паскаля.Но есть 1 интересный момент - при создании массива для него.
Вот этот код выводит неправильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <vector>
 
int main()
{
    int n;
    std::cin>>n;
    system("cls");
    if(n==1)
        std::cout<<1<<std::endl;
    else if(n==2)
        std::cout<<' '<<1<<' '<<std::endl<<1<<' '<<1<<std::endl;
    else
    {
        
        std::vector <std::vector <int> > mas(n,n+n-1); //тут изменил второй параметр
        int a=(n+n-2)/2;
        mas[0][a]=1;
        for(int i=1,l=a-1,r=a+1;i<n;i++,l--,r++)
                mas[i][l]=mas[i][r]=1;
        for(int i=2;i<n;i++)
        {
            for(int j=0;j<n+n-1;j++)
            {
                if(j!=0 && mas[i-1][j-1]!=0 && mas[i-1][j+1]!=0)
                mas[i][j]=mas[i-1][j-1]+mas[i-1][j+1];
            }
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n+n-1;j++)
            {
                if(mas[i][j]==0)
                std::cout<<' ';
                else
                std::cout<<mas[i][j];
            }
            std::cout<<std::endl;
        }
    }
    system("PAUSE");
    return 0;
}
А вот рабочий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <vector>
 
int main()
{
    int n;
    std::cin>>n;
    system("cls");
    if(n==1)
        std::cout<<1<<std::endl;
    else if(n==2)
        std::cout<<' '<<1<<' '<<std::endl<<1<<' '<<1<<std::endl;
    else
    {
        
        std::vector <std::vector <int> > mas(n,n+n);// увеличил ширину на один, и всё заработало!
        int a=(n+n-2)/2;
        mas[0][a]=1;
        for(int i=1,l=a-1,r=a+1;i<n;i++,l--,r++)
                mas[i][l]=mas[i][r]=1;
        for(int i=2;i<n;i++)
        {
            for(int j=0;j<n+n-1;j++)
            {
                if(j!=0 && mas[i-1][j-1]!=0 && mas[i-1][j+1]!=0)
                mas[i][j]=mas[i-1][j-1]+mas[i-1][j+1];
            }
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n+n-1;j++)
            {
                if(mas[i][j]==0)
                std::cout<<' ';
                else
                std::cout<<mas[i][j];
            }
            std::cout<<std::endl;
        }
    }
    system("PAUSE");
    return 0;
}
внимание вопрос - почему мало ширины массива в первом случае.По моим расчетам клетки там все входят в него.А тоьлко увеличишь ширину на 1 - и всё заработало, хотя вроде это добавление только память занимает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 21:02     Треугольник Паскаля
Посмотрите здесь:

Треугольник Паскаля - C++
как написать код, чтобы числа выводились именно треугольником?

Вывести треугольник паскаля - C++
Уважаемые знатоки)))Помощь требуеться как не когда... помогите написать лабу... Прога Принемает от пользователя целое число n в...

Вычислить треугольник Паскаля n-го порядка - C++
Треугольник Паскаля - таблица чисел, являющихся биномиальными коэффициентами. В этой таблице по боковым сторонам равнобедренного...

Построить треугольник Паскаля (рекурсивно) - C++
Приветствую. Вопрос очень глупый, но с рекурсией на си у меня проблемы. Само задание было: построить треугольник Паскаля. Задание я...

Напечатать треугольник Паскаля — таблицу биномиальных коэффициентов - C++
дано целое неотрицательное число K. Напечатать треугольник Паскаля - таблицу биномиальных коэффициентов (C из m по n) для всех возможных...

Используя треугольник паскаля, зашифровать исходное предложение - C++
Задание 2: 1)Запросить у пользователя максимально возможную по условиям длинну LenMax строки. 2)Создать динамический символьный...

Используя треугольник Паскаля, зашифруйте исходное предложение - C++
Всем привет. Друзья, помогите начинающему программисту с задачей:) Имеется некоторое предложение (слова разделяются символами...

Напечатать треугольник Паскаля — таблицу биномиальных коэффициентов по формуле - C++
Дано целое неотрицательное число K. Напечатать треугольник Паскаля - таблицу биномиальных коэффициентов по формуле для всех...

Вывести треугольник Паскаля количество строк которого задается пользователем - C++
7. Вывести треугольник Паскаля, количество строк которого задается пользователем. Для построения треугольника использовать массивы и...

Из паскаля в С++ - C++
Program lab5; Var a:array of integer; n,I,min,k:integer; P:longint; s:real; Begin Writeln('введите размерность массива'); ...

С паскаля на С++ - C++
Всем добрый вечер!! Вот сама задача.....Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие выше побочной диагонали....

Из паскаля в С++ - C++
Начал С++ недавно изучать. Школе писал на паскале. Вот исходник никак немогу перевести на С++. Через for &amp; while по провал не получается....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru