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

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

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

> Задача про матрицы,где ошибка?
сообщение
Сообщение #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®;
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®;
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 -


Прикрепленные файлы
Прикрепленный файл  MAR4.PAS ( 3.57 килобайт ) Кол-во скачиваний: 319
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Цитата
где ошибка?
Отформатируй код как положено - увидишь. У тебя cond:=true выполняется ВСЕГДА, независимо от условия, поэтому цикл - вечный...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Цитата(IUnknown @ 13.12.2011 15:44) *

Отформатируй код как положено - увидишь. У тебя cond:=true выполняется ВСЕГДА, независимо от условия, поэтому цикл - вечный...

спасибо,уже разобрался)
там и без єтого куча ошибок
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 12.09.2025 20:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name