На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> -------cпасайте кто может-------
    нужна программа умножения fucking матриц!
    мож у кого исходник какой есть?
    или так в облегченном варианте че-нть напишите.
    буду безумно благодарен. встречу, пива налью.
    срочно нужно, плиззз!!! зы:: лучше в мыло 8)
      в асме я все-таки новичок а потому отсылаю пргу на паскале(если поможет-хорошо, не поможет-забей)
      --------------------------------------------------------------------------------------------------

      program matrices;

      type
       row_vector=array[1..100] of intrger;
       row_index=array[1..100] of ^row_vector;
       matrix=record
          no_rows,no_cols:word;
           index_ptr:^row_index;
        end;

      var
        a,b,c:matrix;
        inds_size,elems_size,i,k:word;
         m,n:longint;

      procedure create_matrix(var a:matrix;r,c:word);

      var
        j,k:word;

      begin
       with a do begin
          no_rows:=r;no_cols:=c;
           j:=no_rows*sizeof(pointer);
           inc(inds_size,j);
           getmem(index_ptr,j);
           for j:=1 to no_rows do begin
              k:=no_cols*sizeof(integer);
              inc(elems_size,k);
              getmem(index_ptr^[j],k);
              for k:=1 to no_cols do
                 index_ptr^[j]^[k]:=-5+random(11);
            end;
         end;
      end;

      procedure delete(var a:matrix);

      var
        j:word;

      begin
       with a do begin
          for j:=1 to no_rows do
             freemem(index_ptr^[j],no_cols*sizeof(integer));
           freemem(index_ptr,no_rows*sizeof(pointer));
           index_ptr:=nil;
        end;
      end;

      procedure product_matrix(var a,b,c:matrix);
      var
       i,j,k:word;
       sum:longint;
      begin
           if a.no_cols<>b.no_rows then halt(1);
           create_matrix(c,a.no_rows,b.no_cols);
           for i:=1 to a.no_rows do
              for k:=1 to b.no+cols do begin
                 sum:=0;
                  for j:=1 to a.no_cols do
                      sum:=sum+a.index_ptr^[i]^[j]*b.index_ptr^[j]^[k];
                   c.index_ptr^[i]^[k]:=sum;
               end;
             end;
      end;

      procedure print_matrix(var a:matrix;ss:string);
      var i,k:word;

      begin
       with a do begin
          writeln(ss);
           for i:=1 to no_rows do begin
               for k:=1 to no_cols do
                  write(index_ptr^[i]^[k]:4);
            end;
         end;
      end;



      begin
      inds_size:=0;
      elems_size:=0;
      m:=memavail;
      writeln('перед размещением свободно ',m:8,' байт');
      randomize;
      create_matrix(a,4,5);
      create_matrix(b,5,3);
      product_matrix(a,b,c);
      n:=memavail;
      writeln;
      writeln;        
      writeln;        
      writeln;        
      m:=m-n-inds_size-elems_size;
      print_matrix(a,'матрица=');        
      print_matrix(b,'матрица=');      
      print_matrix(c,'матрица=');      
      delete©;
      delete(b);
      delete(a);
      m:=memavail;
      writeln('свободно: ',m:8,'байт');
      readln;
      end.


      P.S.:извини если есть опечатки -у меня инет всего до 2-х часов-вылезать скорее надо-
      исправь
        во,блин,уложился как................. :o
          Мдааааа....
          Ну ничего, пару суток посидишь - переведёшь на asm.... ;D
          И всего делов-то! (с)
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0207 ]   [ 14 queries used ]   [ Generated: 1.06.24, 23:16 GMT ]