XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Hard & Soft
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
ConstantinGhost

offline
Опыт: 3,916
Активность:
Обход матрицы ><
Блин убил мозг может кто помочь? как сделать чтоб матрица обходилась не: 13 12 23 33 22 11 21 32 31
а 33 32 23 13 22 31 21 12 11... тупо бьюсь 2й день...
#include <stdio.h>
#include <conio.h>

void main()
{
	clrscr();
	int i,j,k,t=0,n;
	printf("Enter number matrix:");
	scanf ("%d",&n);
	int *S,M[10][10],m=n*n;
	gotoxy(1,3);
	printf("Number of massiv: \n\n");
	for(i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			M[i][j]=(i+1)*10+j+1;
			printf("%d ",M[i][j]);
		}
		printf("\n\n");
	}
	printf("\n\n\n");

	for(k=1-n;k<=n-1;k++)
	{
		if(k%2==0)
		for(j=n-1; j>=0; j--)
		{
			i=k+j;
			if(i>=0&&i<n)
			S[t++]=M[i][j];
		}
		else for(j=n-1;j>=0;j--)
		{
			i=k+j;
			if(i>=0&&i<n)
			S[t++]=M[i][j];
		}
	}
	printf("Novui massiv v nyzjnom poradke:\n\n");
	for(k=m-1; k>=0; k--)
	printf("%d ",S[k]);
	getch();
}

Отредактировано X, 06.01.2011 в 15:20.
Старый 06.01.2011, 14:57
ScorpioT1000
Работаем
online
Опыт: отключен
лучше нарисуй )
ScorpioT1000 добавил:
и че это за говноязык, на котором ты пишешь? хидеры из си, синтаксис плюсов O_o
Старый 06.01.2011, 15:44
ConstantinGhost

offline
Опыт: 3,916
Активность:
ScorpioT1000, Borland C++ приходится писать на таком...
Миниатюры
Кликните на картинку для увеличения
Название:  matr.JPG
Просмотров: 35
Размер:  42.8 Кбайт  
Старый 06.01.2011, 15:51
Toadcop

offline
Опыт: 54,313
Активность:
сделай паттерн ? я вообще задачи непонял у тебя что всегда 3х3 и заданый "путь" ?
Старый 06.01.2011, 16:17
ConstantinGhost

offline
Опыт: 3,916
Активность:
Toadcop, нет размер вводится n x n матрица. а путь именно задан, и я немогу его нормально сделать как нужно по условию =(
Старый 06.01.2011, 16:23
Toadcop

offline
Опыт: 54,313
Активность:
ну разясни путь тогда нормально.
Старый 06.01.2011, 17:06
ConstantinGhost

offline
Опыт: 3,916
Активность:
ну я нарисовал как должно идти змейкой по диагонале красным как в коде а зелёным как должно...
Старый 06.01.2011, 17:10
Toadcop

offline
Опыт: 54,313
Активность:
короче 3х3 слишком маленькая что бы показать как должен он обходить

седлай 6х6 и 7х7
Старый 06.01.2011, 17:27
ConstantinGhost

offline
Опыт: 3,916
Активность:
11 12 13 14 15 16 17
21 22 23 24 25 26 27
31 32 33 34 35 36 37
41 42 43 44 45 46 47
51 52 53 54 55 56 57
61 62 63 64 65 66 67
71 72 73 74 75 76 77
Красный то как щас обходит такой же массив а зелёный то как должно быть (то как не получается)
Миниатюры
Кликните на картинку для увеличения
Название:  matr.JPG
Просмотров: 44
Размер:  46.7 Кбайт  
Старый 06.01.2011, 19:29
ELForcer
Сижу only Hard & Soft
offline
Опыт: 1,593
Активность:
Это в универе наверно задали ему. Подружке моего брата тоже такое задавали в универе. Правда вроде на Делфи или паскале, а не на Си.
Старый 06.01.2011, 20:31
Exp

offline
Опыт: 435
Активность:
ConstantinGhost, сделал пример, но только в виде карты для вара, никакого другого состоятельного языка не знаю. Хотябы глянешь как реализовано. Вар не держит многомерных массивов, поэтому двухмерный массив B[x,y] реализован через хеш-таблицу.

Действия для вара:
1. В чат "-n ??", где ?? - размерность массива В[n,n]
2. Клавиша Esc - прохождение массива и вывод результата в виде n строк по n чисел в каждой.
» Код прохода
Код:
local integer n = udg_n   //--- макс значения индексов
local integer x = n       //--- Индекс X двухмерного массива B[]
local integer y = n       //--- Индекс Y двухмерного массива B[]
local integer i = 0       //--- Индекс линейного массива А[]
local integer d = 1       //--- Направление смещения (d>0 - Вверх Вправо, d<0 - Вниз Влево)
local boolean dkey = true //--- Обработка однократного прохода граней по достижению

  loop
    set udg_A[i]=LoadInteger(udg_B,x,y)
    set i=i+1
    if (x==0 or x==n or y==0 or y==n) and dkey then  //--- если однократно достигли грань
      set dkey = false                              //--- помечаем достижение грани
      set d=-1*d                                     //--- меняем направление смещения
      if x==n or x==0 then
        if y>0 then
          set y=y-1
        elseif x>0 then
          set x=x-1
        endif
      elseif y==n or y==0 then
        if x>0 then
          set x=x-1
        elseif y>0 then
          set y=y-1
        endif
      endif
    else                                             //--- если грань не достигнута
      set dkey=true
      set x=x+d
      set y=y-d
    endif
    exitwhen x==0 and y==0                           //--- выходим по достижению нулевых значений индексов
  endloop
Прикрепленные файлы
Тип файла: w3x matrix.w3x (10.7 Кбайт, 10 просмотров )

Отредактировано Exp, 07.01.2011 в 17:05.
Старый 07.01.2011, 15:59
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:50.