Консультация № 194542
30.01.2019, 23:33
0.00 руб.
0 3 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Препод заставил объяснять чуть ли ни каждую строчку что она делает, помогите с объяснениями
#1
Код:
var a:array[1..20,1..20] of integer;
n,i,j:byte;
begin
repeat
write('Введите размер матрицы от 2 до 20 n=');
readln(n);
until n in [2..20];
for i:=1 to n do
begin
for j:=1 to n do
begin
if j<=n-i+1 then a[i,j]:=i+j-1
else a[i,j]:=0;
write(a[i,j]:3);
end;
writeln;
end;
end.

#2
Код:
Var a: array[1..20, 1..20] of integer;
n,i,j,mins, maxs, mini, maxi, t : integer;
begin
repeat
write('Введите размер матрицы от 1 до 20 n=');
readln(n);
until n in [1..20];
for i:=1 to n do
begin
for j:=1 to n do
begin
if j<=n-i+1 then a[i,j]:=i+j-1
else a[i,j]:=0;
write(a[i,j]:3);
end;
writeln;
end;
mins:=0;
for j:=1 to n do
mins:= mins+a[1,j];{summa v str 1, poka=min}
maxs:= mins;
mini:= 1;
maxi:= 1;
for i:=1 to n do
begin
t:=0;
for j:=1 to n do
t:= t+ a[i,j];
if (t>maxs) then
begin
maxs:= t;
maxi:= i;
end;
if (t<mins) then
begin
mins:= t;
mini:= i;
end;
end;
writeln ('Максимальная сумма = ', maxs, ' строка ', maxi);
for j:=1 to n do
write(a[maxi,j],' ');
writeln;
writeln;
writeln ('Минимальная сумма = ', mins, ' строка ', mini);
for j:=1 to n do
write(a[mini,j],' ');
Readln;
end.

#3
Код:
var rmatr:array[1..10,1..10] of real;
n,m,i,j,imx,jmx,k:byte;
mx,x:real;
begin
repeat
write('Введите количество строк от 3 до 10 n=');
readln(n);
until n in [3..10];
repeat
write('Введите количество столбцов от 3 до 10 m=');
readln(m);
until m in [3..10];
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
rmatr[i,j]:=i+j-1; ///////////
write(rmatr[i,j]:6:2);
if i+j=2 then
begin
mx:=rmatr[1,1];
imx:=1;
jmx:=1;
end
else if abs(rmatr[i,j])>abs(mx) then
begin
mx:=rmatr[i,j];
imx:=i;
jmx:=j;
end;
end;
writeln;
end;
writeln('Максимальный по модулю элемент=',mx:0:2,' в строке ',imx,' в столбце ',jmx);
if n<m then i:=n else i:=m;
repeat
write('Введите номер строки и столбца для обмена от 1 до ',i,' k<>',imx,' k<>',jmx,' k=');
readln(k);
until (k in [1..i])and(k<>imx)and(k<>jmx);
for j:=1 to m do
begin
x:=rmatr[imx,j];
rmatr[imx,j]:=rmatr[k,j];
rmatr[k,j]:=x;
end;
for i:=1 to n do
begin
x:=rmatr[i,jmx];
rmatr[i,jmx]:=rmatr[i,k];
rmatr[i,k]:=x;
end;
writeln('Перестановка строк и столбцов с тем чтобы элемент ',mx:0:2);
writeln('оказался в ячейке [',k,',',k,']');
for i:=1 to n do
begin
for j:=1 to m do
write(rmatr[i,j]:6:2);
writeln;
end;
end.

Обсуждение

давно
Старший Модератор
31795
6196
31.01.2019, 13:07
общий
Адресаты:
Цитата: mustang289
Препод заставил объяснять чуть ли ни каждую строчку что она делает

Препод паскаль не знает? Чему он Вас учит?
Попробуйте, расставить свои комментарии, то как Вы понимаете код. А то учебник объяснять нет смысла.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
02.02.2019, 13:10
общий
Адресаты:
[code lang=pascal]var a:array[1..20,1..20] of integer;
n,i,j:byte;
begin
repeat
write('Введите размер матрицы от 2 до 20 n=');
readln(n);
until n in [2..20];{контроль ввода размера матрицы}
for i:=1 to n do
begin
for j:=1 to n do
begin{проверка условия задания}
if j<=n-i+1 then a[i,j]:=i+j-1
else a[i,j]:=0;
write(a[i,j]:3);{выводим текущий элемент}
end;
writeln;{перевод строки}
end;
end.[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
04.02.2019, 14:05
общий
это ответ
Здравствуйте, mustang289!
#1
[code lang=pascal]var a:array[1..20,1..20] of integer;
n,i,j:byte;
begin
repeat
write('Введите размер матрицы от 2 до 20 n=');
readln(n);
until n in [2..20];{контроль ввода размера матрицы}
for i:=1 to n do
begin
for j:=1 to n do
begin{проверка условия задания}
if j<=n-i+1 then a[i,j]:=i+j-1
else a[i,j]:=0;
write(a[i,j]:3);{выводим текущий элемент}
end;
writeln;{перевод строки}
end;
end.[/code]
#2
[code lang=pascal h=300]Var a: array[1..20, 1..20] of integer;
n,i,j,mins, maxs, mini, maxi, t : integer;
begin
repeat
write('Введите размер матрицы от 1 до 20 n=');
readln(n);
until n in [1..20];
for i:=1 to n do
begin
for j:=1 to n do
begin
if j<=n-i+1 then a[i,j]:=i+j-1
else a[i,j]:=0;
write(a[i,j]:3);
end;
writeln;
end;
mins:=0;{текущая сумма}
for j:=1 to n do{суммируем строку}
mins:= mins+a[1,j];{summa v str 1, poka=min}
maxs:= mins;{для первой строки минимум и максимум равны}
mini:= 1;{индекс минимальной строки}
maxi:= 1;{индекс максимальной строки}
for i:=1 to n do
begin
t:=0;{сумма текущей строки}
for j:=1 to n do
t:= t+ a[i,j];{суммируем}
if (t>maxs) then{проверяем максимум}
begin{меняем текущий максимум}
maxs:= t;
maxi:= i;
end;
if (t<mins) then{проверяем минимум}
begin{меняем текущий минимум}
mins:= t;
mini:= i;
end;
end;
{выводим результат работы}
writeln ('Максимальная сумма = ', maxs, ' строка ', maxi);
for j:=1 to n do
write(a[maxi,j],' ');
writeln;
writeln;
writeln ('Минимальная сумма = ', mins, ' строка ', mini);
for j:=1 to n do
write(a[mini,j],' ');
Readln;
end.[/code]
#3
[code lang=pascal]var rmatr:array[1..10,1..10] of real;
n,m,i,j,imx,jmx,k:byte;
mx,x:real;
begin
repeat
write('Введите количество строк от 3 до 10 n=');
readln(n);
until n in [3..10];
repeat
write('Введите количество столбцов от 3 до 10 m=');
readln(m);
until m in [3..10];
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
rmatr[i,j]:=i+j-1;{формируем матрицу}
write(rmatr[i,j]:6:2);{и выводим её}
if i+j=2 then
begin{запоминание первого элемента матрицы}
mx:=rmatr[1,1];
imx:=1;
jmx:=1;
end
else{поиск максимального абсолюта}
if abs(rmatr[i,j])>abs(mx) then
begin
mx:=rmatr[i,j];
imx:=i;
jmx:=j;
end;
end;
writeln;
end;
writeln('Максимальный по модулю элемент=',mx:0:2,' в строке ',imx,' в столбце ',jmx);
if n<m then i:=n else i:=m;
repeat
write('Введите номер строки и столбца для обмена от 1 до ',i,' k<>',imx,' k<>',jmx,' k=');
readln(k);
until (k in [1..i])and(k<>imx)and(k<>jmx);
for j:=1 to m do
begin{перестановка строк}
x:=rmatr[imx,j];
rmatr[imx,j]:=rmatr[k,j];
rmatr[k,j]:=x;
end;
for i:=1 to n do
begin{перестановка столбцов}
x:=rmatr[i,jmx];
rmatr[i,jmx]:=rmatr[i,k];
rmatr[i,k]:=x;
end;
writeln('Перестановка строк и столбцов с тем чтобы элемент ',mx:0:2);
writeln('оказался в ячейке [',k,',',k,']');
for i:=1 to n do
begin{вывод результата}
for j:=1 to m do
write(rmatr[i,j]:6:2);
writeln;
end;
end.[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа