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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2013, 18:03   #1
Ardentis
 
Регистрация: 23.04.2011
Сообщений: 4
По умолчанию Вывод всех диагоналей массива

Помогите пожалуйста с алгоритмом. Нужно вывести элементы двумерного массива по всем диагоналям.
То есть, если есть массив (см. вложение), на выходе должно быть: 1, 2, 7, 3, 8, 13 и так далее до 24, 29, 34, 30, 35, 36
Язык не важен
Изображения
Тип файла: png massiv.PNG (3.0 Кб, 84 просмотров)
Ardentis вне форума Ответить с цитированием
Старый 02.11.2013, 19:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не ошибаюсь.
Код:
(for (i := 1) (i <= 6) (i ++)
 (for (j := i) (j <= 6) (j ++)
   (write a[j,j])
 ) (writeln)
) (writeln)

(for (i := 2) (i <= 6) (i ++)
 (for (j := 1) (j <= i) (j ++)
   (write a[j,j])
 ) (writeln)
) (writeln)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2013, 23:09   #3
Ardentis
 
Регистрация: 23.04.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если не ошибаюсь.
Ошибаетесь немного. Выводит сначала все что ниже главной диагонали, потом все что выше. Сверху - вниз, по столбцам. Нужно по всем диагоналям начиная с верхнего левого угла, справа налево. Для примера из первого поста должно получится: 1, 2, 7, 3, 8, 13, 4, 9, 14, 19, 5, 10, 15, 20, 25, 6, 11, 16, 21, 26, 31, 12, 17, 22, 27, 32, 18, 23, 28, 33, 24, 29, 34, 30, 35, 36

Понимаю, что разница между индексами этих элементов 6, но вот ничего путного пока не выходит.
Ardentis вне форума Ответить с цитированием
Старый 02.11.2013, 23:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ошибаетесь немного.
Возможно. Проверить не могу, так как не реализовывал многомерные массивы. Хотя думаю стоит этим заняться в ближайшее время.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2013, 12:34   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
var
	a : array [1..100, 1..100] of Integer;
	n, i, j, cnt : Integer;

begin
	ReadLn (n);
	
	cnt := 1;
	for i := 1 to n do
		for j := 1 to n do begin
			a[i, j] := cnt;
			Inc (cnt)
		end;
		
	for i :=  1 to n do begin
		for j := 1 to i do
			Write (a[j, i-j+1], ' ');
		WriteLn
	end;
	
	WriteLn;
	
	for i := 2 to n do begin
		for j := 0 to n-i do
			Write (a[j+i, n-j], ' ');
		WriteLn
	end		
end.
Poma][a вне форума Ответить с цитированием
Старый 03.11.2013, 15:33   #6
Ardentis
 
Регистрация: 23.04.2011
Сообщений: 4
По умолчанию

Poma][a, спасибо. Этот вариант понятный и хорошо работает.
Ardentis вне форума Ответить с цитированием
Старый 03.11.2013, 16:17   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Пожалуйста..
Просто был уже такой экспириенс.. дали в школе задание (которое было выпускным у 11 классов).. Нужно было записать матрицу таким макаром :
Изображения
Тип файла: jpg forum.jpg (15.0 Кб, 125 просмотров)
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив X(N).Найти среднеквадратичное всех элементов массива и заменить этим значение нулевые элементы массива. sev48fire Паскаль, Turbo Pascal, PascalABC.NET 3 21.06.2012 23:44
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
С++, матрица - минимум и максимум всех диагоналей Blondy Помощь студентам 5 22.04.2011 13:52
заполнение главных диагоналей динамичного массива shopot Microsoft Office Excel 2 14.02.2011 22:11
Вывод всех значений.. ZveRN JavaScript, Ajax 0 06.11.2010 12:26