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

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

17.10.2017, 21:36. Показов 1426. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вводится n и Нужно разбить числа от 1 до N^2 на массив (не объявляя его) размером n*n , где сумма элементов строк будет равна.
Например, при n=3 вывод программы:
1 5 9
2 6 7
3 4 8
при n=4 вывод программы:
1 6 11 16
2 7 12 17
3 8 9 14
4 5 10 15
при n=5 вывод программы:
1 7 13 19 25
2 8 14 20 21
3 9 15 16 22
4 10 11 17 23
5 6 12 18 24
Я ужасно с этим запарилась, потому что не понимаю как это сделать и не знаю с++ почти. На первой лабе простой калькулятор, на второй это. Неужели это так просто?
Помогите , пожалуйста!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2017, 21:36
Ответы с готовыми решениями:

Заполнить заданную матрицу случайными числами в указанном интервале
Помогите написать, пожалуйста 2 программы на C++. Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале и вывести...

Вывести на консоль заданную квадратную матрицу в указанном порядке
2.Дана Матрица NxN(N четно) распечатать ее в указанном порядке. Вот тут довольно интересно. Была Матрица 1 2 3 4 5 6 7 8 9 10 11...

Массив: Получить новую матрицу, переставляя ее блоки размера в порядке, указанном на рисунке.
Помогите решить задачу на С++: Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера в...

18
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 208
Записей в блоге: 15
18.10.2017, 00:12
yul321, а вас там обучают программированию или только алгоритмы изучаете математические? Это можно за 10 минут написать на любом ЯП, если знать его основы, цигры, операторы.
0
0 / 0 / 0
Регистрация: 17.10.2017
Сообщений: 2
18.10.2017, 10:25  [ТС]
Это считай первый раз, когда я пишу на с++ ( и я могу многого не знать ) , но я и просто не знаю как найти принцип решения. Не могли бы вы помочь?
0
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 208
Записей в блоге: 15
18.10.2017, 16:06
yul321, я тоже новичок. А что вы имеете в виду не объявляя массив? Не совсем понимаю задачу И вирус на меня напал..... уже почти 8 часов сканирую.... А вы на программиста учитесь?
0
 Аватар для Антон1985
138 / 101 / 102
Регистрация: 03.02.2014
Сообщений: 427
18.10.2017, 22:50
yul321, а как определяются числа? Рандомно?
0
9 / 9 / 4
Регистрация: 19.08.2013
Сообщений: 31
18.10.2017, 22:55
У тебя ошибка в примере при n = 4, там не 17, а 13 должно быть.
Вот программа. Алгоритм мудрёный немного, поэтому внимательно проанализируй свои матрицы из примера, как они изменяются.
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
#include <iostream>
 
int main()
{
    using namespace std;
    cout << "Enter n: ";
    int n;
    cin >> n;
    int count = n; // лічыльнік для праверкі, калі трэба дабаўляць 1, а не add, пачыная з 2 радка
    int add = n + 1; // розніца паміж суседнімі элементамі
    
    int element = 1;
    for (int i = 1; i <= n; i++, element += add) // першы радок заканамерны
        cout << element << ' ';
    cout << endl;
    for (int row = 2/*другі радок*/; row <= n; row++) // астатнія радкі з выбара альбо element + add, альбо element + 1
    {
        for (int i = 1; i <= n; i++)
        {
            if ( i == 1)
                element = row; // першы сімвал у радку
            else if (i == count)
                element++; // элемент, які змяняецца на 1, а не add
            else
                element += add; // элемент, які змяняецца па заканамернасці
            cout << element << ' ';
        }
        cout << endl;
        count--; // памяншаем лічыльнік у адпаведнасці з заканамернасцю на element + 1
    }
 
    return 0;
}
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
18.10.2017, 23:12
Цитата Сообщение от Anitsirh Посмотреть сообщение
там не 17, а 13 должно быть.
Да, по видимому, косячок'с. Но ТС мог бы, конечно, и порядок изменения указать, чтобы голову не ломать.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
18.10.2017, 23:30
yul321, почитай что такое магический квадрат https://ru.wikipedia.org/wiki/Магический_квадрат

Добавлено через 6 минут
Цитата Сообщение от yul321 Посмотреть сообщение
Например, при n=3 вывод программы:
сумма должна быть 15
вот я на бумажке накидал такой квадрат
1 6 8
2 9 4
3 5 7
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
18.10.2017, 23:47
Принцип заполнения квадрата у него вполне ясен, за исключением указанной позиции, где, видимо опечатка.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
18.10.2017, 23:59
Цитата Сообщение от мановар Посмотреть сообщение
у него
это ты про yul321?
там ясно написано
Цитата Сообщение от yul321 Посмотреть сообщение
запарилась
и принцип не ясен, есть примеры
а вот если вычислить сумму строки из формулы S=n*(n2+1)/2 то все становится проще

сумму вычислили а далее можно тупым перебором подогнать
Цитата Сообщение от мановар Посмотреть сообщение
за исключением указанной позиции, где, видимо опечатка.
да не видимо, а опечатка у квадрата со стороной 4 не может быть числа 17 это больше чем 42
0
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 208
Записей в блоге: 15
19.10.2017, 00:06
Сразу скажу, почему в этой теме пишу - у меня нет прав писать тут: Вирус устанавливает mssecsvc.exe

Скажите пожалуйста. У меня два жестких диска. Есть на НЕсистемном (с него не бутюсь) вымогатель в C:\Windows\mssecsvс.exe . Бутюсь с D:\ . Вымогатель не менее опасен, если сравнивать с ситуацией, если бы он был на системном диске?
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
19.10.2017, 00:08
Цитата Сообщение от ValeryS Посмотреть сообщение
и принцип не ясен
Мне вот ясен, видимо как и Anitsirh.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
19.10.2017, 00:12
вот кстати и алгоритм, но он для магического квадрата, а не полумагического как у ТС, но я думаю хуже не будет
https://ru.wikihow.com/решить-магический-квадрат

Добавлено через 3 минуты
Цитата Сообщение от мановар Посмотреть сообщение
Мне вот ясен,
так объясни а то
Цитата Сообщение от yul321 Посмотреть сообщение
Я ужасно с этим запарилась, потому что не понимаю как это сделать
0
12 / 13 / 2
Регистрация: 11.01.2015
Сообщений: 208
Записей в блоге: 15
19.10.2017, 00:31
давайте начнём с суммы элементов массива )
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
19.10.2017, 00:45
n = 3.
1. С первым столбцом все ясно.
2. Второй получаем суммированием элемента первого столбца с (n + 1), за исключением последней строки, там просто + 1 к элементу столбца.
3. Третий получаем так же, только строка где +1 поднимается выше
1 (3 + 1 + 1 = 5) 5 (5 + 3 + 1 = 9) 9
2 (3 + 1 + 2 = 6) 6 (6 + 1 = 7) 7
3 (3 + 1 = 4) 4 (4 + 3 + 1 = 8) 8

n = 5

1 (5 + 1 + 1 = 7) 7 (5 + 1 + 7 = 13) 13 (5 + 1 + 13 = 19) 19 (5 + 1 + 19 = 25) 25
2 (5 + 1 + 2 = 8) 8 (5 + 1 + 8 = 14) 14 (5 + 1 + 14 = 20) 20 (20 + 1 = 21) 21
3 (5 + 1 + 3 = 9) 9 (5 + 1 + 9 = 15) 15 (15 + 1 = 16) 16 (5 + 1 + 16 = 22) 22
4 (5 + 1 + 4 = 10) 10 (10 + 1 = 11) 11 (5 + 1 + 11 = 17) 17 (5 + 1 + 17 = 23) 23
5 (5 + 1 = 6) 6 (5 + 1 + 6 = 12) 12 (5 + 1 + 12 = 18) 18 (5 + 1 + 18 = 24) 24

как то так, сдвигается строка где +1 вверх. Наверное, алгоритм такой, по крайней мере я понял так.

Добавлено через 9 минут
спокойно для n = 6 по данному алгоритму строю

1 8 15 22 29 36 (111)
2 9 16 23 30 31 (111)
3 10 17 24 25 32 (111)
4 11 18 19 26 33 (111)
5 12 13 20 27 34 (111)
6 7 14 21 28 35 (111)
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
19.10.2017, 01:12
Цитата Сообщение от мановар Посмотреть сообщение
Второй получаем суммированием элемента первого столбца с (n + 1), за исключением последней строки, там просто + 1 к элементу столбца.
почему?
Цитата Сообщение от мановар Посмотреть сообщение
Третий получаем так же, только строка где +1 поднимается выше
опять же почему?
ты описал то что ТС вывел в виде таблиц, а математическое обоснование?
Цитата Сообщение от мановар Посмотреть сообщение
спокойно для n = 6 по данному алгоритму строю
есть уверенность что если я введу 100600 эта закономерность сохранится, или может там n+2 появится?
0
9 / 9 / 4
Регистрация: 19.08.2013
Сообщений: 31
19.10.2017, 06:38
Цитата Сообщение от ValeryS Посмотреть сообщение
а вот если вычислить сумму строки из формулы S=n*(n2+1)/2 то все становится проще
сумму вычислили а далее можно тупым перебором подогнать
Каким образом ты хочешь подогнать перебором, если условие "не объявлять массив"?
Цитата Сообщение от ValeryS Посмотреть сообщение
вот я на бумажке накидал такой квадрат
1 6 8
2 9 4
3 5 7
У автора примеры лучше:
1) там явная законамерность.
2) побочная диагональ изменяется снизу вверх ровно на n (что просто красиво).

И элементы в данных квадратах нарушают закономерность только при переходе на следующий элемент от побочной диагонали.
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
19.10.2017, 07:09
Цитата Сообщение от ValeryS Посмотреть сообщение
почему?
Цитата Сообщение от ValeryS Посмотреть сообщение
опять же почему?
ты описал то что ТС вывел в виде таблиц, а математическое обоснование?
С математическими обоснованиями и выкладками в другой раздел. Закономерность найдена, согласно предоставленному условию (может ТСу и алгоритм на занятиях давали), программа так же составлена. Задание считаю выполнено.
0
9 / 9 / 4
Регистрация: 19.08.2013
Сообщений: 31
19.10.2017, 09:17
Алгоритм заполнения матрицы такой (не тот, что в коде[горизонтальное заполнение], а в целом[вертикальное заполнение по порядку]):
1) Заполняем по порядку от 1 до n^2 (1, 2, 3, 4, ...).
2) Заполняем столбцы полностью сверху вниз.
3) При полном заполнении столбца (достижении элемента на побочной диагонали), мы переходим в соседний столбец.
4) При переходе в соседний столбец, мы начинаем его заполнять не с самого верхнего элемета, а с соседнего правого для последнего заполненого элемента в предыдущем (отсюда получаем, что на один столбец у нас уходит n+1 элементов [n-строк и 1 элемент при переходе в соседний столбец, так как заполнение теперь будет не с первого элемента столбца).
5) Когда мы продолжаем заполнять столбец с середины и достигаем конца, мы вместо перехода в следующий столбец, возвращаемся к самому верхнему элементу текущего столбца и продолжаем его заполнять (для выполнения условия "2").
6) Полное заполнение столбца совпадает с достижение элемента побочной диагонали (соответственно возвращается к пункту "3").
7) Продолжаем данный цикл до полного заполнения матрицы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2017, 09:17
Помогаю со студенческими работами здесь

Заполнить заданную матрицу всевозможными комбинациями в порядке возрастания
Имеется n позиций и m цифр.Нужно заполнить матрицу m^n x n всевозможными комбинациями в порядке возрастания(цифры от 0 до m-1). ...

Создать новую матрицу, скопировав её из исходной; заполнить 30% новой матрицы нулями в случайном порядке
Задание 3 скопировать 2-мерный массив и 30% чисел в нем заполнить нулями (в случайном порядке)

Заполнить матрицу числами натурального ряда в порядке их возрастания, начиная с единицы, перемежающихся нулями
составить программу, решающую следующую задачу:Дано два натуральных числа n и m. Сформировать двумерный массив A, заполнив его числами...

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

Переставить элементы массива в указанном порядке
Здравствуйте есть задача. 1.1. Даны действительные числа a1, a2,..., a20. Получить a20,a11,a19,a10,...,a10,a1. Прошу помочь с...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru