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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2009, 15:30   #1
Annet555
 
Регистрация: 26.12.2008
Сообщений: 2
По умолчанию вывод матрицы на печать в определенном порядке

двигаясь змейкой от одного из углов введенной числовой квадратной матрицы, состоящей из К строк и столбцов (К-заданное число) по линиям, параллельным главной диагонали обойти все элементы матрицы и распечатать их в порядке обхода. главная диагональ соединяет левый верхний и правый нижний углы матрицы
Annet555 вне форума Ответить с цитированием
Старый 27.03.2009, 17:26   #2
Annet555
 
Регистрация: 26.12.2008
Сообщений: 2
По умолчанию

помогите, пожалуйста, решить
Annet555 вне форума Ответить с цитированием
Старый 28.03.2009, 15:05   #3
Аццкий прогер
Пользователь
 
Аватар для Аццкий прогер
 
Регистрация: 26.02.2009
Сообщений: 24
По умолчанию

Ух-ты! Знакомая задачка! Мне такую на краевой олимпиаде по IT задавали. Как вспомню - напишу код. Если вспомню...
Может быть когда-нибудь я кому-нибудь в чём-нибудь и помогу...
Аццкий прогер вне форума Ответить с цитированием
Старый 29.03.2009, 00:16   #4
Gongled
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 78
По умолчанию

Мой вариант решения. Надеюсь, поможет.
Добавлено: Обнаружил ошибку.
Исправлено:

Код:
program z1;
uses CRT;

const
n = 5;

var
i, j, m, z, k : integer;
f : text;
a : array[1..n,1..n] of integer;

begin
clrscr;

assign(f, 'C:\Temp\input.txt');
reset(f);

for i:=1 to n do
    for j:=1 to n do
    read(f,a[i,j]);

close(f);

for i:=1 to n do
begin
    for j:=1 to n do
    begin
         write(a[i,j]:4);
    end;
writeln;
end;

writeln;

k := 1;
m := 0;
z := n;

writeln('Result');
repeat

     if (k mod 2 = 1) then
     begin
          for i:=k downto 1 do
          begin
               write(a[n-i+1,k-i+1]:4);
               m:=m+1;
          end;
     end;

     if (k mod 2 = 0) then
     begin
          for i:=k downto 1 do
          begin
               write(a[z,i]:4);
               m:=m+1;
               z:=z-1;
          end;
     end;

k:=k+1;
z := n;
writeln;

until m = (sqr(n)-n)/2+n;

m:=0;
z:=n;
k:=k-2;

repeat

     if (k mod 2 = 1) then
     begin
          for i:=1 to k do
          begin
               write(a[i,n+i-k]:4);
               m:=m+1;
          end;
     end;

     if (k mod 2 = 0) then
     begin
          for i:=1 to k do
          begin
               write(a[k-i+1,z]:4);
               m:=m+1;
               z:=z-1;
          end;
     end;

k:=k-1;
z := n;
writeln;

until m = (sqr(n)-n)/2;

end.
Пишу глупости.

Последний раз редактировалось Gongled; 29.03.2009 в 03:27. Причина: Исправил серьёзную ошибку.
Gongled вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод кольцевого списка в обратном порядке parinoff Паскаль, Turbo Pascal, PascalABC.NET 5 22.11.2008 12:03
Вывод списка в алфавитном порядке ErvinR PHP 4 24.10.2008 16:03