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

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

Войти
Регистрация
Восстановить пароль
 
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
#1

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

04.11.2011, 17:37. Просмотров 834. Ответов 4
Метки нет (Все метки)

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
#include <iostream>
#include <math.h>
#include <conio.h>
#define n 5
#define m 5
using namespace std;
 
void main()
{
int a[n][m];
int i,j,g;
 
for (i=0;i<n;i++)
for (j=0;j<m;j++)
a[i][j]=rand()%8+2;
cout<<"Pervonochalnaya Matrica";
cout<<endl;
cout<<endl;
for (i=0;i<n;i++)
{for (j=0;j<m;j++)
cout<<a[i][j]<<"\t";
cout<<"\n";
cout<<endl;
}
cout<<endl;
cout<<endl;
cout<<endl;
do etogo momenta matrica vvoditsya-vse normalno dalshe ne poluchaetsya, tochnee ne poimu kak mozhno videlit stroki i perevernut ih...
 
for (j=0;j<m;j++)
for (i=0;i<n;i++)
g=a[i][j];
a[i][j]=a[i][5-j];
a[i][5-j]=g;
for (i=0;i<n;i++)
{for (j=0;j<m;j++)
cout<<a[i][j]<<"\t";}
 
_getch();
}
Так не получается. В чём ошибка?

 Комментарий модератора 
Я предупреждал.
Плюс к тому, называйте темы осмысленно!
И заканчивайте писать транслитом, есть специальные сервисы, позволяющие перевести транслит на русский язык.


Дана матрица размера M × N. Вывести ее элементы в следующем по-рядке: первая строка слева направо, вторая строка справа налево, третья строка слева направо, четвертая строка справа налево и т. д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 17:37     Вывести матрицу по спирали
Посмотрите здесь:

как по спирали матрицу вывести? C++
Заполнить квадратную матрицу размером N x N по спирали C++
Заполнить матрицу из центра по спирали C++
C++ Заполнить квадратную матрицу по спирали по часовой стрелке
C++ Вывести содержимое файла в матрицу по спирали против часовой стрелки
C++ Заполните матрицу натуральными числами по спирали и змейкой
C++ Заполнить квадратную матрицу числами по спирали
C++ Заполнить квадратную матрицу по спирали
C++ Заполнить целочисленную квадратную матрицу по спирали
C++ Заполнить матрицу по спирали
Заполнить матрицу по спирали C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.11.2011, 18:52     Вывести матрицу по спирали #2
Цитата Сообщение от Zhalair Посмотреть сообщение
Дана матрица размера M × 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
#include <iostream>
#include <math.h>
#include <conio.h>
#define n 5
#define m 5
using namespace std;
 
void main()
{
int a[n][m];
int i,j,g;
 
for (i=0;i<n;i++)
for (j=0;j<m;j++)
a[i][j]=rand()%8+2;
cout<<"Pervonochalnaya Matrica";
cout<<endl;
cout<<endl;
for (i=0;i<n;i++)
{for (j=0;j<m;j++)
cout<<a[i][j]<<"\t";
cout<<"\n";
cout<<endl;
}
cout<<endl;
cout<<endl;
cout<<endl;
 
for (i=1;i<n;i+=2)
{
    for(j=0; j<m/2; j++)
    {
        g=a[i][j];
        a[i][j]=a[i][m-1-j];
        a[i][m-1-j]=g;
    }
}
 
for (i=0;i<n;i++)
{for (j=0;j<m;j++)
cout<<a[i][j]<<"\t";
cout<<endl;}
 
_getch();
}
Можно сделать нужный вывод на экран, без замены элементов в матрице.
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
04.11.2011, 18:58  [ТС]     Вывести матрицу по спирали #3
Спасибо большое. То что нужно.
Не мог бы ты пожалуйста обьяснить строки с 31 по 35.
такую форму записи я видел в интернете но также не мог осмыслить найденное.

1 почему ты берешь в цикле m\2?
2 ты сохраняешь значение в g. затем ты изменяешь первоначальное. а для чего след. строчка?
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.11.2011, 19:07     Вывести матрицу по спирали #4
Цитата Сообщение от Zhalair Посмотреть сообщение
Не мог бы ты пожалуйста обьяснить строки с 31 по 35.
см комментарии:
C++
1
2
3
4
5
6
7
8
9
for (i=1;i<n;i+=2)// перебираем строки с индексами 1, 3, 5 ... (с нечетными индексами)
{
        for(j=0; j<m/2; j++)// для каждой строки перебираем половину элементов
        {
                g=a[i][j];// элементы a[i][j] это половина элементов строки слева направо
                a[i][j]=a[i][m-1-j];// элементы a[i][m-1-j] это вторая половина элементов строки справа налево
                a[i][m-1-j]=g;
        }// Т.е. в этом цикле идет обмен в строке так: меняется местами самый левый элемент с самым правым, затем меняются второй слева со вторым справа и т.д.
}
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
04.11.2011, 19:09  [ТС]     Вывести матрицу по спирали #5
Все ясно. Спасибо. Вот это долго не доходило до меня...)
Yandex
Объявления
04.11.2011, 19:09     Вывести матрицу по спирали
Ответ Создать тему
Опции темы

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