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

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

Войти
Регистрация
Восстановить пароль
 
SAUtrade
13 / 13 / 1
Регистрация: 21.10.2012
Сообщений: 140
#1

Некорректная работа программы при добавлении столбца в двумерный массив - C++

23.10.2012, 15:29. Просмотров 396. Ответов 3
Метки нет (Все метки)

Проблемма в том что когда добавляю строку все прекрастно работает... А вот со столбцом -- работает но не корректно... Подскажите что не так... Программа должна добавить в любое место строку или столбец...

C++ (Qt)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream> 
#include <time.h>
#include <stdlib.h>
 
using namespace std; 
 
void print(int **arr, int nrow, int ncol) 
{ 
    for(int i = 0; i < nrow; i++)
    {
        for(int j = 0; j < ncol; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
}
 
 
int main()
{   
    srand(unsigned (time(NULL)));
    int nrow, ncol, n1 = 0, n2 = 0, n3 = 0;
    int i, j;
    int position;
    bool flag = false;
        
    cout << "Enter amount row: ";
    cin >> nrow;
    cout << endl << "Enter amount column: ";
    cin >> ncol;
        
    // Объявляется переменная типа "указатель на указатель на int"
    // и выделяется память под массив указателей на строки массива
    int **arr = new int*[nrow]; 
    //Цикл выделяет память под каждую строку массива 
    for (i = 0; i < nrow; i++)
    //Каждому элементу массива указателей на строки присваевается адресс начала участка памяти
    arr[i] = new int [ncol];
 
    
 
    cout << "Fill in array: " << endl << "1. Random" << endl << "2. Manual" << endl << "Make your choice: ";
    cin >> n1;
 
        switch(n1)
            {
                case 1:
                    for(int i = 0; i < nrow; i++)
                        for(int j = 0; j < ncol; j++)
                            arr[i][j] = rand()%100;
                    cout << endl << "Generated array: " << endl;
                    print(arr, nrow, ncol);
                    break;
                
                case 2:
                    cout << endl << "Enter elements array: " ;
                        for(int i = 0; i < nrow; i++)
                            for(int j = 0; j < ncol; j++)
                                cin >> arr[i][j];
                    cout << "Your array: " << endl;
                    print(arr, nrow, ncol);
                    break;
                
                default :
                    cout << "Your choice is not correct" << endl;
                    break;
            }
 
 
        
        cout << "What is parametr add in array?" << endl << "1. Row" << endl << "2. Column" << endl <<  "Make your choice: ";
        cin >> n2;
 
        if (n2 == 1)
            {
                int **parr = new int*[nrow + 1];
                for (i = 0; i < nrow + 1; i++)
                parr[i] = new int [ncol];
 
                cout << "What is position choice for row" << " (max position = " << nrow + 1 <<"): ";
                cin >> position;
                --position;
 
                    for (i = 0; i < nrow + 1; i++)
                        {
                            for (j = 0; j < ncol; j++)
                                {
                                    if (position == i)
                                        {
                                            for(int k = 0; k < ncol; k++)
                                                {
                                                    parr[i][k] = rand()%50;
                                                }
                                            flag = true;
                                        }
                                    else 
                                        {
                                            parr[i][j] = flag? arr[i-1][j]:arr[i][j];
                                        }
                                }
                        }
                    
                //вывод на экран нового массива
                    for (i = 0; i < nrow + 1; i++)
                        {
                             for (j = 0; j < ncol; j++)
                                 {
                                    cout<<parr[i][j]<<"\t";
                                 }
                             cout<<"\n";
                        }
             }
 
                
// ГДЕТО В ЭТОМ БЛОКЕ МОЙ ГЛЮК....
        if (n2 == 2)
        {
            int **parr = new int*[nrow];
                for (i = 0; i < nrow; i++)
                parr[i] = new int [ncol + 1];
 
                cout << "What is position choice for column" << " (max position = " << ncol + 1 <<"): ";
                cin >> position;
                --position;
 
                    for (i = 0; i < nrow; i++)
                        {
                            for (j = 0; j < ncol + 1; j++)
                                {
                                    if (position == j)
                                        {
                                            for(int k = 0; k < nrow; k++)
                                                {
                                                    parr[k][j] = rand()%50;
                                                }
                                            flag = true;
                                        }
                            
                                    else 
                                        {
                                            parr[i][j] = flag? arr[i][j-1]:arr[i][j];
                                        }
                                }
                        }
                //вывод на экран нового массива
                        for (i = 0; i < nrow; i++)
                            {
                                for (j = 0; j < ncol + 1; j++)
                                    {
                                        cout<<parr[i][j]<<"\t";
                                    }
                                cout<<"\n";
                            }
                
                            delete[]parr;   
                    }
        
    delete[]arr;
}
ВОТ ЧТО ВЫХОДИТ
Некорректная работа программы при добавлении столбца в двумерный массив
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 15:29     Некорректная работа программы при добавлении столбца в двумерный массив
Посмотрите здесь:

Некорректная работа программы,при вводе отрицательного числа - C++
Здравствуйте.Есть некий // { int c; char array; printf( &quot;Vvod: &quot; ); scanf( &quot;%d&quot;, &amp;c ); printf(...

Некорректная работа программы - C++
Добрый день! Я попытался решить задачу № 5 &quot;Статистика&quot; с сайта acmp.ру. Текст задачи: Вася не любит английский язык, но каждый...

Некорректная работа программы - C++
Помогите, пожалуйста, понять почему не работает программа. Ввод предложения работает, однако после нажатия клавиши Enter инвертированный...

Некорректная работа программы с float данными - C++
Вот код примитивного калькулятора: #include &lt;iostream&gt; #include &lt;float.h&gt; #include &lt;conio.h&gt; using namespace std; ...

Добавление столбца в двумерный массив - C++
Всем привет! Помогите пожалуйста, нужно добавить столбец после каждого четного столбца матрицы #include &quot;stdafx #include&lt;iostream&gt; ...

Двумерный массив, сумма столбца - C++
В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,067
Записей в блоге: 3
Завершенные тесты: 1
23.10.2012, 16:31     Некорректная работа программы при добавлении столбца в двумерный массив #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                cout << "What is position choice for column" << " (max position = " << ncol + 1 <<"): ";
                cin >> position;
                --position;
                    for (i = 0; i < nrow; i++)
                        {
                                    flag=false;
                            for (j = 0; j < ncol + 1; j++)
                                {
                                    if (position == j && !flag)
                                        {
                                            parr[i][j] = rand()%50;
                                            flag = true;
                                        }
                            
                                    else 
                                        {
                                            parr[i][j] = flag? arr[i][j-1]:arr[i][j];
                                        }
                                }
                        }
nightelf18
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 19
23.10.2012, 16:35     Некорректная работа программы при добавлении столбца в двумерный массив #3
Строки 125 и 127 поменять местами))))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 16:51     Некорректная работа программы при добавлении столбца в двумерный массив
Еще ссылки по теме:

Как сделать двумерный динамический массив на 4 столбца ? - C++
Что нужно изменить в этом коде чтобы у Mass1 стало 4 столбца? я побывал менять Mass2 = new int64_t; 2 на 4 но программа перестает работать ...

Динамический двумерный массив нахождение произведения столбца - C++
В каждом столбце матрицы найти произведение положительных элементов и вычислить сумму этих произведений. Не могу разобраться как написать...

Некорректная работа cin.fail() при вводе смешанных данных - C++
Дарова, у меня есть код, где присутствует проверка на ввод неправильных данных(в моем случае всяких букв), но работает она не так, как мне...

Создать двумерный массив и выполнить сортировку нулевого столбца - C++
Создать двумерный массив и выполнить сортировку нулевого столбца... что то никак не могу сообразить как это сделать:-[

Двумерный массив, вывод номера строки и столбца минимального элемента - C++
Помогите найти ошибку, программа не правильно выводит номер строки и номер столбца минимального элемента. #include &lt;stdio.h&gt; ...

Некорректная работа команды continue в цикле при проверке корректности введенных данных - C++
Доброго времени суток, уважаемые форумчане. Есть программа для определения количества купюр (монет) того или иного номинала, которое...


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

Или воспользуйтесь поиском по форуму:
SAUtrade
13 / 13 / 1
Регистрация: 21.10.2012
Сообщений: 140
23.10.2012, 16:51  [ТС]     Некорректная работа программы при добавлении столбца в двумерный массив #4
Огромное спс))) я пол дня сидел над этой ошибкой))

Добавлено через 12 минут
nightelf18, Просто поменять не достаточно - прога виснит ....
Croessmah, Особая благодарность....
Yandex
Объявления
23.10.2012, 16:51     Некорректная работа программы при добавлении столбца в двумерный массив
Ответ Создать тему
Опции темы

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