1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
есть ошибка в условии "If Simple_number", пытался исправить, но видимо неверно. помогите исправить)
Const Nmax=100; Type IndexType=1..Nmax; Matrix=Array[IndexType,IndexType] of Longint; Function Simple_number(A:Longint): Boolean; Var d,b : Word; Begin A:=Abs(A); If A<2 then begin Simple_number:=False; Exit; End; Simple_number:=True; b:= trunc(sqrt(A)); For d:=2 to b do begin If (A mod d)=0 then begin Simple_number:=False; break; End; End; End; Function exist_3(A:Longint): Boolean; Var q,p :Longint; Begin A:=Abs(A); q:=A; exist_3:=False; While q>0 do begin p:=q mod 10; If p=3 then begin exist_3:=True; Exit; End; q:=q div 10; End; End; Procedure Change(Var A:Matrix; n:IndexType); Var i,j :IndexType; max :Longint;
Begin max:=low(Longint); j:=1; While j<=n do begin For i:=1 to n do begin If A[i,j]>max then max:=A[i,j]; End; A[j,j]:=max; inc(j); End; End; Procedure Out(A:Matrix; n:IndexType); Var i,j :IndexType; Begin Writeln; For i:=1 to n do begin For j:=1 to n do write(A[i,j]); Write(#10#13,#10#13); End; End;
Var A :Matrix; i,j,n,m :Integer; count :Word; Begin Repeat Write('Vvedite parametri matrici(n<100)'); Read(n); m:=n; Writeln('Matrix:'); Until (n>=1) and (n<=Nmax); For i:=1 to n do begin For j:=1 to n do Read(A[i,j]); End; count:=0; For j:=1 to n do begin For i:=1 to n do Simple_number(A[i,j]); If Simple_number(A[i,j]) then begin exist_3(A[i,j]); If exist_3(A[i,j]) then inc(count); End; End; If (count=m) and (exist_3(A[i,j])) then begin Change(A,n); end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end; readln; End.
Процедура Change не правильная, совсем не понятно то, о чем уже сказал klem4.
Write(#10#13,#10#13);
А не проще написать
writeln;
If (count=m) and (exist_3(A[i,j]))
А вот здесь странно, т.к. если в массиве 3х3 будет 4 простых элементов, то это уже не сработает, да тут еще
and (exist_3(A[i,j]))
, что вообщем не правильно... Подправил твой код, подучилось так
Const Nmax=5; Type IndexType=1..Nmax; Matrix=Array[IndexType,IndexType] of Longint; Function Simple_number(A:Longint): Boolean; Var d,b : Word; Begin A:=Abs(A); If A<2 then begin Simple_number:=False; Exit; End; Simple_number:=True; b:=A div 2; For d:=2 to b do begin If (A mod d)=0 then begin Simple_number:=False; break; End; End; End; Function exist_3(A:Longint): Boolean; Var q,p :Longint; Begin A:=Abs(A); q:=A; exist_3:=False; While q>0 do begin p:=q mod 10; If p=3 then begin exist_3:=True; Exit; End; q:=q div 10; End; End; Procedure Change(Var A:Matrix; n:IndexType); Var i,j :IndexType; max :Longint;
Begin for i:=1 to n do begin max:=a[1,i]; For j:=1 to n do begin If A[j,i]>max then max:=A[j,i]; End; A[i,i]:=max; End; End; Procedure Out(A:Matrix; n:IndexType); Var i,j :IndexType; Begin Writeln; For i:=1 to n do begin For j:=1 to n do write(A[i,j]); Writeln; End; End;
Var A :Matrix; i,j,n,m :Integer; count :Word; Begin Repeat Write('Vvedite parametri matrici(n<100)'); Read(n); m:=n; Writeln('Matrix:'); Until (n>=1) and (n<=Nmax); For i:=1 to n do begin For j:=1 to n do Read(A[i,j]); End; count:=0; i:=1; while i<=n do begin j:=1; while j<=n do begin If Simple_number(A[i,j]) then If exist_3(A[i,j]) then begin inc(count); j:=n end; inc(j) End; inc(i) End; If count=m then Change(A,n); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:5); writeln; end; readln; End.