Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
1

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

22.09.2016, 09:22. Показов 1547. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Есть такое задание:
Дан массив 8х8. Нужно вводить нули и единицы (одна единица в строке). На экран вывести исходный массив и перестроенный путем перемещения стобцов и строк так, чтобы единицы были по диагонали.

Массив создать и вывести я могу, но перемещение строк не умею делать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2016, 09:22
Ответы с готовыми решениями:

В одномерном массиве найти максимум, сумму, переставить элементы согласно условию
1)максимальный по модулю элемент массива 2)сумму элементов массива, расположенных между первым и...

В заданной матрице разместить элементы согласно условию
17.24. Дан двумерный массив. Разместить его строки так, чтобы при их просмотре сверху вниз: б)...

В заданной матрице суммировать элементы указанного столбца согласно условию
Помогите разобраться в решении задачи. Нужно чтобы я ввёл кол-во строк в массиве, затем заполнил...

Все элементы с наибольшим по модулю значением в целочисленной квадратной матрице заменить нулями
Задание: все элементы с наибольшим по модулю значением в целочисленной квадратной матрице порядка N...

21
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
22.09.2016, 09:37 2
А зачем перемещать-то, если там все нули? Переставь в середину единицу в каждой строке.
0
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
22.09.2016, 09:51  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
если там все нули
Я же написал - в каждой строке есть ОДНА единица! В случайном месте. Нужно переставить так, чтобы получилась диагональ из единиц.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.09.2016, 10:00 4
proirp, Так если в итоге нужна диагональ, то зачем что-либо переставлять? Просто обнуляете массив и строите по диагонали линию из единиц.
0
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
22.09.2016, 10:02  [ТС] 5
Цитата Сообщение от GbaLog- Посмотреть сообщение
Просто обнуляете массив
Окей, а если все же рандомно мне нужно? )
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
22.09.2016, 10:02 6
nmcf отметил, что, поскольку больше в каждой строке единиц нет,
то зачем их перемещать.
Заполняем диагональ единицами, а остальное нулями.
Если очень хочется, то можете найти, где были единицы и только их обнулить:
C++
1
2
3
4
5
6
7
8
9
10
11
const int n=8;
for(int i=0;i<n;i++)
{
   for(int j=0;j<n;j++)
      if(x[i][j]==1)
      {
         x[i][j]=0;
         x[i][i]=1;
         break;
      }
}
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.09.2016, 10:09 7
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
#include <iostream>
 
int main()
{
    bool arr[8][8]{};
    
    bool fake;
    for( int i{}; i < 8; ++i )
    {
        for( int j{}; j < 8; ++j )
        {
            std::cin >> fake;
        }
    }
    
    int d{};
    for( int i{}; i < 8; ++i )
    {
        for( int j{}; j < 8; ++j )
        {
            if( i == d && j == d )
                arr[i][j] = 1;
        }
        ++d;
    }
    
    for( int i{}; i < 8; ++i )
    {
        for( int j{}; j < 8; ++j )
        {
            std::cout << arr[i][j] << ' ';
        }
        std::cout << std::endl;
    }
}


Добавлено через 3 минуты
Цитата Сообщение от proirp Посмотреть сообщение
Окей, а если все же рандомно мне нужно? )
Так от заполнения не зависит.
Вот у меня в примере выше массив заполняется пользователем, например. Можно рандомно.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
22.09.2016, 10:20 8
GbaLog-, а зачем нужна переменная d, она же равна i?
И чем плохо такое заполнение диагонали
C++
1
2
for( int j{}; j < 8; ++j )
    arr[j][j] = 1;
???
1
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
22.09.2016, 10:39 9
Если ввести матрицу с единицами только по строкам, например:

0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0

То как не крути (хоть по вертикали, хоть по горизонтали) 3-ий столбец, например, то единицы в столбце будут неразлучны и кочевать будут в другие столбцы при свапе.

Добавлено через 2 минуты
GbaLog-, для чего вы применяете такой синтаксис
Цитата Сообщение от GbaLog- Посмотреть сообщение
C++
1
int d{};
?
0
sourcerer
22.09.2016, 10:55
  #10

Не по теме:

Nishen, для того, чтобы показать, что знает и умеет (а, возможно, и любит) в C++14.

