Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

puporev
Статус: Профессионал
Рейтинг: 292
∙ повысить рейтинг »
zdwork
Статус: 1-й класс
Рейтинг: 103
∙ повысить рейтинг »
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 3
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1758
Дата выхода:04.02.2019, 23:45
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:31 / 36
Вопросов / ответов:1 / 1

Консультация # 194542: Здравствуйте! У меня возникли сложности с таким вопросом: Препод заставил объяснять чуть ли ни каждую строчку что она делает, помогите с объяснениями #1
			
			

Консультация # 194542:

Здравствуйте! У меня возникли сложности с таким вопросом:
Препод заставил объяснять чуть ли ни каждую строчку что она делает, помогите с объяснениями
#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.

Дата отправки: 30.01.2019, 23:33
Вопрос задал: mustang289 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, mustang289!
#1

Код (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.

#2
Код (Pascal) :: выделить код
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
Код (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.

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 04.02.2019, 14:05
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное