Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

70K
30 ноября 2011 года
worp
22 / / 30.11.2011
Помогите решить три задачки пожалуйста.

Первая:
Задана матрица А размерностью 3х6. Сделать поворот относительно главной диагонали.

Вторая:
Задана матрица А размерностью 15х10. Найти рядок с наименьшим элементом и поменять его местами с последним.

Третья:
Задана матрица А размерностью 7х5 та матрица В размерностью 7х4. Сделать добавление А+В, результат записать в матрицу С.

Спасибо за внимание.
[Прошу прощение, если тема не в том разделе. По возможности прошу перенести данную тему в нужный раздел]
14
30 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Чем помочь то?
70K
30 ноября 2011 года
worp
22 / / 30.11.2011
Написать программный код.
16K
30 ноября 2011 года
asmforce
186 / / 05.01.2010
Цитата: worp
Написать программный код.



Кайма-то какого цвета? :facepalm:

Размерности статические, задачки элементарные.
В чём проблема-то? Не знаете как объявить массив? Как обратиться к элементу массива? Или ничего не знаете?
В последнем случае, было бы неплохо узнать хоть что-нибудь.

Читать здесь и здесь.

Цитата: worp
Сделать поворот на 180 градусов влево.



А не лучше ли вправо? ;)

70K
01 декабря 2011 года
worp
22 / / 30.11.2011
С горем пополам сделал третью задачу, вот что получилось:
(Она не работает, компилятор выбивает много различных ошибок, которые мне не удается исправить. Если кто-то заметит ошибку в написанном ниже тексте, прошу, помогите исправить)
Код:
var a:array [1..7,1..5] of integer;
c:array[1..7,1..5] of integer;
b:array [1..7,1..4] of integer;
i,j:integer;
begin
randomize();
for a:=1 to 7 do
for a[j]:=1 to 5 do
begin
for b:=1 to 7 do
for b[j]:=1 to 4 do
begin
a[i,j]:=random();
b[i,j]:=random();
c[i,j]:=a[i,j]+b[i,j];
write (c[i,j]);
end;
end;
end


Тема еще актуальна. Помогите решить задачи пожалуйста:)
14
01 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
http://www.youtube.com/watch?v=dYJavbbWLuk
70K
01 декабря 2011 года
worp
22 / / 30.11.2011
Большое спасибо за видео, но хотелось бы попросить, чтобы Вы помогли мне записать это всё на языке Паскаль.
Какие ошибки я допустил? Помогите пожалуйста.
16K
02 декабря 2011 года
asmforce
186 / / 05.01.2010
Цитата: worp
Большое спасибо за видео, но хотелось бы попросить, чтобы Вы помогли мне записать это всё на языке Паскаль.
Какие ошибки я допустил? Помогите пожалуйста.



Компилятор выдаёт сообщения для того, чтобы их читали. Это на заметку.

Я, честно говоря, не знаток pascal'а, но ещё со школы помню, что после end, завершающего точку входа, ставится точка. Это во-первых.
Во-вторых: кто учил Вас так организовывать циклы? :facepalm: У Вас в цикле должна фигурировать только индексная переменная:

 
Код:
for i := 1 to 7 do
  for j := 1 to 4 do
  begin
    { Impl }
  end


Я один думаю, что в задании имелась ввиду конкатенация?

Если человек пытается разобраться, то можно и помочь:
Код:
Uses Crt;

var
a : array[1..7,1..5] of integer;
b : array[1..7,1..4] of integer;
c : array[1..7,1..9] of integer;
i,j : integer;


begin
  randomize();

{ a, b initialization }
  for i := 1 to 7 do
  begin
    for j := 1 to 5 do
      a[i,j] := random(100);
    for j := 1 to 4 do
      b[i,j] := random(100);
  end;

{ copying }
  for i := 1 to 7 do
  begin
    for j := 1 to 5 do
      c[i,j] := a[i,j];
    for j := 1 to 4 do
      c[i,j+5] := b[i,j];
  end;

{ printing }
  for i := 1 to 7 do
  begin
    for j := 1 to 9 do
    begin
      write( c[i,j] );
      write( ' ' );
    end;
    writeln('');
  end;
end.


С форматированием вывода уже сами разбирайтесь. Не помню, что там за функции для этого используются, - сделал как смог;)
70K
02 декабря 2011 года
worp
22 / / 30.11.2011
Не получается правильно настроить Geany, чтобы он наконец-то начал показывать мне мои ошибки [Поиск решения проблемы в гугле не помог][Если кто-то сталкивался с подобной проблемой и смог одолеть её, киньте мне решение, пожалуйста].
В FPC мне тяжело работать, да и все ошибки, которые он выдает - у меня не получается исправить.

На счет "Во-вторых: кто учил Вас так организовывать циклы?" отвечаю: На практичных занятиях было выделено очень мало времени на объяснение организации циклов и тому подобного, и вообще организации всего программного кода, а если учесть то, что я глупыш, то это вообще кардинально препятствует усвоению материала в моей головушке. Если Вам не составит труда, прошу, дайте мне почитать какой-нибудь материал по этой теме.

Прошу прощение за плохой перевод. Задание переводил с украинского, не очень качественно получилось, как видите. Попробую растолковать. Нужно сделать A+B, то бишь сложить их, как 2+2=4, то есть если есть матрица A
2 2
2 2
и матрица B
2 2
2 2
то в итоге должна получится матрица С, вот как она должна выглядеть:
4 4
4 4
Надеюсь, я смог понятно объяснить суть задания.

asmforce, большое спасибо Вам за проделанную работу:)

Перейдем к решению первой задачи.
Я не уверен, что правильно понимаю суть задания.
Если у нас есть матрица 3х3:
а11 а12 а13
а21 а22 а23
а31 а32 а33
То после проведения операции с помощью Паскаля, у нас должно получится следующее:
а11 а12 а33
а21 а22 а23
а13 а32 а33
Я правильно понял?
16K
02 декабря 2011 года
asmforce
186 / / 05.01.2010
Цитата: worp

Я правильно понял?



Это называется транспонированием (почти). (Но матрица должна быть квадратной)
a11 a12 a13 -> a11 a21 a31
a21 a22 a23 -> a12 a22 a32
a31 a32 a33 -> a13 a23 a33

Читайте тут.

Цитата: worp

Не получается правильно настроить Geany...



Попробуйте это. Проверено. Есть ограничения, но Вас они врядли затронут, учитывая уровень заданий.

70K
03 декабря 2011 года
worp
22 / / 30.11.2011
Решил вторую задачу [Естественно, не без помощи умеющих].
Возможно, кому-нибудь понадобится.
Задача №2.
Код:
const
  n=15;
  m=10;
type
  matr=array[1..n,1..m] of integer;
var
  a:matr;
  i,j,imin,jmin,i_point,buf:integer;
begin
  randomize;
  {Vyvod}
  writeln('Ishodnaya matritsa:');
  for i:=1 to n do
    for j:=1 to m do
      begin
        a[i,j]:=random(100)+5;
        write(a[i,j]:4);
        if j=m then
          writeln;
      end;
  writeln;
  {Poisk min, stroki min}
  imin:=1;jmin:=1;
  for i:=1 to n do
    for j:=1 to m do
      begin
        if a[i,j]<a[imin,jmin] then
          begin
            imin:=i;
            jmin:=j;
            i_point:=i;
          end;
      end;
  writeln('Min:',a[imin,jmin],' ego stroka: ',i_point,' Press enter...');
  readln;
  if i_point=n then{nomer stroki s min posledniy}
    writeln('Element nahoditsa v poslednei stroke. Nichego ne menyaem.')
  else
    begin
    {Obmen}
    for j:=1 to m do
      begin
        buf:=a[i_point,j];
        a[i_point,j]:=a[n,j];
        a[n,j]:=buf;
      end;
    {Vyvod}
    writeln('Posle obmena:');
    for i:=1 to n do
      for j:=1 to m do
        begin
          write(a[i,j]:4);
          if j=m then
            writeln;
        end;
    writeln;
  end;
end.


Пробую сделать первую задачу.
70K
03 декабря 2011 года
worp
22 / / 30.11.2011
Что-то совсем понять не могу.
а11 а12 а13 а14 а15 а16
а21 а22 а23 а24 а25 а26
а31 а32 а33 а34 а35 а36
Как можно в этой матрице сделать поворот относительно главной диагонали. Матрица же неправильно формы, вроде бы :О
Объясните пожалуйста.
16K
03 декабря 2011 года
asmforce
186 / / 05.01.2010
Цитата: worp

Как можно в этой матрице сделать поворот относительно главной диагонали. Матрица же неправильно формы, вроде бы :О
Объясните пожалуйста.



Что-то совсем понять не могу.
Для кого я ссылки давал?
Для кого это писал:

Цитата: asmforce

Матрица должна быть квадратной


Объясните пожалуйста.

7
03 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Вообще-то матрица квадратной для транспонирования быть не обязана.Ну это так,вброс:)
16K
03 декабря 2011 года
asmforce
186 / / 05.01.2010
Цитата: @pixo $oft
Вообще-то матрица квадратной для транспонирования быть не обязана



Замечание принято.:p
Для транспонирования - не обязана. Для задачи ТС - никак иначе.
В принципе, задано то же самое, что и транспонировать, только [COLOR="paleturquoise"]зелёное[/COLOR] не трогая главную диагональ. Разница влияет на вердикт об апликабельности к НЕ квадратным матрицам.

70K
03 декабря 2011 года
worp
22 / / 30.11.2011
Прошу прощения, пан Asmforce *gomenface*
Я переходил по Вашим ссылкам и прочел информацию о транспонировании, но так и не смог понять, как же должна выглядеть матрица после операции в Паскале.
Изучая новую ссылку, я пришел к такому результату.
Исходная матрица:
а11 а12 а13 а14 а15 а16
а21 а22 а23 а24 а25 а26
а31 а32 а33 а34 а35 а36
После транспонирования:
а11 а21 а31
а12 а22 а23
а13 а23 а33
а14 а24 а34
а15 а25 а35
а16 а26 а36

Всё правильно?

Не сердитесь на меня, пожалуйста, за мои ошибки ><
16K
04 декабря 2011 года
asmforce
186 / / 05.01.2010
Цитата: worp

Исходная матрица:
а11 а12 а13 а14 а15 а16
а21 а22 а23 а24 а25 а26
а31 а32 а33 а34 а35 а36
После транспонирования:
а11 а21 а31
а12 а22 а23
а13 а23 а33
а14 а24 а34
а15 а25 а35
а16 а26 а36

Всё правильно?



Это пример транспонирования. Всё правильно.
Но поворот относительно гл. диагонали - это не транспонирование (виноват).
Так что, либо задание неверно, либо одно из двух.:confused:

70K
05 декабря 2011 года
worp
22 / / 30.11.2011
Не смог найти информации на счет поворота относительно главной диагонали.
Сделал поворот при условии: "Матрица 6х6". Надеюсь, преподаватель простит меня)
Вот мой ремейк первой задачи.
№1
Код:
uses crt;
const n=6;m=6;
var
a:array[1..n,1..m] of integer;
b:array[1..n,1..m] of integer;
i,j:integer;
begin
clrscr;
 
{Vyvod nachal`nogo massiva}
for i:=1 to n do begin
    for j:=1 to m do begin
    a[i,j]:=random(100);
    write(a[i,j]:4);
    end;
writeln;
end;
writeln;
{Zapolnenie novogo massiva z povorotom}
for i:=1 to n do begin
    for j:=1 to m do begin
    b[j,i]:=a[i,j];
    end;
end;
{Pechat` poluchivshegosya massiva}
for i:=1 to n do begin
    for j:=1 to m do begin
    write(b[i,j]:4);
    end;
writeln;
end;
 
readln;
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог