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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2008, 22:35   #1
Шико
 
Регистрация: 26.03.2008
Сообщений: 3
По умолчанию из одномерного массива сделать матрицу

ДАн одномерный массив из 12 членов, надо сделать из нгео матрицу 3на4. ЗАранее спс за помощь в решении. ХОтя бы подскажите как это делать) Ума не приложу. СРазу оговорю, что преподу 3 writeln сразу после read е понравились))
ЗЫ паскаль зло.

Последний раз редактировалось Шико; 26.05.2008 в 22:40.
Шико вне форума Ответить с цитированием
Старый 26.05.2008, 23:22   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Нехороший у вас преподаватель, придирается.
Попробуйте вот так написать, только ту примитивную формулу, по которой элементы массива записываются в матрицу выведете сами, на бумажке.
Код:
uses crt;
const n=3;
      m=4;
var a:array[1..n*m] of integer;
    b:array[1..n,1..m] of integer;
    i,j:integer;
begin
clrscr;
randomize;
writeln('Ishodnyj massiv:');
for i:=1 to n*m do
   begin
     a[i]:=random(10);
     write(a[i],' ');
   end;
writeln;
writeln('Matrica:');
for i:=1 to n do
   begin
     for j:=1 to m do
       begin
         b[i,j]:=a[j+m*(i-1)];
         write(b[i,j]:3);
       end;
     writeln;
   end;
readln
end.
puporev вне форума Ответить с цитированием
Старый 27.05.2008, 00:06   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Самый простой вариант...

Код:
program Project1;
var mas:array[1..12] of integer;
    mas1:array[1..3,1..4] of integer;
    b:integer;
begin
 randomize;
 write('Odnomernii massiv: ');
 for b:=1 to 12 do      //
 begin                  // zapolnenie
   mas[b]:=random(9);   //      odnomernogo
   write(mas[b],' ');   //              massiva
 end;                   //
 readln;

 for b:=1 to 4 do mas1[1,b]:=mas[b];   // perenos
 for b:=5 to 8 do mas1[2,b]:=mas[b];   //    v dvumernii
 for b:=9 to 12 do mas1[3,b]:=mas[b];  //            massiv

 writeln;                                // vivod
 writeln('Dvumernii massiv: ');          //
 for b:=1 to 4 do write(mas1[1,b],' ');  //
 writeln;                                // vivod
 for b:=5 to 8 do write(mas1[2,b],' ');  //
 writeln;                                //
 for b:=9 to 12 do write(mas1[3,b],' '); // vivod
 writeln;
 readln;
end.
Arkuz вне форума Ответить с цитированием
Старый 27.05.2008, 07:18   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А если матрица 50х50, тоже так будешь переносить?
puporev вне форума Ответить с цитированием
Старый 27.05.2008, 08:19   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А как вам такое решение, Господа?
Код:
uses crt;
var a:array[1..12] of byte;
 e,i:integer;
 b:array[1..3,1..4] of byte;
begin    clrscr;
 for i:=1 to 12 do begin a[i]:=i;write(a[i]:3);end;
 for i:=1 to 3 do  move(a[(i-1)*3+i],b[i,1],5);
 writeln;writeln;
 for i:=1 to 3 do begin
   for e:=1 to 4 do write(b[i,e]:3);
   writeln;
 end;
 readln;
 end.
Преподу конечно не понравится но по-моему прикольное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2008, 23:22   #6
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
А если матрица 50х50, тоже так будешь переносить?
я сделал для частного случая... Я и не думал над тем как по формуле для общего случая сделать... сказали 3X3 или как там я и сделал!
Arkuz вне форума Ответить с цитированием
Старый 27.05.2008, 23:27   #7
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А как вам такое решение, Господа?
Забавно...
Изголяемся как хотим над куском кода...
У кого на что фантазии хватит...
Садисты мы все тут!
Arkuz вне форума Ответить с цитированием
Старый 28.05.2008, 01:11   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

думаю, что препод ждёт что-то вроде такого:
Код:
var
  a:array[1..12] of byte;
  b:array[1..3,1..4] of byte;
  i,j :integer;
  ii, jj : integer; {индексы для двухмерного массива}
begin
 {заполнение исходной матрицы
   последовательными числами от 1 до 12 и вывод их на экран}
 for i:=1 to 12 do
   begin
     a[i]:=i;
     write(a[i]:3);
   end;
 WriteLn;


 {преобразовать одномерный массив в двухмерный}
 for i:=1 to 12 do begin
   ii := ((i-1) div 4) + 1;
   jj := ((i-1) mod 4) + 1;
   b[ ii, jj] := a[i];
 end;

 {вывести результат}
 WriteLn;
 for i:=1 to 3 do begin
   for j:=1 to 4 do
     write(b[i,j]:3);
   writeln;
 end;
 readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2008, 08:26   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
Забавно...
Изголяемся как хотим над куском кода...
У кого на что фантазии хватит...
Садисты мы все тут!
Автору: Преподавателю не показывайте. Он явно не этого ждет

Код:
move(a, b, sizeOf(a));
Код:
type 
  TArray = array [1..3,1..4] of byte;
  ...
   b := TArray(a);
alexBlack вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка одномерного массива (ASM & C) voron Помощь студентам 0 02.12.2007 13:41
Удалить из массива(одномерного) все повторяющиеся числа(Delphi) Махор Помощь студентам 4 29.11.2007 23:25
Двумерные массивы. Формирование одномерного массива из сумм строк матрицы, кратных числу k (в С++) Fimogen Помощь студентам 3 19.11.2007 07:30
Как мне сделать так штоби при вводе массива все значения сами переносились по словам. Помогити плиз KSP Общие вопросы Delphi 7 24.09.2007 22:44