0
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
22.09.2016, 10:58 11
Инициализирует переменную нулем такая конструкция.
0
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
22.09.2016, 11:01  [ТС] 12
Цитата Сообщение от Nishen Посмотреть сообщение
для чего вы применяете такой синтаксис
Можно инициализировать так: int i(10); Это тоже самое, что и i = 10;
i(); все равно, что i = 0;
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.09.2016, 11:19 13
Цитата Сообщение от Nishen Посмотреть сообщение
для чего вы применяете такой синтаксис
Стильно, модно, молодежно, умею, могу, но главное -- это удобно! Так я точно гарантирую, что там мусора не будет.
Цитата Сообщение от zss Посмотреть сообщение
а зачем нужна переменная d, она же равна i?
И чем плохо такое заполнение диагонали
Чет затупил, проснулся просто недавно. Хотя было предположение, что можно по-другому.
А как вы сделали я увидел позже, чем скинул свой вариант.
0
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
22.09.2016, 11:42 14
Цитата Сообщение от GbaLog- Посмотреть сообщение
Так я точно гарантирую, что там мусора не будет.
А в записи
C++
1
i = 0;
может появиться мусор? Или я Вас не так понял?
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.09.2016, 12:12 15
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
//Дан массив 8х8. Нужно вводить нули и единицы (одна единица в строке).
//На экран вывести исходный массив и перестроенный путем перемещения
//стобцов и строк так, чтобы единицы были по диагонали.
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <array>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
const   int     ARR_DIM     {8};
///////////////////////////////////////////////////////////////////////////////
typedef std::array  < int,      ARR_DIM     >   T_row;
typedef std::array  < T_row,    ARR_DIM     >   T_matr;
///////////////////////////////////////////////////////////////////////////////
template < typename T_matr >
void    print_matr( T_matr  const   &   matr )
{
    for( auto   &   row     :   matr )
    {
        for( auto   &   elem    :   row )
        {
            std::cout   <<  elem  <<  ' ';
        }
        std::cout   <<  std::endl;
    }//for
    std::cout   <<  std::endl;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        T_matr  matr{{}};
 
        for( int  i{}; i < ARR_DIM; ++i )
        {
            matr[i][i]   =   1;
        }
 
        print_matr( matr );
 
        std::random_shuffle
            (
                matr.begin  (),
                matr.end    ()
            );
 
        print_matr( matr );
 
        std::sort
            (
                matr.rbegin  (),
                matr.rend    ()
            );
 
        print_matr  ( matr      );
        system      ("pause"    );
    }//for
}
1
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.09.2016, 12:29 16
Цитата Сообщение от Nishen Посмотреть сообщение
А в записи
Нет, но это писать гораздо дольше, чем 2 фигурные скобки.
Вообще, инициализация по-умолчанию очень удобная вещь, имхо.
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
22.09.2016, 12:51 17
Цитата Сообщение от GbaLog- Посмотреть сообщение
Нет, но это писать гораздо дольше, чем 2 фигурные скобки.
Да и потом там инициализация в форме присваивания, а это таки разные операции.
0
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
26.09.2016, 18:42  [ТС] 18
Цитата Сообщение от Mr.X Посмотреть сообщение
C++
Что то это трудно... Я такого вообще не знаю! Мне ж не тупо списать, еще и понять нужно )
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
26.09.2016, 19:07 19
Цитата Сообщение от proirp Посмотреть сообщение
Что то это трудно...
Пошагово спрашивайте, что непонятно.
0
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
26.09.2016, 19:55  [ТС] 20
Цитата Сообщение от GbaLog- Посмотреть сообщение
Вот у меня в примере выше массив заполняется пользователем, например
Все верно! Нужно было, чтобы юзер заполнял.
Не могли бы вы кратко пояснить код? Я только учусь и сходу не могу разобрать.

Добавлено через 1 минуту
Цитата Сообщение от gru74ik Посмотреть сообщение
Пошагово спрашивайте, что непонятно.
По сути, каждое слово )) Ну, не считая комментариев. Выше уважаемый GbaLog дал код. Он намного понятнее для меня )
0
26.09.2016, 19:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2016, 19:55
Помогаю со студенческими работами здесь

Все элементы с наибольшим значением в целочисленной квадратной матрице порядка 10 заменить нулями
Все элементы с наибольшим значением в целочисленной квадратной матрице порядка 10 заменить нулями.

Заполнить заданную область квадратной матрицы единицами, а остальное - нулями
Данная действительно квадратная матрица размерности N. Заполнить матрицу в заштрихованной области...

Заполните массив случайным образом нулями, единицами и двойками по условию
Заполните массив случайным образом нулями, единицами и двойками так, чтобы первая двойка в массиве...

Заменить нулями максимальные элементы массива и единицами остальные
Нужно исправить ошибки и чуток доработать, пожалуйста Даны целые числа а1 … а100. Получить...


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

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