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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 17:15   #1
Refon_S
 
Регистрация: 17.12.2011
Сообщений: 8
По умолчанию Вывод двумерного массива на экран. (Delphi)

Здравствуйте. Хотелось бы попросить помощи у здешних "обитателей" в одной задаче:

Цитата:
Решить поставленную задачу, используя средства управления вводом/выводом. Заполнить массив А(n,n) квадратами первых n^2 натуральных чисел. Вывести его на экран в виде двух частей, «разрезав» по побочной диагонали. Части расположить рядом. Побочная диагональ должна присутствовать в обеих частях.
Основную задачу я выполнил, заполнив массив (для простоты 5x5) квадратами первых 25 чисел. Но почему-то для меня осталось загадкой то, как вывести обе части рядом. И как? Рядом в смысле справа или снизу? Вывести первую часть у меня получилось, но на выводе второй почему-то получается не то, чего я ожидаю. Что я делаю не так, подскажите пожалуйста...
Код привожу:
Код:
program matrix;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  i,j,n,nj,ni: integer;
  m: single;
  A:array [1..5, 1..5] of single;
begin
  write('Enter N:'); //ввод N, пока должно быть 5
  readln(n);
  m:=1;
  for i := 1 to n do //создание матрицы, содержащей квадраты N^2 первых чисел
  begin
  for j := 1 to n do
    begin
      m:=sqr(m);
      A[i,j]:=m;
      m:=sqrt(m)+1;
    end;
  end;
  nj:=n; //матрица создана, выводим всё, что слева побочной диагонали
  for i := 1 to n do
  begin
    for j := 1 to nj do write(A[i,j]:4:0, ' ');
    writeln(' ');
    nj:=nj-1;
  end;
  ni:=n;
  for i := 1 to n do
  begin
    for j := ni to 1 do write (A[i,j]:4:0, ' ');
    writeln(' ');
    ni:=ni-1;
  end;
  readln;
end.
Скриншот результата в прикреплении.
Изображения
Тип файла: jpg wtf.jpg (26.7 Кб, 222 просмотров)
Refon_S вне форума Ответить с цитированием
Старый 21.12.2011, 08:26   #2
Refon_S
 
Регистрация: 17.12.2011
Сообщений: 8
По умолчанию

До решения я так и не додумался... Тема всё ещё актуальна, помогите пожалуйста.
Refon_S вне форума Ответить с цитированием
Старый 21.12.2011, 09:46   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
For i:=1 to n do
    begin
      for j := 1 to n  do
        if j=(n-i)+1 then write(A[i,j]:4:0,'     ',A[i,j]:4:0 )
        else write(A[i,j]:4:0) ;
      writeln;
    end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 21.12.2011, 23:30   #4
Refon_S
 
Регистрация: 17.12.2011
Сообщений: 8
По умолчанию

Премного благодарен Mad_Cat за помощь. Правда, немного обидно, раз всё оказалось настолько просто. Ждите завтра небольшую благодарность на ЯД.
Refon_S вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Вывод двумерного массива denolend Помощь студентам 2 12.12.2011 13:41
Вывод двумерного ассоциативного массива через цикл фор Syltan PHP 2 26.11.2010 18:59
Вывод двумерного массива(asm) Xanex Помощь студентам 0 29.05.2010 23:19
Вывод двумерного массива pancho Общие вопросы Delphi 10 25.01.2009 23:31