Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Массивы


Автор: Umar 4.6.2009, 19:34
Помогите пожалуйста, ни как не пойму как и что тут сделать. Помогите мне пожалуйста просто завтра у меня зачёт и очень нужно.

Автор: Umar 4.6.2009, 22:34
Неужели ни кто не поможет? smile 

Автор: BeKToP 5.6.2009, 01:35
 чёт я не пойму 
Цитата

в заштрихованой части матриц

Это типа по диагоналям??

Автор: Ozzя 5.6.2009, 08:32
№ 1
http://forum.vingrad.ru/forum/topic-262005/kw-%D0%B8%D1%82%D0%B5.html

Автор: volvo877 5.6.2009, 09:30
№2:
Код
const
  n = 3;
type
  box = array[1 .. n, 1 .. n] of real;
  matrix = array[1 .. 2, 1 .. 2] of box;

procedure fill(var b: box; value: integer);
var i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to n do
      b[i, j] := value;
end;

procedure print(const mx: matrix);
var i, j, ib, jb: integer;
begin
  for ib := 1 to 2 do
    for i := 1 to n do begin
      for jb := 1 to 2 do
        for j := 1 to n do write(mx[ib, jb][i, j]:4:0);
        writeln;
      end;
  writeln;
end;

var
  mx: matrix;
  i, j: integer;
  T: box;
begin
  for i := 1 to 2 do
    for j := 1 to 2 do fill(mx[i, j], 2*(i - 1) + j);
  print(mx);

  { #1 }
  T := mx[1, 1]; mx[1, 1] := mx[2, 2]; mx[2, 2] := T;
  T := mx[1, 2]; mx[1, 2] := mx[2, 1]; mx[2, 1] := T;

  {#2}
  (*
  T := mx[1, 1];
  mx[1, 1] := mx[2, 1]; mx[2, 1] := mx[2, 2];
  mx[2, 2] := mx[1, 2]; mx[1, 2] := T;
  *)

  print(mx);
end.

Автор: Umar 5.6.2009, 23:28
BeKToP, 
Цитата(BeKToP @  5.6.2009,  01:35 Найти цитируемый пост)
Это типа по диагоналям?? 


Наверное, точно не знаю.

Добавлено через 49 секунд
volvo877, 
А объяснить сможите?

Автор: volvo877 6.6.2009, 01:56
А что тут объяснять? Создается не просто массив, а массив из 4-х "четвертей", которые и надо поменять местами. Паскаль позволяет сложные структуры присваивать друг другу обычным оператором := 

Поэтому чтобы поменять "четверти" в указанном порядке достаточно нескольких операций присваивания... (я всегда говорил, что правильно сконструированные типы избавляют от многих проблем, вот еще одно подтверждение этому).

Основная проблема в данной программе - правильно вывести матрицу на печать, она решается процедурой print. Кроме этого, что там может быть непонятно? Как поменять местами 2 переменные, знаешь? Через временную переменную, правда? Вот точно так же меняешь местами и куски матрицы...

Автор: Umar 6.6.2009, 16:10
volvo877, 
А это какой вариант А или В?

Автор: volvo877 6.6.2009, 17:29
Раскомментированный - A, закомментированный - B. 

Автор: Umar 6.6.2009, 22:47
Ozzя, 
Цитата(Ozzя @  5.6.2009,  08:32 Найти цитируемый пост)
№ 1
http://forum.vingrad.ru/forum/topic-262005...1%82%D0%B5.html 

Ozzя там помоем не всё?

Автор: Umar 7.6.2009, 23:08
Аууу

Автор: Ozzя 8.6.2009, 07:46
Цитата

Ozzя там помоем не всё? 

Как не всё? Ниже/выше главной диагонали - есть. Найти min- есть. Подправь под себя и всё.

Автор: Umar 8.6.2009, 20:42
Цитата(Ozzя @  8.6.2009,  07:46 Найти цитируемый пост)
Цитата

А это точно моя задача?

Автор: Ozzя 9.6.2009, 07:13
Нет, напутал. Если верить рисунку, тебе нужно найти макс. элемент, находящийся на  главной и побочной диагоналях.

Код

{ главная }
max:=a[1,1];
For i:=1 To n Do 
  if  a[i, i]>max then
    max:=a[i,i];

{ побочная }
For i:=1 To n Do 
  if  a[i, n+1-i]>max then
    max:=a[i, n+1-i];

Автор: Umar 10.6.2009, 17:18
Ozzя, 
А продолжение на страничке куда вы мне указали?

Автор: Ozzя 11.6.2009, 07:49
Не совсем понял Ваш вопрос. Вроде бы, сейчас всё Ок?

Автор: Umar 20.6.2009, 16:39
Ozzя, 
ТАм же вы не всё написалиже...

Автор: Ozzя 22.6.2009, 07:55
Цитата(Umar @  20.6.2009,  16:39 Найти цитируемый пост)
ТАм же вы не всё написалиже... 

Надеюсь, что описание массива и его заполнение сами напишите.

Автор: scorpion2009 24.6.2009, 22:45
Пожалуйста, помогите решить задачу. Без ние не могу закрыть сессию.

 В двумерном массиве создать матрицу. Найти строку с наименьшей суммой значений элементов и вывести его номер. smile  smile 

Автор: ScarfaseV 28.9.2009, 21:21
А вот такой вопрос по теме массивов, можно же передавать массив в качестве параметра в функцию, определив для этого специальный тип-массив. А допускается ли такое, что функция тоже возвращает значение такого типа?
Попробовал и выдало ошибку : Invalid Function result type

Автор: volvo877 29.9.2009, 10:58
Цитата(ScarfaseV @  28.9.2009,  21:21 Найти цитируемый пост)
А допускается ли такое, что функция тоже возвращает значение такого типа?
Допускается, только не в Турбо-Паскале... В ТП придется внутри функции выделять память динамически и возвращать указатель... Или пользоваться Var-параметрами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)