powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вывод матрицы по спирали
8 сообщений из 8, страница 1 из 1
Вывод матрицы по спирали
    #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
Вывод матрицы по спирали
    #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
Вывод матрицы по спирали
    #38814632
Фотография ванмомас намбаван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТЕМА ЗАКРЫТА,ЗАДАЧУ ДОВЕЛ ДО УМА САМ.
...
Рейтинг: 0 / 0
Вывод матрицы по спирали
    #38815039
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас принято делиться решением.
...
Рейтинг: 0 / 0
Вывод матрицы по спирали
    #38815106
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
а вот :)
...
Рейтинг: 0 / 0
Вывод матрицы по спирали
    #38815149
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хвастун.
...
Рейтинг: 0 / 0
Вывод матрицы по спирали
    #38815160
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ахах, нет :p
...
Рейтинг: 0 / 0
Вывод матрицы по спирали
    #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
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вывод матрицы по спирали
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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