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

Выбрав ячейку масива заполнить соседние клетки, числами

25.03.2020, 14:05. Показов 1049. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как заполнить масив как на картинке. Подскажите хотя бы название алгоритма заполнения, а то я даже не знаю с чего начать.
Заранее спасибо.
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2020, 14:05
Ответы с готовыми решениями:

Заполнить клетки рандомными числами без повторов
Есть 2 столбца с низу и сверху по 9 ячеек, нужно рандомно заполнить эти ячейки так что бы они при нажатии на кнопку заполнялисьцифрами от...

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

[КуМир] Заполнить массив случайными числами и определить, есть ли в нем одинаковые соседние элементы
Заполнить массив из 10 элементов случайными числами в интервале и определить, есть ли в нем одинаковые соседние элементы. Пример: ...

5
60 / 45 / 15
Регистрация: 06.03.2018
Сообщений: 202
25.03.2020, 14:12
волновой алгоритм ?
0
0 / 0 / 1
Регистрация: 02.02.2016
Сообщений: 128
25.03.2020, 15:21  [ТС]
В итоге мой вариант получился без углов, но он мне и больше подходит.

x, y координаты клетки от которой нужно посчитать длину. xB, yB координаты клетки до которой нужно посчитать длину.
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
int CalculateH(int x, int y, int xB, int yB) {
    int h = 0;
    if (x < xB) {
        for (int j = x; j < xB; j++) {
            h++;
        }
    }
    else if (x > xB) {
        for (int j = x; j > xB; j--) {
            h++;
        }
    }
 
    if (y < yB) {
        for (int i = y; i < yB; i++) {
            h++;
        }
    }
    else if (y > yB) {
        for (int i = y; i > yB; i--) {
            h++;
        }
    }
    return h;
}
 
int main()
{
      //Так заполняю весь массив вызывая для каждой клетки проверку. 
      for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            arr[i][j] = CalculateH(i, j, 2, 5);
        }
    }
}
Изображения
 
0
0 / 0 / 1
Регистрация: 02.02.2016
Сообщений: 128
25.03.2020, 15:26  [ТС]
Правда все же мое решение совсем другое, но оно для моей финальной задачи подходит лучше.

Уверен у этого всего есть красивая математическая функция или просто более лаконичное решение. Может кто то поделиться решением именно изначальной задачи?
0
60 / 45 / 15
Регистрация: 06.03.2018
Сообщений: 202
25.03.2020, 16:25
вот с углами
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
#include <iostream>
 
using namespace std;
 
using rect = struct { 
    int left; 
    int top; 
    int right; 
    int bottom; 
    void increase(size_t max_x=8, size_t max_y=8)
    {
        if (left > 0) left--;
        if (top > 0) top--;
        if (right < max_x-1) right++;
        if (bottom < max_y-1) bottom++;
    }
};
 
int main()
{
    const size_t xr = 8;
    const size_t yr = 8;
    int board[xr][yr];
    for (size_t x = 0; x < xr; ++x)
        for (size_t y = 0; y < yr; ++y)
            board[x][y] = -1;
    size_t pos_x = 0, pos_y = 0;
    cout << "Input coordinates :" << endl;
    cout <<  "[1..8] Y= "; 
    cin >> pos_x;
    cout << endl << "(a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8) X= ";
    cin >> pos_y; 
    cout << endl;
    if (pos_x > 8 || pos_y > 8 || pos_x<1 || pos_y<1)
    {
        cout << "Invalid input!" << endl;
    }
    else
    {
        int i = 0;
        board[--pos_x][--pos_y] = i++;
        rect r{ pos_x, pos_y, pos_x, pos_y };
        while (r.left > 0 || r.top > 0 || r.right < xr-1 || r.bottom < yr-1)
        {
            r.increase();
            for (rsize_t x = r.left; x <= r.right; ++x)
            {
                if(board[x][r.top] < 0) board[x][r.top] = i;
                if (board[x][r.bottom]<0) board[x][r.bottom] = i;
            }
            for (rsize_t y = r.top+1; y <= r.bottom-1; ++y)
            {
                if (board[r.left][y] < 0) board[r.left][y] = i;
                if (board[r.right][y] < 0) board[r.right][y] = i;
            }
            i++;
        }
        for (size_t x = 0; x < xr; ++x)
        {
            for (size_t y = 0; y < yr; ++y)
                cout << " " << board[x][y] << " ";
            cout << " " << endl;
        }
    }
    system("pause");
    return 0;
}
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
25.03.2020, 17:40
C++
1
2
3
    for (int y = 0; y < 8; ++y)
        for (int x = 0; x < 8; ++x)
            board[y][x] = std::max(std::abs(y - king_y), std::abs(x - king_x));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2020, 17:40
Помогаю со студенческими работами здесь

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

Окрасить ячейку через поиск циклом, захватив соседние ячейки
Здравствуйте, уважаемые гуру программирования. Пишу большой макрос с автоматизацией кучи действий пользователя одной кнопкой, но суть...

Заполнить клетки [A1], [A2], [A3], . элементы последовательности
aN=3:2*aN-1*aN-1 где a1=1 и N=2,3,4,....,10

Excel : Выделенную ячейку скопировать параллельно по строке через две соседние ячейки вправо
12. Excel : Выделенную ячейку скопировать параллельно по строке через две соседние ячейки вправо.

VBA SQL заполнить пустые клетки в таблице
Добрый день, форумчане! Есть примерно такая таблица: T_lichni_smetki tabn| izdelie| porn| suma 0835| 7577| 80455| 1.24 ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru