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

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

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

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

04.11.2011, 17:37. Просмотров 873. Ответов 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. Вывести ее элементы в следующем по-рядке: первая строка слева направо, вторая строка справа налево, третья строка слева направо, четвертая строка справа налево и т. д.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести матрицу по спирали (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4670 / 2496 / 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();
}
Можно сделать нужный вывод на экран, без замены элементов в матрице.
0
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
04.11.2011, 18:58  [ТС] #3
Спасибо большое. То что нужно.
Не мог бы ты пожалуйста обьяснить строки с 31 по 35.
такую форму записи я видел в интернете но также не мог осмыслить найденное.

1 почему ты берешь в цикле m\2?
2 ты сохраняешь значение в g. затем ты изменяешь первоначальное. а для чего след. строчка?
0
valeriikozlov
Эксперт C++
4670 / 2496 / 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;
        }// Т.е. в этом цикле идет обмен в строке так: меняется местами самый левый элемент с самым правым, затем меняются второй слева со вторым справа и т.д.
}
1
Zhalair
1 / 1 / 0
Регистрация: 04.11.2011
Сообщений: 40
04.11.2011, 19:09  [ТС] #5
Все ясно. Спасибо. Вот это долго не доходило до меня...)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2011, 19:09
Привет! Вот еще темы с ответами:

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

Заполнить матрицу nxm по спирали - C++
Заполнить матрицу nxm Помогите с кодом

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.11.2011, 19:09
Ответ Создать тему
Опции темы

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