Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
afk_user
0 / 0 / 1
Регистрация: 24.04.2011
Сообщений: 7
1

Заполнение динамической матрицы по спирали из центра

25.11.2011, 18:59. Просмотров 1949. Ответов 2
Метки нет (Все метки)

Дано число n. Создайте массив int A[2*n+1][2*n+1] и заполните его по спирали начиная с числа 0 в центральной клетке A[n][n]. Спираль выходит вверх, далее закручивается против часовой стрелки. Выведите массив на экран, отводя на вывод каждого числа ровно 3 символа. массив динамический.

ссылаясь на инет источники создал примерно начало программы, но подскажите, на верном пути или нет? и еще, объясните что такое коэффициент k, что он делает я примерно понимаю, но не представляю как
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 <iostream.h>
int main()
{
    int m,n,k,chislo;  
        cout<<"razmer massiva"<<endl;
        cin>>n;
        m=2*n+1;
        int **a= new int *[m];
        for (int i=0; i<n; i++);
        { 
            a[i]= new int[m];
        }
k=0;
chislo=0;
while (chislo<=m*m); // пока число не станет равно произведению высоты на ширину
{
    k++;// коэф-т на который будет сужать стенки массива
     for(int j=m/2; j>=k;j--) //заполнение массива снизу вверх из центра
     {          
        if (chislo<=m*n){
        mass[j][k-1]=chislo;
        chislo++;
     }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 18:59
Ответы с готовыми решениями:

Заполнение матрицы по спирали из центра!
Добрый вечер, срочно нужна помощь! Никак не могу сделать задание по...

Заполнение матрицы по спирали (из центра по часовой стрелке)
Пользователь должен ввести размерность матрици!Матрица квадратная!А программа...

Начиная от центра, обойти по спирали все элементы квадратной матрицы
Доброго времени, помогите создать программу на Си/С++ Задание: Начиная от...

Записать текст матрицы от ее центра по спирали против часовой стрелки
Задача записать текст квадратной матрицы размера n(n-нечетное) от центра...

Начиная с центра, обойти по спирали все элементы квадратной матрицы
В целочисленной квадратной матрице nxn (3&lt;=n&lt;=101, n - нечетное) - найти номер...

2
HeqpuJIuM
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 25
29.10.2012, 23:26 2
Цитата Сообщение от afk_user Посмотреть сообщение
Дано число n. Создайте массив int A[2*n+1][2*n+1] и заполните его по спирали начиная с числа 0 в центральной клетке A[n][n]. Спираль выходит вверх, далее закручивается против часовой стрелки. Выведите массив на экран, отводя на вывод каждого числа ровно 3 символа. массив динамический.

ссылаясь на инет источники создал примерно начало программы, но подскажите, на верном пути или нет? и еще, объясните что такое коэффициент k, что он делает я примерно понимаю, но не представляю как
#include <iostream.h>
int main()
{
int m,n,k,chislo;
cout<<"razmer massiva"<<endl;
cin>>n;
m=2*n+1;
int **a= new int *[m];
for (int i=0; i<n; i++);
{
a[i]= new int[m];
}
k=0;
chislo=0;
while (chislo<=m*m); // пока число не станет равно произведению высоты на ширину
{
k++;// коэф-т на который будет сужать стенки массива
for(int j=m/2; j>=k;j--) //заполнение массива снизу вверх из центра
{
if (chislo<=m*n){
mass[j][k-1]=chislo;
chislo++;
}
Уважаемый, сначала научитесь оформлять правильно код, ЧаВо почитайте там, не знаю...
0
AlexSMGr54
4 / 4 / 1
Регистрация: 24.10.2012
Сообщений: 57
01.11.2012, 01:53 3
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
#include <stdio.h>
 
int main() 
{
    int const n=4;
    int i,j,border=1,num=1;
    int A[2*n+1][2*n+1];
    
    i=j=n;
    A[i][j]=num;
    while(border<=n)
    {
        while(i!=n-border && ((i!=n-border)||(j!=n+border)) )
        {i--;num++;A[i][j]=num;}
        while(j!=n-border && ((i!=n-border)||(j!=n+border)) )
        {j--;num++;A[i][j]=num;}
        while(i!=n+border && ((i!=n-border)||(j!=n+border)) )
        {i++;num++;A[i][j]=num;}
        while(j!=n+border && ((i!=n-border)||(j!=n+border)) )
        {j++;num++;A[i][j]=num;}
        if(i==n-border&&j==n+border)
            border++;
    }
    for(i=0;i<2*n+1;i++)
    {
        for(j=0;j<2*n+1;j++)
            printf("%3d",A[i][j]);
        printf("\n");
    }
    return 0;
}
Я старался сделать все максимально кратко и понятно, надеюсь получилось.
Кликните здесь для просмотра всего текста
А вообще за такие вещи платят, я к тому что следующий раз показывайте хоть какие-то наработки.
И научитесь оформлять темы.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 01:53

Заполнение матрицы по спирали
Привет всем, можете помочь пожалуйста: надо придумать алгоритм, написать код на...

Заполнение матрицы по спирали
Здравствуйте! Помогите, пожалуйста, с задачей: Заполнить квадратную матрицу nxn...

Заполнение матрицы по спирали
Напишите программу, которая заполняет матрицу из N строк и M столбцов...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru