Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 16.08.2014
Сообщений: 21

Вставить новый столбец в матрицу после столбца, в котором нет отрицательных

16.08.2014, 15:04. Показов 2349. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вставить новый столбец после столбца, в котором нет ни одного отрицательного
элемента.
Вот, что сделала я. Но у меня программа не работает. как ее изменить?

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
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{int n,m,l;
    cout<<"n="; cin>>n; cout<<"m="; cin>>m;
    int **a=new int*[n];
    for (int i=0; i<n;++i)
        a[i]=new int[m];
    for (int i=0;i<n;++i)
        for (int j=0;j<m;++j)
        {cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j];}
 
    for (int j=0;j<m;++j)
        {int i=0;
        while (a[i][j]>0) i++; 
        if (i==n-1) {l=i;
        for(int j=m;j>l;--j)
            for(int i=0;i<n;++i) a[i][j]=a[i][j-1];
            ++m;
            for(int i=0;i<n;++i)
        {cout<<"a["<<i<<"]["<<l<<"]="; cin>>a[i][l];}}
        else j++;}
    
    for (int i=0;i<n;++i,cout<<endl)
        for (int j=0;j<m;++j)
        cout<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<"\t";
        getch();
    return 0;}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.08.2014, 15:04
Ответы с готовыми решениями:

Вставить новый столбец после столбца, в котором нет ни одного отрицательного элемента
Вставить новый столбец после столбца, в котором нет ни одного отрицательного элемента. Написала ее. исправьте ошибки #include...

Вставить новый столбец после столбца матрицы, в котором нет ни одного отрицательного элемента
Ребят помогите. в двумерном массиве надо вставить новый столбец после столбца, в котором нет ни одного отрицательного элемента. мне бы...

Двумерный массив. Вставить второй столбец после первого столбца, в котором все элементы положительны.
Здравствуйте. Выручайте ;) Дан двумерный массив. Вставить второй столбец после первого столбца, в котором все элементы положительны.

4
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
16.08.2014, 15:58
Оформи код, как положено, его невозможно читать.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
16.08.2014, 16:10
Цитата Сообщение от July Посмотреть сообщение
while (a[i][j]>0) i++;
как говорится, бесконечность не предел? Где ограничение на счетчик.

Цитата Сообщение от Aspirin Посмотреть сообщение
Оформи код, как положено, его невозможно читать.
согласен на 100%, благо студия автоматом пробелы ставит и отступы, хоть что-то видно.
Дальше нереально разобрать. Напиши комменты к коду, опиши отдельно ожидаемый вывод, вот тогда уж поглядим
0
0 / 0 / 0
Регистрация: 16.08.2014
Сообщений: 21
16.08.2014, 16:58  [ТС]
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
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{int n,m,l;
    cout<<"n="; cin>>n; cout<<"m="; cin>>m;
    //создаю массив
    int **a=new int*[n];
    for (int i=0; i<n;++i)
        a[i]=new int[m];
    for (int i=0;i<n;++i)
        for (int j=0;j<m;++j)
        {cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j];}
 
    for (int j=0;j<m;++j)
        {int i=0;
        while (a[i][j]>0 && i<n) i++; // пока эл-т положительный и пока не конец столбца
        if (i==n-1) {l=i;// если после завершения цикла i равно n
        for(int j=m;j>l;--j)//сдвигаю столбцы
            for(int i=0;i<n;++i) a[i][j]=a[i][j-1];
            ++m;
            for(int i=0;i<n;++i)// записываю эл-ты нового столбца
        {cout<<"a["<<i<<"]["<<l<<"]="; cin>>a[i][l];}}
        else j++;}//иначе перехожу на новый столбец
    //вывод изменненой матрицы
    for (int i=0;i<n;++i,cout<<endl)
        for (int j=0;j<m;++j)
        cout<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<"\t";
        getch();
    return 0;}

в цикле я добавила условие
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
16.08.2014, 18:33
Цитата Сообщение от July Посмотреть сообщение
в цикле я добавила условие
а как же проверить новый код, т.к. этот измененный вариант выдает точно такую же ошибку? попробовать в дебаггере отследить значения переменных и места возникновения ошибок.

с оформлением прогресс, код выложила правильно, но все блоки надо выделять, т.к. иначе будет сплошной непонятный текст. для примера выложу середину этого кода со своими комментами.
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
for (int j = 0; j<m; ++j) 
    {  
        //все фигурные скобки в отдельной строке, сам блок имеет отступ
        int i = 0;
        while (a[i][j]>0 && i<n) i++; 
        //Пусть у нас массив 2х2, при i=0, 1 все ок. потом i=2
        //программа пытается получить значение a[i][j] для сравнения
        //а это уже выход за границы массива (i<n) она будет уже проверять ПОСЛЕ ошибки
        if (i == n - 1) 
        {
                        //а вот тут никаких новых столбцов не появляется*
            l = i;
 
            for (int j = m; j>l; --j)
            for (int i = 0; i<n; ++i) 
                a[i][j] = a[i][j - 1];
 
            ++m;
 
            for (int i = 0; i<n; ++i)
            {
                cout << "a[" << i << "][" << l << "]="; cin >> a[i][l];
            }
        }
        else j++; //а вот это уже изменение счетчика цикла for внутри него самого, это плохо
    }
*если нужно добавить столбец/строку, изменить размеры массива в общем, то нужно его переопределять. Т.е. создать новый, увеличенный массив, скопировать в него старый с учетом вставки новых элементов, удалить старый.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2014, 18:33
Помогаю со студенческими работами здесь

В двумерном массиве после каждого столбца, не содержащего число 0, вставить новый столбец, состоящий из одних нулей
В двумерном массиве после каждого столбца, не содержащего число 0, вставить новый столбец, состоящий из одних нулей, после чего удалить...

В двумерном массиве после каждого столбца, содержащего число 0, вставить новый столбец, состоящий из одних единиц
В двумерном массиве после каждого столбца, содержащего число 0, вставить новый столбец, состоящий из одних единиц, после чего удалить все...

Вставить первый столбец после столбца, в котором находится первый встреченный элемент А
Подскажите как Вставить первый столбец после столбца, в котором находится первый встреченный элемент. Встреченный элемент а. Столбцы не...

Вставить в исходную матрицу новый столбец
Даны действительные числа A1, ..., An, действительная квадратная матрица порядка n (n&gt;=6). Получить действительную матрицу размера...

Вставить в матрицу два столбца из единиц: один после К1-го столбца, второй - перед К1-ым
дан двумерный массив, вставить в него два столбца из чисел 1: один после К1-го столбца. второй-перед К1-м столбом.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru