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

Заполнить массив 5х5 цифрами как на прикрепленном изображении

05.03.2024, 13:55. Показов 834. Ответов 11

Студворк — интернет-сервис помощи студентам
Добрый день.
Нужно заполнить массив 5х5 цифрами от 1 до 25, как на прикрепленном изображении.
С плюсами пока на "вы", поэтому попрошу добавить комментарии к основным действиям.
Спасибо.
Изображения
 
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2024, 13:55
Ответы с готовыми решениями:

Заполнить двумерный массив размером n x m так, как представлено в таблице для 5х5
Заполнить двумерный массив размером n x m так, как представлено в таблице для 5х5

Как заполнить массив буквами и цифрами
как заполнить двумерный массив буквами и цифрами

Как заполнить массив цифрами и знаками арифметических операций?
Как заполнить массив цифрами и знаками арифметических операций („+‟, „-„, „*‟, „/‟, „=‟)?

11
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
05.03.2024, 14:37
Попробовал что то новенькое
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
#include <iostream>
const int N = 5;
int m[N][N];
int rc = N-1, cc = N-1; // обрабатываемая ячейка
int cnt = 1; // счетчик
 
void fillDiagR(int r, int c){
    do{
        m[r++][c--] = cnt++;
    }while(c > -1);
    --cc; 
}
void fillDiagC(int r, int c){
    do{
        m[r++][c--] = cnt++;
    }while(r < N);
    --rc; 
}
 
int main()
{
    while(rc > 0)
        fillDiagC(rc, cc);
    while(cc > -1)
        fillDiagR(rc, cc);
        
    for(int r = 0; r < N; ++r){
        for(int c = 0; c < N; ++c)
            std::cout << m[r][c] << ' ';
        std::cout << std::endl;
    }
}
1
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
05.03.2024, 14:44
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <string.h>
const int N=5;
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
int main() {
    int a[N][N]={};
    int k=25;
 
    for(int i=0;i<2*N;i++)
    {
        for(int j=max(0,i-N+1);j<min(i+1,N);j++)
            a[i-j][j]=k--;
    }
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
            printf("%3d",a[i][j]);
        puts("");
    }
    getchar();
    return 0;
}
2
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
05.03.2024, 17:20
Лучший ответ Сообщение было отмечено miragesofshadow как решение

Решение

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>
using namespace std;
 
int main()
{
  const int n = 5;
  int arr[n][n], num1 = 0, num2 = n * n + 1, i, j;
 
  // заполняем массив
  for (i = 0; i < n; i++)
    for (j = 0; j <= i; j++)
    {
      arr[n - 1 - i + j][n - 1 - j] = ++num1;  // числа с 1 по 15
      // условие if можно полностью убрать (и далее, но не обязательно, поставить его перед предыдущей строкой)
      if (i < n - 1)  // чтобы лишний раз не заполнять побочную диагональ (числа с 11 по 15)
        arr[i - j][j] = --num2;  // остальные числа (с 16 по 25)
    }
 
  // выводим массив
  for (i = 0; i < n; i++)
  {
    for (j = 0; j < n; j++)
      cout << arr[i][j] << "\t";
    cout << "\n";
  }
 
  system("pause");
  return 0;
}
Code
1
2
3
4
5
6
25      23      20      16      11
24      21      17      12      7
22      18      13      8       4
19      14      9       5       2
15      10      6       3       1
Для продолжения нажмите любую клавишу . . .
2
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
05.03.2024, 17:37
Походу пробовать различные подходы - довольно полезно.
Мой код кажется самым простым и логичным, хоть и немного необычным.
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
05.03.2024, 18:03
Главное, чтобы ТС не запутался во всех этих ++ и --, включая прочие "хитрые" индексы. Если, конечно, он будет разбираться в коде.
Мне же такие задачи позволяют (я надеюсь) немного отдалить наступление деменции.
2
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
05.03.2024, 18:51
Цитата Сообщение от gunslinger Посмотреть сообщение
такие задачи позволяют (я надеюсь) немного отдалить наступление деменции.
Ох, твои бы слова да Дарвину в уши
Разве не умные первыми уходят из реальности ?

Цитата Сообщение от gunslinger Посмотреть сообщение
Главное, чтобы ТС не запутался во всех этих ++ и --, включая прочие "хитрые" индексы. Если, конечно, он будет разбираться в коде.
Хочется верить что ТС разберет все предоставленные варианты

Добавлено через 2 минуты
Цитата Сообщение от gunslinger Посмотреть сообщение
хитрые" индексы
Ничего там хитрого нету (в моем коде).
Есть два прохода, по правой вертикли матрицы, и по верхней горизонтали.
И в первом и во втором проходе используется тот же цикл прохода по диагонали матрицы.

Добавлено через 4 минуты
А походу сложных условий в циклах, что бы все сделать за один проход, вспоминаются наши и Волги условия, в которых нам самим с трудом разбираться.
В продакшене такого делать нельзя. А значит и учить такому тоже.
Единственное нам оправдание, что мы тоже тут учимся.
Это как бы практикум без преподавателей

p.s. может завтра закину сюда пару ссылок на подобные темы, я там такие помню условия
2
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
05.03.2024, 19:58
C++
1
2
3
4
5
6
7
8
    std::vector<std::vector<int>> v2
    {
        {25,      23,      20,      16,      11},
        {24,      21,      17,     12,      7},
        {22,      18,      13,      8,       4},
        {19,      14,      9,       5,       2},
        {15,      10,      6,       3,       1}
    };
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
05.03.2024, 20:45
Цитата Сообщение от Folian Посмотреть сообщение
std::vector<std::vector<int>> v2
Шикарно
Кликните здесь для просмотра всего текста




Добавлено через 57 секунд
Folian, небось скопировал у gunslinger, ?

Добавлено через 3 минуты
Нужно еще варианты решений этой задачи.
Зовем повара и форумчанина ник который мне не запомнить но у него проблемы с компьютерной этикой (по крайней мере это проявилось со мной).

Добавлено через 1 минуту
Цитата Сообщение от Folian Посмотреть сообщение
v2
А почему v2 ?
1
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
05.03.2024, 21:02
Цитата Сообщение от SmallEvil Посмотреть сообщение
Folian, небось скопировал у gunslinger, ?
Так и было.
Цитата Сообщение от SmallEvil Посмотреть сообщение
А почему v2 ?
Ежли б от него вектор брал - было б v3. //раньше было иначе; v -> vv -> vvv...etc (раньше было лучше)
Теперь, думаю, понятно. Хотя, какая вообще разница??
0
 Аватар для analogov net
2524 / 1123 / 493
Регистрация: 17.11.2018
Сообщений: 2,832
05.03.2024, 21:07
Цитата Сообщение от SmallEvil Посмотреть сообщение
Нужно еще варианты решений этой задачи.
например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iomanip>
 
int main() {
    const int N = 5;
    int matr[N][N], value = N * N;
 
    for (int k = 0; k < N * 2 - 1; k++) {
        for (int i = (k < N) ? k : N - 1, j = (k < N) ? 0 : k - N + 1; i >= 0 && j < N; i--, j++) {
            matr[i][j] = value--;
        }
    }
 
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++)
            std::cout << std::setw(3) << matr[i][j];
        std::cout << std::endl;
    }
}
Добавлено через 1 минуту
Code
1
2
3
4
5
 25 23 20 16 11
 24 21 17 12  7
 22 18 13  8  4
 19 14  9  5  2
 15 10  6  3  1
3
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
05.03.2024, 21:33
Цитата Сообщение от analogov net Посмотреть сообщение
C++
1
for (int i = (k < N) ? k : N - 1, j = (k < N) ? 0 : k - N + 1; i >= 0 && j < N; i--, j++)
Мне очень нравятся такие штуки, с точки зрения эквилибристики)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2024, 21:33
Помогаю со студенческими работами здесь

Заполнить целочисленный массив размером 5х5
Уважаемые форумчане, помогите пожалуйста с задачей. Целочисленой массив размером 5х5 элементов заполнить так: 0 0 0 0 0 0 1 0 0 0 ...

Заполнить массив 5х5 следующим образом:
Помогите пожалуйста написать код

Дан двумерный массив 5х5. Заполнить его
#include &lt;iostream&gt; using namespace std; int main() { const unsigned int DIM1 = 5; const unsigned int DIM2 = 5; ...

Заполнить массив размером 5х5 простыми числами
в название всё указано помогите пожалуйста :)

Заполнить массив 5х5 единицами и нулями в случайном порядке
заполнить массив 5х5 единицами и нулями в случайном порядке и проверить существует ли связь через единицы от верхней строки массива до...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru