0 / 0 / 0
Регистрация: 03.03.2016
Сообщений: 6
1

Дана матрица 5х5, поменять местами строку и столбец, на пересечении которых находится ноль

24.03.2016, 15:22. Показов 3097. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана матрица 5х5, поменять местами строку и столбец, на пересечении которых находится ноль.

C++
1
2
3
4
5
6
7
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
if (a[i][j]==0) {l=i; k=j;}
}
}
вот одна из идей, но я не могу ее додумать. прошу помощи, спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2016, 15:22
Ответы с готовыми решениями:

В квадратной матрице поменять местами строку и столбец, на пересечении которых находится максимальный элемент
Создать масив 5x5. Найти в 3 строке минимальный элемент и поменять местами строку и столбец на...

Из двумерного массива удалить строку и столбец на пересечении которых находится минимальный элемент
Из двумерного массива удалить строку и столбец на пересечении которых находится минимальный элемент

Сформировать одномерный массив. Удалить из него строку и столбец, на пересечении которых находится минималь
Сформировать одномерный массив. Удалить из него строку и столбец, на пересечении которых находится...

Если в матрице встречается ноль, то нужно обнулить столбец и строку, где находится этот ноль
Дан двумерный массив n на m. Если в массиве встречается ноль, то нужно обнулить столбец и строку...

5
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
24.03.2016, 16:46 2
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
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEngine(time(NULL));
    std::uniform_int_distribution<int> randomNum(0, 9);
 
    const int N = 5, M = 5;
    int mas[N][M];
 
    // просто заполняю и вывожу на экран
    std::cout << "Ваша матрица:\n";
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            mas[i][j] = randomNum(randomEngine);
            std::cout << "| "<< std::setw(1) << mas[i][j] << " ";
        }
        std::cout << "|\n";
    }
 
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
 
            if (mas[i][j] == 0) {
                int temp_mas1[N], temp_mas2[M];
                for (int o = 0; o < N; o++)
                    temp_mas1[o] = mas[o][j];
 
                for (int o = 0; o < M; o++)
                    temp_mas2[o] = mas[i][o];
 
                for (int o = 0; o < N; o++)
                    mas[o][j] = temp_mas2[o];
 
                for (int o = 0; o < M; o++)
                    mas[i][o] = temp_mas1[o];
            }
 
        }
    }
 
    std::cout << "\n\nВаша матрица:\n";
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++)
            std::cout << "| " << std::setw(1) << mas[i][j] << " ";
        std::cout << "|\n";
    }
 
    _getch();
    return 0;
}
Вроде работает.
0
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
24.03.2016, 17:13 3
Лучший ответ Сообщение было отмечено OneTwoThreeFour как решение

Решение

Или, скорее, так:
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
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEngine(time(NULL));
    std::uniform_int_distribution<int> randomNum(0, 9);
 
    const int N = 5, M = 5;
    int mas[N][M] = {
    {1, 2, 3, 4, 5},
    {1, 2, 0, 4, 5},
    {1, 6, 8, 3, 9},
    {3, 3, 4, 4, 4},
    {8, 8, 1, 3, 9},
    };
 
    // просто заполняю и вывожу на экран
    std::cout << "Ваша матрица:\n";
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            //mas[i][j] = randomNum(randomEngine);
            std::cout << "| "<< std::setw(1) << mas[i][j] << " ";
        }
        std::cout << "|\n";
    }
 
    bool done = false;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
 
            if (mas[i][j] == 0 && done == false) {
                int temp_mas1[N], temp_mas2[M];
                for (int o = 0; o < N; o++)
                    temp_mas1[o] = mas[o][j];
 
                for (int o = 0; o < M; o++)
                    temp_mas2[o] = mas[i][o];
 
                for (int o = 0; o < M; o++)
                    mas[i][o] = temp_mas1[o];
                
                for (int o = 0; o < N; o++)
                    mas[o][j] = temp_mas2[o];
 
                done = true;
            }
 
        }
    }
 
    std::cout << "\n\nВаша матрица:\n";
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++)
            std::cout << "| " << std::setw(1) << mas[i][j] << " ";
        std::cout << "|\n";
    }
 
    _getch();
    return 0;
}
Картинка для сравнения:
Миниатюры
Дана матрица 5х5, поменять местами строку и столбец, на пересечении которых находится ноль  
1
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
24.03.2016, 17:13 4
Он нашел один раз ноль - заменил строки, и все, больше не будет заменять.
1
0 / 0 / 0
Регистрация: 03.03.2016
Сообщений: 6
24.03.2016, 19:11  [ТС] 5
Для чего нужно std? Можно как-нибудь без него? просто мы еще до этого не дошли по учебной программе.

Добавлено через 1 час 27 минут
Для чего нужно std? Можно как-нибудь без него? просто мы еще до этого не дошли по учебной программе.
0
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
24.03.2016, 21:19 6
OneTwoThreeFour, это стандартное пространство имен, оно всегда вами используется, на самом-то деле. Вы просто пишите перед кодом using namespace std;, и ты так же сделай, убрав в main() все std::.

Добавлено через 2 минуты
А, ну и подключить тебе это надо, если будешь спрашивать:
C++
1
2
3
4
5
6
#include <Windows.h>
#include <conio.h>
#include <ctime>
#include <random>
#include <iomanip>
#include <iostream>
0
24.03.2016, 21:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2016, 21:19
Помогаю со студенческими работами здесь

дана матрица 7х7, поменять местами средний столбец со средней строкой
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { ...

Дана матрица размера M× N. Поменять местами столбец с номером N и первый из столбцов
Дана матрица размера M× N. Поменять местами столбец с номером N и первый из столбцов, содержащих...

Найти максимальный элемент главной диагонали матрицы, поменять местами строку/столбец, где он находится
С клавиатуры вводится матрица чисел P Найти максимальнный элемент главной диагонали Поменять...

Дана матрица размера MxN. Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы.
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее спасибо: Дана...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru