Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
йцукенг
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 6
#1

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

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

Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента A1,1 и перемещаясь против часовой стрелки, вывести все ее элементы по спирали: первый столбец, последняя строка, последний столбец в обратном порядке, первая строка в обратном порядке, оставшиеся элементы второго столбца и т. Д.; последним выводится центральный элемент матрицы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 14:01     как по спирали матрицу вывести?
Посмотрите здесь:

Вывести матрицу по спирали - C++
#include <iostream> #include <math.h> #include <conio.h> #define n 5 #define m 5 using namespace std; void main() { int...

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

Заполнить матрицу по спирали - C++
Как заполнить одномерный массив c++ по спирали?

Заполнить матрицу по спирали - C++
Заполнить матрицу, от центра по спирали: вниз - влево - вверх - вправо. Размерность матрицы должна вводиться при выполнении программы.

Записать матрицу по спирали - C++
Число 1 ставится в центр матрицы, а затем массив заполняется по спирали против часовой стрелки значениями по возрастанию я сам...

Заполнить матрицу из центра по спирали - C++
Пользователь должен ввести размерность матрици!Матрица квадратная!А программа должна заполнить её числами по порядку 1 2 3 4 5 .... (из...

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

Заполнить квадратную матрицу числами по спирали - C++
Задача B. Спираль В этой задаче вам необходимо вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N2 по спирали...

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

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

Запись в матрицу по спирали (ввод чисел с клавиатуры) - C++
Нужно ввести n чисел с клавиатуры они записываются в матрицу по спирали из центра (не важно против часовой или по часовой) и если кол-во...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iama
1249 / 974 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 14:02     как по спирали матрицу вывести? #2
Вам идея нужна или программа? Если идея - заведите переменную для хранения текущего направления заполнения.
йцукенг
0 / 0 / 0
Регистрация: 21.05.2011
Сообщений: 6
05.06.2011, 14:04  [ТС]     как по спирали матрицу вывести? #3
Если Вам не трудно, то пожалуста програмкой.
iama
1249 / 974 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 14:13     как по спирали матрицу вывести? #4
Заполнение матрицы змейкой (по спирали)
MrGluck
Модератор
Эксперт CЭксперт С++
7142 / 4308 / 628
Регистрация: 29.11.2010
Сообщений: 11,699
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;
}
Janik_01
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 36
16.11.2011, 18:09     как по спирали матрицу вывести? #6
не подскажете где тут надо изменить что бы было: Дана квадратная матрица A порядка M (M — нечетное число). Начи-ная с элемента A1,1 и перемещаясь по часовой стрелке, вывести все ее эле-менты по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся эле-менты второй строки и т. д.; последним выводится центральный элемент матрицы.
Yandex
Объявления
16.11.2011, 18:09     как по спирали матрицу вывести?
Ответ Создать тему
Опции темы

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