Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 23:08   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Вывод массива по спирали

Доброго времени суток уважаемые эксперты
Составил небольшую программу, но не могу её закончить. Я не очень понимаю как происходят сдвиги элементов и т.д. и т.п.
Необходимо вывести массив по спирали, в принципе можно не писать за меня алгоритм сортировки, а просто чётко и толково объяснить как это работает. За ранее благодарен за любую помощь.

Код:
#pragma hdrstop
#pragma argsused

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>

void main()
{
	int i, j, Line, Column, Mass[100][100];

	clrscr();

	printf("Введите размер линии: ");
	scanf("%d", &Line);
	printf("Введите размер колоны: ");
	scanf("%d", &Column);

	printf("\n");

	if (Line <= 0 || Line > 100 && Column <= 0 || Column > 100) {
		textcolor(12);
		cprintf("Error: Вы не правильно ввели размер матрицы");
		sleep(3);
		return;
	}

	int Select;

	printf("1: Для ввода элементов с клавиатуры\n");
	printf("2: Для ввода Random'мных элементов\n");
	printf("3: Выход из программы\n");

	printf("\nEnter: "); scanf("%d", &Select);

	switch (Select)
	{
		case 1:
		{
                    printf("\n");
		    for (i = 0; i < Line; i++)
		    {
		        for (j = 0; j < Column; j++)
			{
		            printf("Mass[%d][%d]: ", i, j);
                            scanf("%d", &Mass[i][j]);
			}
		    }
		}
		break;

		case 2:
		{
			for (i = 0; i < Line; i++)
			{
				for (j = 0; j < Column; j++)
				{
                                   Mass[i][j] = random(10);
				}
			}
		}
		break;

		case 3:
		{
			printf("Good bye ;)"); sleep(3); return;
		}
		break;

	default: textcolor(12); cprintf("\nError: Вы не правильно ввели данные");
	}

	clrscr();

	printf("Первоначальная матрица\n");

	for (i = 0; i < Linie; i++)
	{
		printf("\n");
		for (j = 0; j < Coloana; j++)
		{
			textcolor(14); cprintf("%d  ", Tabel[i][j]);
		}
	}
	
	printf("\n\nМатрица после сортировки\n");

        // ----

        // ----

	getch();
}
coNsept вне форума Ответить с цитированием
Старый 15.12.2009, 20:20   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Код:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
int i,j,n,w=3,l=0; // w и l - позволяют ориентироваться внутри массива
//w - отступ до дальней стенки, l - отступ от ближней
int a[4][4]={5,3,2,7,1,8,4,3,2,6,9,7,5,6,3,2}; //Массив 4 на 4
i=0;
j=0;
for (n=0;n<16;++n) //Повторяется *кол-во элементов* раз
{
	cout << a[i][j] <<" ";
	if ((i==(l+1))&&(j==l)) {w--;l++;} //условие перехода на    внутреннюю спираль
	if ((j==w)&&(i<w)) {i++;continue;} //Движение по спирали вниз
	if ((j<w)&&(i==l)) {j++;continue;} //Вправо
	if ((i==w)&&(j>l)) {j--;continue;} //Влевo
	if ((j==l)&&(i>l)) {i--;continue;} //Вверх

}

	return 0;

}
Это если я правильно понял задание - вывод элементов в строку, но брать их не по порядку из массива, а по спирали...
И пример для 4 на 4
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Вывод массива в таблицу Kycaka Общие вопросы C/C++ 30 26.05.2009 19:19
вывод массива на экран Неясыть Общие вопросы Delphi 9 20.01.2008 20:18