Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122

Замена строк и столбцов в произвольном порядке

22.01.2022, 12:02. Показов 1148. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дело так обстоит: вводим k и l, на выходе получаем матрицу, в которой элементы строки k и элементы столбца l поменяются местами. Условно говоря, при k = 1 и l = 1 матрица вида
1 2 3
4 5 6
7 8 9

должна стать:
1 4 7
2 5 6
3 8 9

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <limits.h>
 
using namespace std;
 
int main()
{
    int** arr = NULL; 
    int size = 5;
    int tmp, k = 0, l = 0, rows, cols;
    arr = new int* [size];
    for (int i = 0; i < size; i++)
        arr[i] = new int[size];
 
    srand(time(NULL));
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++) {
            arr[i][j] = rand() % 101;
            arr[i][j] *= (rand() % 2 == 0) ? -1 : 1;
        }
 
    cout << "Array: " << endl;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
    cin >> k, l;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
        {
            if (i == k)
            {
                rows = i;
            }
            if (j == l)
            {
                cols = j;
            }
            tmp = arr[rows][j];
            arr[rows][j] = arr[i][cols];
            arr[i][cols] = tmp;
        }
        
    }
 
    cout << endl << "Array after changes: " << endl;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
 
    for (int i = 0; i < size; i++)
        delete[] arr[i];
    delete[] arr;
 
    return 0;
}
Очеивдно, что он не работает, но я не знаю почему, воть хоть застрелись, наведите дурака на путь правильный, заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2022, 12:02
Ответы с готовыми решениями:

Чтение из текстового файла строк или слов в произвольном порядке
Доброго Времени суток! Продолжаю писать проект. Есть такое задание: Пользователю из текстового файла(txt.txt) выдается слово в Label ...

Замена строк и столбцов
program lab_3; uses crt; const n=3; m=4; type massiv=array of real; var a:massiv; i,j,stroc:byte; max,per:real; ...

Замена местами столбцов и строк
Как поменять местами столбцы и строки в печатной форме документа. Пробовал, но ничего не получилось.

6
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,554
22.01.2022, 12:25
Лучший ответ Сообщение было отмечено ik4 как решение

Решение

У вас обмен происходит для всех элементов, а надо только для if (i == k) и if (j == l).
0
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122
22.01.2022, 13:07  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
У вас обмен происходит для всех элементов, а надо только для if (i == k) и if (j == l).
Исправил, но это не помогло, если еще какие-то замечания к моему коду?
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,554
22.01.2022, 14:14
Цитата Сообщение от ik4 Посмотреть сообщение
Исправил, но это не помогло, если еще какие-то замечания к моему коду?
Так надо бы увидеть, что вы там исправили.
0
14 / 10 / 4
Регистрация: 12.12.2020
Сообщений: 122
22.01.2022, 14:43  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Так надо бы увидеть, что вы там исправили.
Да я в целом убрал эту проверку, вроде как даже меняет, но как-то не вкусно, не совсем так, как мне хотелось бы этого.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <limits.h>
 
using namespace std;
 
int main()
{
    int** arr = NULL;
    int size = 5;
    int tmp, k = 0, l = 0, rows, cols;
    arr = new int* [size];
    for (int i = 0; i < size; i++)
        arr[i] = new int[size];
 
    srand(time(NULL));
 
    do
    {
        cin >> k >> l;
    } while (k <= 0 || l <= 0);
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++) {
            arr[i][j] = rand() % 101;
            arr[i][j] *= (rand() % 2 == 0) ? -1 : 1;
        }
 
    cout << "Array: " << endl;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
   
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
        {
                tmp = arr[k][j];
                arr[k][j] = arr[i][l];
                arr[i][l] = tmp;
        }
 
    }
 
    cout << endl << "Array after changes: " << endl;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            cout << arr[i][j] << "\t";
        cout << endl;
    }
 
    for (int i = 0; i < size; i++)
        delete[] arr[i];
    delete[] arr;
 
    return 0;
}
(предполагаем, что мы не будет вводить k и l больше размерность массива и меньше 0)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
23.01.2022, 02:29
Лучший ответ Сообщение было отмечено ik4 как решение

Решение

ik4,
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <utility>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, K, L;
    cout << "n="; cin >> n;
    
      int **a = new int*[n];
    for (int i = 0; i < n; i++)
         a[i]=new int[n];
         
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j]=rand()%9 + 1;            
            cout << a[i][j] << " ";
        }
    cout << "\n";
    }      
    
    do
    {
        cout << "1<=row<=" << n << "  row="; cin >> K;
        if (K<1 || K>n) cout << " Repeat please...\n";
    }
    while (K<1 || K>n);
    K--;
    
    do
    {
        cout << "1<=col<=" << n << "  col="; cin >> L;
        if (L<1 || L>n) cout << " Repeat please...\n";
    }
    while (L<1 || L>n);
    L--;  
    
    for (int i = 0, j = 0; i < n && j < n; i++, j++)
    {        
        if(i==K) i++;
        if(j==L) j++;        
        if(i!=n && j!=n) swap(a[K][j],a[i][L]);        
    }            
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)        
            cout << a[i][j] << " ";        
    cout << "\n";
    }   
 
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
system("pause");
return 0;
}
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
23.01.2022, 02:55
А как должен происходить обмен значениями с номерами строки и столбца, отличными друг от друга? Скажем, k = 0 и l = 1, т.е. берем 1-ую строчку и 2-ой столбец?
Исходная матрица:
1 2 3
4 5 6
7 8 9

Результат:
2 (1 или 5?) 8
4 2 6
7 3 9
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2022, 02:55
Помогаю со студенческими работами здесь

Замена столбцов и строк в массиве
В 2-мерном массиве 3х5 поменять местами 1 и 3 строку, 2 и 5 столбец. Вывести исходную матрицу и результирующую матрицу с соотв. коментами.

Замена строк и столбцов массива
Заменить элементы матрицы NxN расположенные в строках на элементы расположенные в столбцах (5х5)

Замена содержимого строк на содержимое столбцов матрицы
Помгите пожалуйста с решением задач, завтра здавать, а я не бум-бум.... 1)Дан двухмерный массив A(N,M). Составить программу по замене...

Матрица. Обмен, замена строк, удаление столбцов
Лес План волшебного леса прямоугольной формы с размерностью n х m состоит из квадратных зон со стороной 1-ца .Для каждой зоны леса задан...

Матрица: замена элементов, вставка и удаление строк / столбцов
дан двумерный массив размером 5*6, заполненный случайным образом 1. заменить максимальный элемент каждой строки на противоположный 2....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru