Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вывод матрицы по спирали / 8 сообщений из 8, страница 1 из 1
23.11.2014, 22:29
    #38814609
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
Есть такая достаточно интересная задачка.Надо вывести массив улиткой размером n*n.
Например дают размерность массива 2.И мы должны вывести матрицу вот так:
1 2
4 3

Я набросал код.Но вот не судьба ,не пашит.Попрошу помощь у гуру.Скажите что делаю не так.Наведите на правильную мысль.
Код: plaintext
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.
#include <iostream>

 using namespace std;

  int main()
    {
		int a[100][100]={0};
		int n,j,i;
		//---------------------
		cin>>n;
        //----------------------
		int t=1;
		i=1;
		int v=0;
		int l=1,c=0,d=0;
		while (t<=n*n)
		{
			//заполняем справа на лево
			for (j=v;j<n;++j)
			{
				a[i][j]=t;
				++t;
				
			}v=j;

			//заполняем с верху вниз
			for (i=1;i<n;++i)
			{
				a[i][j]=t;
				++t;
			}l=i;
			//заполняем с лева на право
			for (j=v;j>=c;--j)
			{
               a[i][j]=t;
				++t;
			}
			//заполняем с низу верх
			for (i=l;i>d;--i)
			{
               a[i][j]=t;
				++t;
			}
			//уменшаем параметры матрицы(что бы числа шли внутрь а не заполнялись поверх тех которы уже заполнены)
			--n;
			++v;
			++l;
			++c;
			++d;
		}

		//вывод массива
		for (i=0;i<n;++i)
		{
			for (j=0;j<n;++j);
			{
				cout<<a[i][j]<<" ";
			} 
			cout<<endl;
		}

		return 0;
  }
...
Рейтинг: 0 / 0
23.11.2014, 22:38
    #38814610
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
исправил совсем мелкие недочеты.Теперь вся проблема в заполнении массива
Код: plaintext
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.
#include <iostream>

 using namespace std;

  int main()
    {
		int a[100][100]={0};
		int n,j,i;
		//---------------------
		cin>>n;
        //----------------------
		int t=1;
		i=1;
		int v=0;
		int l=1,c=0,d=0;
		int f;
		f=n;
		while (t<=n*n)
		{
			//заполняем справа на лево
			for (j=v;j<f;++j)
			{
				a[i][j]=t;
				++t;
				
			}v=j;

			//заполняем с верху вниз
			for (i=1;i<f;++i)
			{
				a[i][j]=t;
				++t;
			}l=i;
			//заполняем с лева на право
			for (j=v;j>=c;--j)
			{
               a[i][j]=t;
				++t;
			}
			//заполняем с низу верх
			for (i=l;i>d;--i)
			{
               a[i][j]=t;
				++t;
			}
			//уменьшаем параметры матрицы(что бы числа шли внутрь а не заполнялись поверх тех которы уже заполнены)
			--f;
			++v;
			++l;
			++c;
			++d;
		}

		//вывод массива
		for (i=0;i<n;++i)
		{
			for (j=0;j<n;++j)
			{
				cout<<a[i][j]<<" ";
			} 
			cout<<endl;
		}

		return 0;
  }
...
Рейтинг: 0 / 0
23.11.2014, 23:19
    #38814632
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
ТЕМА ЗАКРЫТА,ЗАДАЧУ ДОВЕЛ ДО УМА САМ.
...
Рейтинг: 0 / 0
24.11.2014, 12:41
    #38815039
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
У нас принято делиться решением.
...
Рейтинг: 0 / 0
24.11.2014, 13:40
    #38815106
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
mayton,
а вот :)
...
Рейтинг: 0 / 0
24.11.2014, 14:30
    #38815149
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
Хвастун.
...
Рейтинг: 0 / 0
24.11.2014, 14:38
    #38815160
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
ахах, нет :p
...
Рейтинг: 0 / 0
30.11.2014, 19:51
    #38820830
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод матрицы по спирали
mayton,лови мне не жалко)
Код: plaintext
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.
#include <iostream>
#include <stdio.h>

 using namespace std;

  int main()
    {
		
		int a[100][100]={0};
		int n,j,i;
		//---------------------
		cin>>n;
        //----------------------
		int t=1;
		i=0;
		int v=0;
		int s=0;
		int r=1;
		int l=1,c=0,d=0;
		int f;
		f=n;
		while (t<=n*n)
		{
			//заполняем справа на лево
			for (j=s;j<f;++j)
			{
				a[i][j]=t;
				++t;
				
			}v=j-1;
			--j;
			//заполняем с верху вниз
			if (t<=n*n)
			{
			for (i=r;i<f;++i)
			{
				a[i][j]=t;
				++t;
			}l=i-1;
			--i;
			}
			//заполняем с лева на право
			if (t<=n*n)
			{
			for (j=v-1;j>=c;--j)
			{
               a[i][j]=t;
				++t;
			}
			}
			if (t<=n*n)
			{
			//заполняем с низу верх
			for (i=l-1;i>d;--i)
			{
               a[i][j+1]=t;
				++t;
			}
			}
			//уменшаем параметры матрицы(что бы числа шли внутрь а не заполнялись поверх тех которы уже заполнены)
			--f;
			
			++s;
			++r;
			++c;
			++d;
			++i;
		}

		//вывод массива
		for (i=0;i<n;++i)
		{
			for (j=0;j<n;++j)
			{
				cout<<a[i][j]<<" ";
			} 
			cout<<endl;
		}

		return 0;
  }
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вывод матрицы по спирали / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]