2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3  След.
 
 Re: Произведение матриц
Сообщение04.01.2015, 21:32 

(Оффтоп)

Чисто из занудства. Всё-таки array of array of integer - это не двумерный массив, а массив массивов. Работа с ним не всегда удобна (например нельзя целиком обнулить массив через FillChar или скопировать через Move) и менее эффективна (память для каждой строки выделяется и освобождается отдельно). К сожалению Pascal не позволяет создавать нормальных многомерных динамических массивов. Поэтому надо написать соответствующий класс :D

 
 
 
 Re: Произведение матриц
Сообщение04.01.2015, 22:42 
Аватара пользователя
rockclimber в сообщении #956435 писал(а):
fronnya в сообщении #956416 писал(а):

(Оффтоп)

Кто не согласен, тот пусть вместо программирования вышиванием займется.

Пойду домик вышью. Неужели это нельзя реализовать с помощью статического массива? Почему? Извините, пожалуйста, но ничего мне пока про динамические массивы не говорите, мы их ещё не используем.

 
 
 
 Re: Произведение матриц
Сообщение04.01.2015, 22:49 
Аватара пользователя
Можно. Если размеры массивов ограничены какой-то константой (например, не более 100).
Да вы же уже написали, в чем проблема? Хотя, конечно, несколько громоздко. Зачем заводить две процедуры создания матриц? Разве нельзя два раза воспользоваться одной?

 
 
 
 Re: Произведение матриц
Сообщение04.01.2015, 23:18 
Аватара пользователя
provincialka в сообщении #956507 писал(а):
Можно. Если размеры массивов ограничены какой-то константой (например, не более 100).
Да вы же уже написали, в чем проблема? Хотя, конечно, несколько громоздко. Зачем заводить две процедуры создания матриц? Разве нельзя два раза воспользоваться одной?

Я не знаю, как это сделать. Там же возникает новый размерчик $p$

 
 
 
 Re: Произведение матриц
Сообщение04.01.2015, 23:32 
Аватара пользователя
А разве размеры не передаются в процедуру в качестве параметров? Я, правда, внимательно не читала.

 
 
 
 Re: Произведение матриц
Сообщение04.01.2015, 23:44 
Аватара пользователя
provincialka в сообщении #956530 писал(а):
А разве размеры не передаются в процедуру в качестве параметров? Я, правда, внимательно не читала.

Ну тогда я скину программу, которую я писал до тех пор, пока у меня нервы не сдали.
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type TMatrix=array[1..100,1..100] of integer;


procedure TM(Var m,n:integer; Var a:TMatrix);
var
    i,j:integer;
begin
  randomize;
  writeln ('kol-vo strok: ');
  readln(m);
  writeln ('kol-vo stolbcov: ');
  readln(n);
  i:=1;
    while i<=m do
      begin
        j:=1;
          repeat
            a[i,j]:=random(6)-1;
            write(a[i,j]:3);
            j:=j+1;
          until j>n;
        writeln;
        i:=i+1;
      end;
end;

procedure TM1(n:integer; var p:integer; Var b:TMatrix);
var
    j,k:integer;
begin
  randomize;
  writeln ('kol-vo stolbcov: ');
  readln(p);
  j:=1;
    while j<=n do
      begin
        k:=1;
          repeat
            b[j,k]:=random(6)-1;
            write(b[j,k]:3);
            k:=k+1;
          until k>p;
        writeln;
        j:=j+1;
      end;
end;

procedure ymnog(m,n,p:integer; a,b:TMatrix; Var c:TMatrix);
var
    i,j,k:integer;
begin
  for i:=1 to m do
    begin
      for k:=1 to p do
        begin
          c[i,k]:=0;
            for j:=1 to n do
              begin
                c[i,k]:=a[i,j]*b[j,k]+c[i,k];
              end;
            write (c[i,k]:4);
        end;
      writeln;
    end;

end;

Var
    m,n,p:integer;
    a,b,c:TMatrix;

Begin
  TM(m,n,a);
  TM1(n,p,b);
  writeln;
  ymnog(m,n,p,a,b,c);
readln;
End.

 
 
 
 Re: Произведение матриц
Сообщение04.01.2015, 23:51 
Аватара пользователя
А зачем вы ввод данных с экрана включаете в процедуру создания матрицы? Это разные вещи. В основной программе организуйте ввод размеров, а в функцию передавайте их как параметры.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 01:20 
Аватара пользователя
provincialka в сообщении #956540 писал(а):
А зачем вы ввод данных с экрана включаете в процедуру создания матрицы? Это разные вещи. В основной программе организуйте ввод размеров, а в функцию передавайте их как параметры.

А в чем разница?
Кстати, в паскале функция- это совсем не то, что вы имеете в виду.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 01:27 
Аватара пользователя
Ну, процедура, непринципиально. Функция тоже может внутри себя разные действия производить.

(Оффтоп)

я просто сейчас пользуюсь языком R, в котором это разделение не предусмотрено, все называется функцией. Что разумно.

А делать ввод отдельно нужно, чтобы пользоваться одной процедурой для создания обеих матриц. Например, процедура создания называется sozd и вы вызываете sozd(m,n,a); sozd(n,p,b).

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 01:53 
Аватара пользователя

(Бу-бу-бу)

Ну вот зачем это вообще? Какого чёрта? Зачем калечить мозги физикам-первокурсникам изучением Паскаля? Это что, какая-то особенная шутка белых, которую нам, чёрным, не понять? Хочешь научить их низкоуровневому программированию, учи их Си. Хочешь показать им, как компьютер помогает решать физические задачи, познакомь их с Wolfram Mathematica. Хочешь учить их программированию, преподавай им Python. Извините, достало.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 02:07 
Аватара пользователя

(to Aritaborian)

Да, странно. У нас (на ВМК) дают Си. Про Паскаль что-то не слышала. У меня ребенок на курсах и то Си изучает. Правда, C#.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 02:12 
Аватара пользователя

(Оффтоп)

Ну что вы, блин, в самом деле. Си-шарп — совсем иная штука, гораздо более близкая к той же Java. О «низкоуровности» там и речи никакой не идёт.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 02:16 
Аватара пользователя

(Aritaborian)

Ладно, признаюсь в невежестве. Он на других курсах C++ проходил, но маловат был, не выдержал.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 02:20 
Аватара пользователя

(provincialka)

Ну разные ведь, совершенно разные языки: C++ и C#! (да и Си — третий, отдельный язык.) В свою очередь прошу у вас прощения за несдержанность.

 
 
 
 Re: Произведение матриц
Сообщение05.01.2015, 02:24 
Аватара пользователя

(Оффтоп)

:-( ну что поделать. Такая у нас программа на физфаке. Пришли из лицея при БГУ олимпиадники- физики, которых в лицее учили языку СИ, долго ржали, когда посмотрели на программу по программированию. В следующем семестре будет объектно-ориентированное что-то. Хм, а вот правда, зачем ребят учить в лицее языку СИ, если они потом на том же физфаке все равно будут паскаль учить? Нас лектор говорила, что в общем паскаль сложнее, чем СИ в силу того, что в СИ заранее много чего заложено. Типа хотят, чтобы мы посмотрели, как все на самом деле. ПО- моему так она говорила, не очень хорошо помню.

 
 
 [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group