Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/33: Рейтинг темы: голосов - 33, средняя оценка - 4.91
Shadow_ZD

Заполнение массива "спиралью"

24.09.2006, 12:56. Показов 6132. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана матрица m на n. m, n вводим с клавиатуры. Нужно ее заполнить двигаясь от центра к углам. Тоесть это примерно так:
Для квадратной матрицы
k k k k k k k
k 2 2 2 2 2 k
k 2 1 1 1 2 k
k 2 1 0 1 2 k
k 2 1 1 1 2 k
k 2 2 2 2 2 k
k k k k k k k
Первым заполняется центр(0), потом элементы "1", элементы "2" и тд...

x. y - координаты центра.
proh - число проходов

Code
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
    for(i = x - 1, j = y - 1; j < proh1; j++)
    {
        fflush(stdin);
        printf("\n Vvod a[%d][%d]>>", i, j);
        scanf("%d", &a[i][j]);
    }
    //printf("\n i = %d; j = %d", i, j);
    for(j = j - 1, i = i + 1; i <= proh2; i++)
    {
        fflush(stdin);
        printf("\n Vvod a[%d][%d]>>", i, j);
        scanf("%d", &a[i][j]);
    }
    //printf("\n savei = %d; i = %d; j = %d",savei, i, j);
    for(j = i-2, i = i - 1; j >=proh3 - pro1; j--)
    {
        fflush(stdin);
        printf("\n Vvod a[%d][%d]>>", i, j);
        scanf("%d", &a[i][j]);
    }
    //printf("\n i = %d; j = %d", i, j);
    for(i = i - 1, j = i - 1; i > proh4; i--)
    {
        fflush(stdin);
        printf("\n Vvod a[%d][%d]>>", i, j);
        scanf("%d", &a[i][j]);
        //break;
    }
    //printf("\n i = %d; j = %d", i, j);
В общем это кусок кода под матрицу 3x3. Второй день не могу переделать его под n x m (хотябы 5 на 5) С ужасом думаю о прямоугольной матрице.
Кто может помогиту пожалуйста. Может у меня в алгоратме проблема...

Не забываем про тэг [code]
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2006, 12:56
Ответы с готовыми решениями:

Заполнение массива спиралью
Заполнение массива спиралью, начиная с левого верхнего угла против часовой стрелки. Короче данный код есть на форуме, который был сделан по...

Заполнение массива 5*5 спиралью
Можете досконально объяснить как заполнить массив 5*5 спиралью???

Заполнение двухмерного массива спиралью
Составить программу которая заполняет квадратную матрицу порядка n натуральными числами 1,2,3....{n}^{2}, записывая их в нее &quot;по...

3
Администратор
 Аватар для mik-a-el
87856 / 53177 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
24.09.2006, 14:38
Попробуй так:
Code
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
#include <stdio.h>
#include <conio.h>
 
const n = 10;
 
template <typename Type>
void Spiral(Type a[n][n], const int n);
 
void main(void)
{
    int a[n][n];
    int i,j;
 
    // Process
    Spiral<int>(a,n);
    printf("\n");
    
    // Output        
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    getch();
}
 
template <typename Type>
void Spiral(Type a[n][n], const int n)
{ 
    int i,j;
    int k=1;
    for (j=0; j<(n/2); j++)
    {
    //top
    for (i=j; i<=n-j-2; i++)
    {
        a[j][i] = k;
        k++;
    }
    //right
    for (i=j; i<=n-j-2; i++)
    {
        a[i][n-j-1] = k;
        k++;
    }
    //down
    for (i=n-j-1; i>=j+1; i--)
    {
        a[n-j-1][i] = k;
        k++;
    }
    //left
    for (i=n-j-1; i>=j+1; i--)
    {
        a[i][j]=k;
        k++;
    }
    }
    if ((n%2) == 1)
        a[n/2][n/2]=k;
    return;
}
0
Bloody angel
18.10.2007, 20:57
а вы немогли б написать не в коде а програме...
0 / 0 / 0
Регистрация: 23.06.2017
Сообщений: 1
04.11.2007, 14:07
mne bi tozhe eto nada bilo : eightstudio@gmail.com
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2007, 14:07
Помогаю со студенческими работами здесь

заполнение двумерного массива спиралью
заполнить двумерный массив спиралью числа должны идти подряд то есть 123456789... и тд.

Заполнение массива двойной спиралью
Дано число N, вывести массив по двойной спирали из нулей и единиц по часовой стрелке Input: 7 Output: 1111111 0000001 1111101 ...

Заполнение двухмерного массива спиралью
Напишите пожалуйста код заполнения двухмерного массива змейкой: 1 2 3 4 5 6 7 24 25 26 27 28 29 8 23 40 41 42 43 30 9 22 39...

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

Заполнение спиралью
Заполнение спиралью Дано число n. Создайте массив A и заполните его по спирали, начиная с числа 0 в центральной клетке A. Спираль выходит...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Семь 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. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru