Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 09.12.2012, 20:31   #1 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите решить задачу в Паскале

Дано два двумерных массива а(n1xm1) ,b(n2xm2). Cформировать массив x((n1+ n2)x(m1+m2)), таким образом чтобы массивы a и b располагались по побочной диагонали, а остальные элементы были бы заполнены 0.
вот начало, а дальше у меня ступор:

const n1=5;m1=5; m2=5;n2=5;
var a:array[1..n1,1..m1] of real;
b:array[1..n2,1..m2] of real;
x:array[1..n1+n2,1..m1+m2] of real;
i,j,e,p1,p2,q:integer;
begin
for i:=1 to n1 do
begin
for j:=1 to m1 do
begin
writeln ('a[',i,',',j,']=',a[i,j]);
readln(a[i,j]);
end;
writeln;
end;
for i:=1 to n2 do
begin
for j:=1 to m2 do
begin
writeln ('b[',i,',',j,']=',b[i,j]);
readln(b[i,j]);
end;
writeln;
p1:=m1+n1;
p2:=m2+n2;
for e:=1 to n1 do
begin
for q:=1 to p2 do
begin
for j:=1 to m1 do
begin
x[e,q]:=0;
end; end;end;
NAt вне форума   Ответить с цитированием

Старый 09.12.2012, 20:31
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти темы схожи с вашей и я рекомендую прочитать их

Помогите пожалуйста решить задачу на Паскале.
Помогите решить задачу в Паскале

Старый 09.12.2012, 20:49   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А массивы обязательно должны быть real? Целочисленные нельзя? Просто на экран выводить было бы удобнее.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.12.2012, 20:54   #3 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

real обязательно)
NAt вне форума   Ответить с цитированием
Старый 09.12.2012, 20:55   #4 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а хотя нет, целочисленные лучше))
NAt вне форума   Ответить с цитированием
Старый 09.12.2012, 21:02   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от NAt Посмотреть сообщение
real обязательно)
Ладно. Тогда еще вопрос. Какие-нибудь ограничения на размерности массивов есть? Поясню. Вот Вы все четыре константы n1,m1,n2,m2 полагаете одинаковыми и равными 5. Это предусмотрено условием? С другой стороны, побочная (равно как и главная) диагональ может быть только у квадратной матрицы, т.е. n1+n2=m1+m2 - так? Но, кроме того, возникает вопрос: а что значит для неквадратных исходных матриц расположение "вдоль побочной диагонали"? Может быть, просто одна должна оказаться в правом верхнем углу "большой" матрицы, а вторая - в левом нижнем? Поясните, пожалуйста. Или так - достаточно ли будет сделать как у Вас, т.е. все константы положить равными? Претензий потом не будет?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.12.2012, 21:14   #6 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

в условии нет никаких ограничений на размерности)
то что все 4-е константы равны 5- это моё предположение, мне кажется так легче будет. Но скорей всего правильнее ваше утверждение:одна должна оказаться в правом верхнем углу "большой" матрицы, а вторая - в левом нижнем
NAt вне форума   Ответить с цитированием
Старый 09.12.2012, 21:17   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от NAt Посмотреть сообщение
в условии нет никаких ограничений на размерности)
то что все 4-е константы равны 5- это моё предположение, мне кажется так легче будет. Но скорей всего правильнее ваше утверждение:одна должна оказаться в правом верхнем углу "большой" матрицы, а вторая - в левом нижнем
Сейчас нарисую.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.12.2012, 21:32   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вот, получите.
Одно замечание: не пытайтесь объединить ввод значений элементов матрицы и вывод ее на экран - ничего не выйдет. Это необходимо делать порознь и последовательно.
Код:
const
 n1=5;
 m1=4;
 n2=3;
 m2=7;
var
 a:array[1..n1,1..m1] of Integer;
 b:array[1..n2,1..m2] of Integer;
 x:array[1..n1+n2,1..m1+m2] of Integer;
 i,j:integer;

Begin
 for i:=1 to n1+n2 do
  for j:=1 to m1+m2 do
   x[i,j]:=0;

 for i:=1 to n1 do
  for j:=1 to m1 do
   begin
    write('a[',i,',',j,']= ');
    readln(a[i,j]);
    x[i,j+m2]:=a[i,j];
   end;
 writeln;

 for i:=1 to n2 do
  for j:=1 to m2 do
   begin
    write('b[',i,',',j,']= ');
    readln(b[i,j]);
    x[i+n1,j]:=b[i,j];
   end;
 writeln;

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

 writeln('Matrix b:');
 for i:=1 to n2 do
  begin
   for j:=1 to m2 do write(b[i,j]:4);
   writeln;
  end;
 writeln;

 writeln('Matrix x:');
 for i:=1 to n1+n2 do
  begin
   for j:=1 to m1+m2 do write(x[i,j]:4);
   writeln;
  end;

 readln;
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.12.2012, 21:37   #9 (permalink)
NAt
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо огромное, очень помогли)
NAt вне форума   Ответить с цитированием
Старый 09.12.2012, 21:47   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от NAt Посмотреть сообщение
спасибо огромное, очень помогли)
Да не за что.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.