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

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

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

Author24 — интернет-сервис помощи студентам
Дана матрица 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 - число проходов

Код
    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]
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2006, 12:56
Ответы с готовыми решениями:

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

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

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

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

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

3
Администратор
83618 / 52196 / 244
Регистрация: 10.04.2006
Сообщений: 13,426
24.09.2006, 14:38 2
Попробуй так:
Код
#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 3
а вы немогли б написать не в коде а програме...
0 / 0 / 0
Регистрация: 23.06.2017
Сообщений: 1
04.11.2007, 14:07 4
mne bi tozhe eto nada bilo : eightstudio@gmail.com
0
04.11.2007, 14:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2007, 14:07
Помогаю со студенческими работами здесь

Заполнение двухмерного массива спиралью
Напишите пожалуйста код заполнения двухмерного массива змейкой: 1 2 3 4 5 6 7 24 25 26 27...

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

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

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

Заполнение матрицы спиралью
Здравствуйте! Я знаю, что на форуме есть ответ на данный вопрос, но не понятно, как происходит само...

заполнение матрицы спиралью
Нужно заполнить квадратичную матрицу спиралью, начиная от центра, по такому алгоритму(пример...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru