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

Генерация двумерного массива с определённым условием

28.02.2016, 12:35. Показов 2174. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, обращаюсь за помощью тут впервые)
Начал изучение языка С++ и друг подкинул такую задачку..
Надо создать автоматический двумерный массив что бы он заполнялся рандомно числами от 1 до 20, но ноли рисовал строго цепочкой. Я сделал сам массив, его заполнение, рандомное определение первого ноля и вот сейчас думаю как автоматизировать процесс построения траектории, так сказать..

Вот сам код что сделал я лично:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
    const int N = 5;        //строки
    const int M = 10;       //столбцы
    int min = 1;            //минимальное значение в заполнении массива
    int max = 20;           //максимальное значение в заполнении массива
    int map[N][M];          //массив
    int min_arr = 0;        //область определения первого ноля в нулевом столбике
    int max_arr = N-1;      //область определения первого ноля в нулевом столбике
    int check = 0;          //проверка условия поворота
    int direction_low = -1;
    int direction_top = 1;
 
    srand(time(NULL));
 
    //заполнение массива
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            map[i][j] = min + rand() % (max - min + 1);
        }
    }
 
    //случайный выбор стартовой ячейки в первом столбце
    map[min_arr + rand() % (max_arr - min_arr + 1)][0] = 0;
 
    //посик номера строки где сгенерировался ноль
    int ct = 0;
    for (int i = 0; i < N; i++)
    {
        if (map[i][0] == 0)
            {
                break;
            }
            else
            {
                ct++; //номер строки где сгенерировался ноль
            }
    }
 
    //присвоение нуля второму столбику
    int q = 0;
    int w = 1;
    int tmp = 0;
    while (tmp < M)
    {
        if (map[tmp][w - 1] == 0)
        {
            map[q + tmp][w] = 0;
            break;
        }
        tmp++;
    }
    
    cout << ct << endl; //проверка правильности счётчика
/*
    int line = ct;
    int column = 1;
 
    for (int i = 0; i < M; i++)
    {
        if (map[line][column] == 0)
        {
            map[line + 1][column + 1] = 0;
            check = 1;//direction_low + rand() % (direction_top - direction_low + 1);
            if (check == -1 && line < N - 1)
            {
                map[line - 1][column] = 0;
                column++;
                line++;
            }
            else if (check == 0 && column < M - 1)
            {
                map[line][column + 1] = 0;
                line++;
                column++;
            }
            else if (check == 1 && line < N - 1)
            {
                map[line + 1][column] = 0;
                line--;
            }
        }
    }
*/
    //вывод массива на экран
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            if (map[i][j] / 10 == 0)
            {
                cout << "[ " << map[i][j] << "]";
            }
            else
            {
                cout << "[" << map[i][j] << "]";
            }
        }
        cout << endl;
    }
    
    cin.get();
    return 0;
}
Я закомментировал там один цикл, потому что он не правильный, я не могу понять как это реализовать...
Важно что бы размер массива был независим от алгоритма, его в коде нужно будет изменить влюбой момент.
Миниатюры
Генерация двумерного массива с определённым условием  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.02.2016, 12:35
Ответы с готовыми решениями:

Вывод массива с определенным условием
Есть массив, где две строчки и десять столбцов. Первая строка состоит из чисел, кратных пяти, а вторая, возводит их в квадрат,...

Как отсортировать элементы массива в соответствии с определённым условием?
задание такое дан массив например 10 элементов(вообще там не важно может быть и 100 и 200 ) заполняем случайными числами от 1 до 10(от 1 до...

Заполнение двумерного массива по определенным правилам
Всем доброго времени суток!:) Заполните двумерный массив так, как представлено ниже. Написать функцию, вызывающую массив на экран....

1
0 / 0 / 1
Регистрация: 29.01.2016
Сообщений: 3
02.03.2016, 20:24  [ТС]
Спасибо, разобрался, программу сделал и она хорошо работает))
Миниатюры
Генерация двумерного массива с определённым условием  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.03.2016, 20:24
Помогаю со студенческими работами здесь

Заполнение двумерного массива определенным образом
заполнение должно быть произведено по следующему условию 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 class Program { ...

Заполнение двумерного массива с условием
Здравствуйте , помогите придумать алгоритм: заполнить двумерный массив случайными значениями, при заполнении учитывать условие -сумма...

Заполнение двумерного массива 1 и 0 с условием
Добрый день! Не могу справиться с таким зданием: Двумерный массив состоит только из 1 и 0 размером 10 на 10 надо вывести все...

Генерация двумерного массива
Здравствуйте! Не могу построить двумерный массив в лабе по C#. Задание &quot;Выполнить генерацию двумерного массива (матрицы) размерностью...

Удалить строки из двумерного динамического массива, которые удовлетворяют определенным условиям
Подскажите, пожалуйста, как удалить строки из двумерного динамического массива, которые удовлетворяют определенным условиям??


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru