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.
прогу не запускал, на счет синтаксических не знаю, но
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 // а проверяешь значение только для посл. элемента столбца
тут ты мне кажется что-то напутал, фактически ты вызываешь функцию чтобы что-то проверить только для каждого последнего элемента в каждом столбце.
UPDATE
кстати, я не уверен, но могу допустить что после цикла for по i, это самое i будет больше N, что может вызвать выход за границы массива
Сообщение отредактировано: klem4 -
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'