PMR.SU - Идеи feedback Матрицы на Паскале - Форум ПМР, форум Приднестровья. Онлайн новости ПМР. Тирасполь, Бендеры, Рыбница, Дубоссары, Каменка.


Перейти на сайт - База отдыха Одема-Юг    Размещение рекламы    Размещение рекламы

Вернуться   Форум ПМР, форум Приднестровья. Онлайн новости ПМР. Тирасполь, Бендеры, Рыбница, Дубоссары, Каменка. > ПО, железо, техника, программирование > Программирование



Программирование Обсуждаем различные языки программирования

Ответ
LinkBack Опции темы Оценить тему

Матрицы на Паскале
Старый 05.11.2011, 09:53   #1 (Постоянная ссылка на сообщение)
Долгожитель
 
Аватар для punk423
 
punk423 вне форума
Регистрация: 28.10.2011
Адрес: Тираспль
Сообщений: 37
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Репутация: 5
punk423 пока ещё рано говорить
Плюсик Матрицы на Паскале

Помогите исправить код программы для корректной её работы.

Код:
program df;
var  i,j,c,z,ss,pr,prss,kff,i3,j3,i2,j2,delz,delc,kz,kc,ksc,ksz,ai3c,ai3z,i4,j4,c4,z4,min,i11:integer;
rc,rz:real;
 a:array [1..4,1..13] of integer;

begin

 for i:=1 to 4 do
 begin
 ss:=0;
  for j:=1 to 5 do
   begin
    z:=2*j;
    c:=2*j-1;
    read(a[i,c]) ;
    a[i,z]:=1;
    ss:=a[i,c]+ss;
   end;
 a[i,12]:=1;
 a[i,11]:=ss;
 end;
 
   
   
  for i:=1 to 4 do
  begin
  write(' | ');
   for j:=1 to 6 do
   begin
    c:= 2*j-1;
    write(a[i,c],' | ');
     end;
   writeln;
   end;
    writeln;
    




  for j:=1 to 4 do
   begin
    pr:=0;
    prss:=0;
    kff:=0;
    c:=2*j-1;
    z:=2*j;
    for i:=1 to 4 do
    begin

     if (a[i,c]=1) and (pr=0)  and (a[i,13]=0)
      then begin

            pr:=1;
            kff:=i;
            a[i,13]:=1;
           end
      else begin
      
      
      
             if pr<>1
             then
             begin
             prss:=prss+1;
             min:=0;
             kkk:=1;
             for i11:=1 to  3 do 
              begin
                if (a[i11,13]=0) and (kkk=0)
                then begin
                 kkkf:=i11;
                 kkk:=1;
                 min:=i11;
                 min2:=i11;
                 end;
                if (a[i11,13]=0) and (min2<>i11)
                  then begin
                    
                rc:=a[I11,c]/a[I11,z]; 
                rz:=a[i11+1,c]/a[I11,z];
                
             kff:=min;
             if prss=4
              then begin
                     a[i,13]:=1;
                     delz:=a[kff,c];
                     delc:=a[kff,z];
                     for j2:=j to 6 do
                       begin
                        z:=2*j2;
                        c:=2*j2-1;
                        a[kff,z]:=a[kff,z]*delz;
                        a[kff,c]:=a[kff,c]*delc;
                        if a[kff,z]=a[kff,c]
                         then begin
                               a[kff,z]:=1;
                               a[kff,c]:=1;
                              end;
                       end;
                      end;
            end;
            end;
            end;
            
      for i3:=1 to 4 do
      begin
       kz:=2*j;
       kc:=2*j-1;
       ksc:=a[i3,kc];
       ksz:=a[i3,kz];
       for j3:=j to 6 do
        begin

         if i3<>kff
          then
           begin
            c:=2*j3-1;
            z:=2*j3;
            ai3c:=-ksc*a[kff,c];
            ai3z:=ksz*a[kff,z];
            if ai3z=a[i3,z]
             then begin
                   a[i3,z]:=ai3z;
                   a[i3,c]:=ai3c+a[i3,c];
                  end
             else begin
                   a[i3,z]:=ai3z*a[i3,z];
                   a[i3,c]:=ai3c+a[i3,c]*ai3z;
                   if a[i3,z]=0
                    then writeln('net reweni9');
                  end;

            end;
           end;
           
           for i4:=1 to 4 do
            begin
             write(' | ');
             for j4:=1 to 6 do
              begin
                z4:=2*j4;
                c4:=2*j4-1;

                write(a[i4,c4],'/',a[i4,z4],' | ');
              end;
             writeln;
            end;
          writeln;
           
           
              end;

       end;

       end.
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 05.11.2011, 21:44   #2 (Постоянная ссылка на сообщение)
Долгожитель
 
Einsamkeit вне форума
Регистрация: 03.11.2011
Возраст: 24
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Репутация: 0
Einsamkeit пока ещё рано говорить
По умолчанию Ответ: Матрицы на Паскале

а что вы хотите получить в результате и что не так выполняется?
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 06.11.2011, 21:23   #3 (Постоянная ссылка на сообщение)
Долгожитель
 
Аватар для punk423
 
punk423 вне форума
Регистрация: 28.10.2011
Адрес: Тираспль
Сообщений: 37
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Репутация: 5
punk423 пока ещё рано говорить
По умолчанию Ответ: Матрицы на Паскале

Мне надо чтобы выводила расписанное решение линейных уравнений методом жордано-гаусса.
Оно половину решения делает правильно. А за тем не могу понять, но оно сбивается и выводит чушь.
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 06.11.2011, 23:18   #4 (Постоянная ссылка на сообщение)
Долгожитель
 
Einsamkeit вне форума
Регистрация: 03.11.2011
Возраст: 24
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Репутация: 0
Einsamkeit пока ещё рано говорить
По умолчанию Ответ: Матрицы на Паскале

Скоро сдавать надо? А то я могу быть занята эти дни немного
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 07.11.2011, 09:28   #5 (Постоянная ссылка на сообщение)
Долгожитель
 
Аватар для punk423
 
punk423 вне форума
Регистрация: 28.10.2011
Адрес: Тираспль
Сообщений: 37
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Репутация: 5
punk423 пока ещё рано говорить
По умолчанию Ответ: Матрицы на Паскале

Цитата:
Сообщение от Einsamkeit Посмотреть сообщение
Скоро сдавать надо? А то я могу быть занята эти дни немного
Это я скорее больше для себя решил сделать. И что бы мой преподаватель по вышей математике был в шоке что решение заняло не всю пару, а 2 минуты.

Программа выводит значения числителя и знаменателя, но надо доделать потом что бы сокращала их.
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 07.11.2011, 13:06   #6 (Постоянная ссылка на сообщение)
Пользователь
 
dgin вне форума
Регистрация: 24.01.2010
Возраст: 24
Сообщений: 74
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
Репутация: -15
dgin имеет немного плохого в прошлом
По умолчанию Ответ: Матрицы на Паскале

математическую модель напиши.
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 07.11.2011, 16:39   #7 (Постоянная ссылка на сообщение)
Долгожитель
 
Аватар для punk423
 
punk423 вне форума
Регистрация: 28.10.2011
Адрес: Тираспль
Сообщений: 37
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Репутация: 5
punk423 пока ещё рано говорить
По умолчанию Ответ: Матрицы на Паскале

Вот пример
Ввод: 1 1 -3 2 6 1 -2 0 -1 -6 0 1 1 3 16 2 -3 2 0 6
Вывод:
| 1 | 1 | -3 | 2 | 6 | 7 |
| 1 | -2 | 0 | -1 | -6 | -8 |
| 0 | 1 | 1 | 3 | 16 | 21 |
| 2 | -3 | 2 | 0 | 6 | 7 |

| 1/1 | 1/1 | -3/1 | 2/1 | 6/1 | 7/1 |
| 1/1 | -2/1 | 0/1 | -1/1 | -6/1 | -8/1 |
| 0/1 | 1/1 | 1/1 | 3/1 | 16/1 | 21/1 |
| 2/1 | -3/1 | 2/1 | 0/1 | 6/1 | 7/1 |

| 1/1 | 1/1 | -3/1 | 2/1 | 6/1 | 7/1 |
| 0/1 | -3/1 | 3/1 | -3/1 | -12/1 | -15/1 |
| 0/1 | 1/1 | 1/1 | 3/1 | 16/1 | 21/1 |
| 2/1 | -3/1 | 2/1 | 0/1 | 6/1 | 7/1 |

| 1/1 | 1/1 | -3/1 | 2/1 | 6/1 | 7/1 |
| 0/1 | -3/1 | 3/1 | -3/1 | -12/1 | -15/1 |
| 0/1 | 1/1 | 1/1 | 3/1 | 16/1 | 21/1 |
| 2/1 | -3/1 | 2/1 | 0/1 | 6/1 | 7/1 |

| 1/1 | 1/1 | -3/1 | 2/1 | 6/1 | 7/1 |
| 0/1 | -3/1 | 3/1 | -3/1 | -12/1 | -15/1 |
| 0/1 | 1/1 | 1/1 | 3/1 | 16/1 | 21/1 |
| 0/1 | -5/1 | 8/1 | -4/1 | -6/1 | -7/1 |

А дальше решение не правильное.
  Ответить с цитированием

Ответ: Матрицы на Паскале
Старый 29.11.2011, 00:21   #8 (Постоянная ссылка на сообщение)
Долгожитель
 
Аватар для punk423
 
punk423 вне форума
Регистрация: 28.10.2011
Адрес: Тираспль
Сообщений: 37
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Репутация: 5
punk423 пока ещё рано говорить
Плюсик Ответ: Матрицы на Паскале

Изменил программу, но всё равно есть ошибка незначительная, но ответ не всегда сходится.
Код HTML:
program df;
var  i,j,c,z,ss,pr,prss,kff,i3,j3,i2,j2,delz,delc,kz,kc,ksc,ksz,ai3c,ai3z,i4,j4,c4,z4,min,i11,kkk,kkkf,min2,ff,ffg,i5,i6,j6,i6c,i6z,minn,iii:integer;
rc,rz:real;
 a:array [1..4,1..13] of integer;
 f1: text;

begin
     {Ввод}
     assign   (f1, 'file1.txt');
           reset (f1);
 for i:=1 to 4 do
 begin
 ss:=0;
  for j:=1 to 5 do
   begin
    z:=2*j;
    c:=2*j-1;
    read(f1,a[i,c]) ;
    a[i,z]:=1;
    ss:=a[i,c]+ss;
   end;
 a[i,12]:=1;
 a[i,11]:=ss;
 end;
 
       close (f1);
     {Вывод}
  for i:=1 to 4 do
  begin
  write(' | ');
   for j:=1 to 6 do
   begin
    c:= 2*j-1;
    write(a[i,c],' | ');
     end;
   writeln;
   end;
    writeln;
    




  for j:=1 to 4 do
   begin
    pr:=0;
    prss:=0;
    kff:=0;
    c:=2*j-1;
    z:=2*j;
    ff:=0;

    {нахождение нужной строки}
    for i:=1 to 4 do
    begin

     if (a[i,c]=1) and (pr=0)  and (a[i,13]=0)
      then begin

            pr:=1;
            kff:=i;
            a[i,13]:=1;
           end
         {если не нашло нужную изменем строку}
      else begin
      
      
      
             if pr<>1
             then
             begin
             prss:=prss+1;
             min:=0;
             kkk:=1;

                       
                       

                 for i5:=1 to 4 do
                  begin

                   if ff=0
                    then  if a[i5,13]=0
                            then begin
                                  ff:=1;
                                  ffg:=i5;
                                 end;
                  end;
                       
             kff:=ffg;
             if prss=4
              then begin
                     a[kff,13]:=1;
                    delz:=a[kff,c];
                     delc:=a[kff,z];
                     for j2:=j to 6 do
                       begin
                        z:=2*j2;
                        c:=2*j2-1;
                        a[kff,z]:=a[kff,z]*delz;
                        a[kff,c]:=a[kff,c]*delc;
                        if a[kff,z]=a[kff,c]
                         then begin
                               a[kff,z]:=1;
                               a[kff,c]:=1;
                              end;
                       end;
                      end;
            end;
            end;
            end;

            
       {преобразование массива}
      for i3:=1 to 4 do
      begin
       kz:=2*j;
       kc:=2*j-1;
       ksc:=a[i3,kc];
       ksz:=a[i3,kz];
       for j3:=j to 6 do
        begin

         if i3<>kff
          then
           begin
            c:=2*j3-1;
            z:=2*j3;
            ai3c:=-ksc*a[kff,c];
            ai3z:=ksz*a[kff,z];
            if ai3z=a[i3,z]
             then begin
                   a[i3,z]:=ai3z;
                   a[i3,c]:=ai3c+a[i3,c];
                  end
             else begin
                   a[i3,z]:=ai3z*a[i3,z];
                   a[i3,c]:=ai3c+a[i3,c]*ai3z;
                   if a[i3,z]=0
                    then writeln('net reweni9');
                  end;

            end;
          end;
          
          {сокрашение}
          for i6:=1 to 4 do
           for j6:=j to 6 do
            begin
             i6c:=j6*2-1;
             i6z:=j6*2;
             if a[i6,i6c]>a[i6,i6z]
              then minn:=a[i6,i6z]
              else minn:=a[i6,i6c];
             for iii:=minn-1 downto 2 do
              begin
               if (a[i6,i6c] mod iii=0) and (a[i6,i6z] mod iii=0)
                then begin
                      a[i6,i6c]:=a[i6,i6c] div iii;
                      a[i6,i6z]:=a[i6,i6z] div iii;
                     end;
              end;
            end;
          
          
             {Вывод}

           
           
              end;
           for i4:=1 to 4 do
            begin
             write(' | ');
             for j4:=1 to 6 do
              begin
                z4:=2*j4;
                c4:=2*j4-1;
                 if  a[i4,c4]= a[i4,z4]
                  then write(1,' | ')
                  else  if a[i4,z4]=1
                         then   write(a[i4,c4],' | ')
                         else if a[i4,c4]=0
                         then  write(0,' | ')
                         else write(a[i4,c4],'/',a[i4,z4],' | ');
              end;
             writeln;
            end;
          writeln;
          
          
          
       end;
       writeln('______________________________________________')
end.
__________________
Модные часы в Приднестровье. [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Ответ

Опции темы
Оценка этой теме
Оценка этой теме:

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

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





Часовой пояс GMT +3, время: 19:51.

Яндекс.Метрика Рейтинг@Mail.ru Rambler's Top100
Время генерации страницы 0.23005 секунды с 12 запросами