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

как по спирали матрицу вывести?

05.06.2011, 14:01. Показов 2973. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь против часовой стрелки, вывести все ее элементы по спирали: первый столбец, последняя строка, последний столбец в обратном порядке, первая строка в обратном порядке, оставшиеся элементы второго столбца и т. Д.; последним выводится центральный элемент матрицы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2011, 14:01
Ответы с готовыми решениями:

Вывести матрицу по спирали
#include <iostream> #include <math.h> #include <conio.h> #define n 5 #define m 5 using...

Вывести квадратную матрицу на консоль в виде обратной спирали
Мне нужно вывести обратный спираль 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1. Но я получаю нормальный...

Вывести содержимое файла в матрицу по спирали против часовой стрелки
необходимо считывать из файла символ и заносить его в матрицу по спирали против часовой стрелки, не...

Вывести матрицу по спирали в текстовый файл.
Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1;1 и перемещаясь по...

5
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 14:02 2
Вам идея нужна или программа? Если идея - заведите переменную для хранения текущего направления заполнения.
0
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 6
05.06.2011, 14:04  [ТС] 3
Если Вам не трудно, то пожалуста програмкой.
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 14:13 4
https://www.cyberforum.ru/visu... d3621.html
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.06.2011, 16:08 5
Делал эту работу в одной из пунктов лаб, как только начал изучать язык C++. Тогда познания были не очень, думаю код можно оптимизировать и сократить, ну да след. прога работает:

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
//Ïîëó÷èòü öåëî÷èñëåííóþ êâàäðàòíóþ ìàòðèöó ðàçìåðíîñòüþ NõN, 
//ýëåìåíòàìè êîòîðîé ÿâëÿþòñÿ ÷èñëà 1, 2, … N^2, 
//ðàñïîëîæåííûå â ìàòðèöå ïî ñïèðàëè.
#include<iostream>
#include<conio.h>
#include<clocale>
#include<iomanip>
#include<math.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int m[100][100],x=0,y=0,n=1,N,N1,i=1,j=1,nach=1,qwerty;
    cout<<"Ââåäèòå N: ";
    cin>>N;
    N1=N;
    // èíèöèàëèçàöèÿ
    if(N==1) // åñëè ðàçìåð ìàòðèöû 1 - âûâåñòè åãî (èíà÷å N=0)
    cout<<N;
    else {   
    for(;N>1;N--,nach++)
    {
                        if(m[x][y]==0){ // öåíòð (ôèêñ áàãà ñ 0)
                        m[x][y]=n;
                        }
                        if(x==nach-1&&y==nach-1) // äâèæåìñÿ ------------>>>>>
                        {
                        for(i=nach,x=nach,y=nach;i<N;i++)
                        {
                        m[x][y]=n;
                        x++;
                        n++;
                        }
                  }           
            if(x==N&&y==nach) // äâèæåìñÿ âíèç
            {
                    for(j=nach;j<N;j++)
                    {
                    m[x][y]=n;
                    y++;
                    n++;                
                    }
            }
            if(x==N&&y==N) // äâèæåìñÿ <<<<---------------
            {
                          for(i=N;i>nach;i--)
                          {
                          m[x][y]=n;
                          x--;
                          n++;
                          }
            }
            if(x==nach&&y==N) // äâèæåìñÿ ââåðõ, íå äîõîäÿ ïî y 1, 
            {                 // äàáû íå ïðèéòè â ïðîøëóþ òî÷êó
                    for(j=N;j>nach;j--)
                    {
                    m[x][y]=n;
                    y--;
                    n++;
                   }
            } 
    }
    if(n<=99&&n>=9) // ÷òîáû áûëî êðàñèâî (setw)
    qwerty=2;
    else if(n>=99) 
    qwerty=3;
    
    for(x=1,y=1;y<=N1;x++){ // âûâîä íà ýêðàí
    cout<<setw(qwerty)<<m[x][y]<<" ";
    if(x==N1){
              cout<<endl;
              x=0;
              y++;
              }
        }
    }
    getch();
    return 0;
}
0
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 36
16.11.2011, 18:09 6
не подскажете где тут надо изменить что бы было: Дана квадратная матрица A порядка M (M — нечетное число). Начи-ная с элемента A1,1 и перемещаясь по часовой стрелке, вывести все ее эле-менты по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся эле-менты второй строки и т. д.; последним выводится центральный элемент матрицы.
0
16.11.2011, 18:09
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2011, 18:09
Помогаю со студенческими работами здесь

Отсортировать матрицу по убыванию и вывести по часовой стрелке по спирали
В квадратный числовой массив записаны целые числа в диапазоне от A до B (где A и B задаются в...

Заполнить квадратную матрицу порядка N числами от 1 до N^2 по спирали и вывести в текстовый файл
Добрый день, друзья! У меня вот какой вопрос появился. Написал простейшую программу для создания...

Вывести новую матрицу,состоящую из элементов составленных при прохождении матрицы по спирали
Группой не можем решить :( Дана матрица a(n,m). Вывести новую матрицу,состоящую из элементов...

Как вывести элементы массива, двигаясь по спирали из центра?
Ввести квадратный массив нечетного размера и, начиная с центрального элемента, вывести все элементы...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru