0 / 0 / 0
Регистрация: 17.02.2017
Сообщений: 1

Заполнить квадратную матрицу размером n x n, значениями от 1 до 2n по спирали. Перевести с С++

02.06.2017, 13:31. Показов 1290. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие программы: Составьте программу, которая заполняет квадратную матрицу размером n x n , значениями от 1 до 2 n по спирали по часовой стрелке.
Программа:
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
#include <stdio.h>
#include <conio.h>
#define MAXN 100
 
void draw(int A[][MAXN],int d,int row,int col,int v,int n,int r,int l,int t,int b)
{
    A[row][col]=v;
    if(v==n*n)
        return;
    switch(d)   //разбираем направление движения
    {
    case 0: //вправо
        if(col==r)  //если достигли правой границы
        {
            d=1;
            t++;
            row++;
        }
        else
            col++;
        break;
    case 1: //вниз
        if(row==b)  //если достигли нижней границы
        {
            d=2;
            r--;
            col--;
        }
        else
            row++;
        break;
    case 2: //влево
        if(col==l)  //если достигли левой границы
        {
            d=3;
            b--;
            row--;
        }
        else
            col--;
        break;
    case 3: //вверх
        if(row==t)  //если достигли верхней границы
        {
            d=0;
            l++;
            col++;
        }
        else
            row--;
        break;
    }
    draw(A,d,row,col,++v,n,r,l,t,b);
}
 
int main()
{
    int A[MAXN][MAXN];
    int n;
    FILE *in=fopen("input.txt","r");
    if(in==NULL)
    {
        printf("Can't open file input.txt");
        getch();
    }
    FILE *out=fopen("output.txt","w");
 
//  printf("n = ");
    fscanf(in,"%d",&n);
    draw(A,0,0,0,1,n,n-1,0,0,n-1);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            fprintf(out,"%5d",A[i][j]);
        }
        fprintf(out,"\n");
    }
    fclose(in);
    fclose(out);
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2017, 13:31
Ответы с готовыми решениями:

Заполнить квадратную матрицу размером N x N по спирали
Заполнить квадратную матрицу размером N x N по спирали (N – нечётное число). Число 1 ставится в центр матрицы, а затем массив...

Заполнить квадратную матрицу по спирали
Здесь была ссылка куда-то далеко.

Заполнить квадратную матрицу по спирали
Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, …, n2, записывая их в нее «по спирали»...

1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
02.06.2017, 13:58
Лучший ответ Сообщение было отмечено Realizee как решение

Решение

Realizee, данная программа итак написана для С, только поддерживается начиная с С99 и выше.
Вот код для С89. Убрал комментарии с двойными слешами, for-loop initialization, перенёс объявление FILE *out выше.
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
#include <stdio.h>
#include <conio.h>
#define MAXN 100
 
void draw(int A[][MAXN],int d,int row,int col,int v,int n,int r,int l,int t,int b)
{
    A[row][col]=v;
    if(v==n*n)
        return;
    switch(d)
    {
    case 0:
        if(col==r)
        {
            d=1;
            t++;
            row++;
        }
        else
            col++;
        break;
    case 1:
        if(row==b)
        {
            d=2;
            r--;
            col--;
        }
        else
            row++;
        break;
    case 2:
        if(col==l)
        {
            d=3;
            b--;
            row--;
        }
        else
            col--;
        break;
    case 3:
        if(row==t)
        {
            d=0;
            l++;
            col++;
        }
        else
            row--;
        break;
    }
    draw(A,d,row,col,++v,n,r,l,t,b);
}
 
int main(void)
{
    int A[MAXN][MAXN];
    int n, i, j;
    FILE *in=fopen("input.txt","r");
    FILE *out=fopen("output.txt","w");
    if(in==NULL)
    {
        printf("Can't open file input.txt");
        getch();
    }
 
 
    fscanf(in,"%d",&n);
    draw(A,0,0,0,1,n,n-1,0,0,n-1);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            fprintf(out,"%5d",A[i][j]);
        }
        fprintf(out,"\n");
    }
    fclose(in);
    fclose(out);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2017, 13:58
Помогаю со студенческими работами здесь

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

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

Заполнить квадратную матрицу по спирали
Одномерный: В заданном целочисленном массиве R(9) определить индекс наибольшего из нечетных по значению положительных элементов. ...

Заполнить квадратную матрицу по спирали
Квадратную матрицу размерности N ( N - нечетное число) заполнить числами от 1 до N2 по спирали от центра

Заполнить целочисленную квадратную матрицу по спирали
Получить целочисленную квадратную матрицу порядка 2n+1, элементами которой являются числа 1, 2, 3, ... , (2*n + 1), расположенные в...


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

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

Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru