IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача про матрицы,где ошибка?
sashamarhenko
сообщение 12.12.2011 23:16
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Ребят,вот проблема:
запускаю
выдает запрос на принтер
жму нет
показывает матрицу
жму Esc
и тут черный экран....


Program Labor4;
Uses Crt,Printer;
Const  Nmax = 30;Mmax = 20;
Type
Ar=array[1..Mmax] of byte;
Matrix = array[1..Mmax,1..Nmax] of real;
Var
    i,j,n,m,r,p : byte;
              K : ar;
      IndPrinter,
           Cond : boolean;
             ch : char;
            tmp : real;
            buf : integer;
              A : Matrix;
              F : text;
          s1,s2 : shortint;
{ ------------------------------------------------------------- }
Procedure WaitEscape;
Var  ch : char;
Begin
  Repeat
    ch:=ReadKey;
  Until ord(ch)=27;
End { WaitEscape };
{ ------------------------------------------------------------- }
Procedure ReadMatrix;
Var  i,j : byte;
Begin
  Reset(F);
  Read(F,n,m);
  For i:=1 to m do
    For j:=1 to n do
      Read(F,a[i,j]);
  Close(F);
End { ReadMatrix };
{ ------------------------------------------------------------- }
Procedure ScreenMatrix;
Var i,j,r : byte;
Begin
  For i:=1 to m do
    Begin
      r:=0;
      For j:=1 to n do
        Begin
          Inc(r);
          If r<10 then
            Write(a[i,j]:8:2,'   ')
          Else
            Begin
              r:=0;
              Writeln(a[i,j]:8:2,'   ')
            End
        End;
      If r>0 then Writeln;
   End;
  If r>0 then Writeln;
End { ScreenMatrix };
{ ------------------------------------------------------------- }
function sign(b:real):shortint;
begin
  if b>0 then
    sign:=1
  else
    if b=0 then
      sign:=0
    else
      sign:=-1;
end {sign};
{ ------------------------------------------------------------- }
Procedure PrinterMatrix;
Var i,j,r : byte;
Begin
  For i:=1 to m do
    Begin
      r:=0;
      For j:=1 to n do
        Begin
          Inc(r);
          If r<10 then
            Write(Lst,a[i,j]:8:2,'   ')
          Else
            Begin
              r:=0;
              Writeln(Lst,a[i,j]:8:2,'   ')
            End
        End;
      If r>0 then Writeln(Lst);
    End;
  If r>0 then Writeln(Lst);
End { PrinterMatrix };
{ ------------------------------------------------------------- }
Begin

  Assign(F,'Matrix.dat');

  ClrScr;
  Writeln(' Буде тли использован принтер (Да,нет)?');
  ch:=ReadKey;
  If ch in ['д','Д','L','l'] then
    IndPrinter:=true
  Else
    IndPrinter:=false;

  ReadMatrix;
  Writeln('            Исходная матрица ');
  Writeln('                m = ',m);
  Writeln('                n = ',n);
  ScreenMatrix;

  If IndPrinter then
    Begin
      Writeln(Lst,'             Исходная матрица ');
      Writeln(Lst,'                  n = ',n);
      Writeln(Lst,'                  m = ',m);
      PrinterMatrix;
    End;

  waitescape;

  clrscr;
  begin
    for i:=1 to m do
      begin
        k[i]:=0;
        for j:=1 to n do
          s1:=sign(a[i,j]);
          s2:=sign(a[m,j]);
          if s1=s2 then
            inc(k[i]);
      end;
    cond:=true;
    p:=m-1;
    while cond do
      begin
        cond:=false;
        for i:=1 to p do
          if k[i]>k[i+1] then
            buf:=k[i];
            k[i]:=k[i+1];
            k[i+1]:=buf;
            for j:=1 to n do
              begin
                tmp:=a[i,j];
                a[i,j]:=a[i+1,j];
                a[i+1,j]:=tmp;
              end;
            cond:=true;
          end;
        dec(p);
      end;

  writeln('              preobrazovannaia matriza');
  screenmatrix;
  If IndPrinter then
    Begin
      Writeln(Lst);
      Writeln(Lst,'Preobrazovannaia matriza');
      PrinterMatrix;
    end;
  waitescape;
end.



Сообщение отредактировано: sashamarhenko - 12.12.2011 23:17


Прикрепленные файлы
Прикрепленный файл  MAR4.PAS ( 3.57 килобайт ) Кол-во скачиваний: 213
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 8.08.2025 8:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"