Числовые линейные массивы - Pascal ABC
Формулировка задачи:
кто знает как это решать?
Решение задачи: «Числовые линейные массивы»
textual
Листинг программы
const n=25; var b:array[1..n] of integer; i,j,imax,s1,s2,x:integer; begin randomize; writeln('Исходный вектор'); s1:=0; imax:=1; for i:=1 to n do begin b[i]:=10+random(90); write(b[i]:3); if(i mod 2=0)and(b[i] mod 2=0) then s1:=s1+b[i]; if b[i]>b[imax] then imax:=i; end; writeln; writeln('Сумма четных элементов на четных местах=',s1); writeln('Максимальный элемент b[',imax,']=',b[imax]); if imax in[n-1,n] then s2:=0 else begin s2:=0; for i:=imax+1 to n-1 do s2:=s2+b[i]; end; writeln('Сумма между последним и максимальным элементами=',s2); if imax=1 then writeln('Максимальный элемент первый, обмена нет') else begin x:=b[1]; b[1]:=b[imax]; b[imax]:=x; writeln('Обмен первого и максимального'); for i:=1 to n do write(b[i]:3); writeln; end; for i:=1 to n-1 do for j:=i+1 to n do if b[i]<b[j] then begin x:=b[i]; b[i]:=b[j]; b[j]:=x; end; writeln('Вектор отсортирован по убыванию'); for i:=1 to n do write(b[i]:3); end.
Объяснение кода листинга программы
Список действий в коде:
- Инициализация переменных и массива
const n=25;
- объявление константыn
равной 25var b:array[1..n] of integer;
- объявление массиваb
размеромn
для хранения целых чиселvar i,j,imax,s1,s2,x:integer;
- объявление шести переменных типаinteger
для выполнения различных операций
- Инициализация начального вектора
randomize;
- инициализация генератора случайных чиселwriteln('Исходный вектор');
- вывод заголовка для раздела, содержащего исходный векторfor i:=1 to n do
- начало цикла, который выполняетсяn
раз, гдеn
- размер массиваb[i]:=10+random(90);
- присваивание каждому элементу массиваb
случайного числа в диапазоне от 10 до 99write(b[i]:3);
- вывод каждого элемента массива в формате трехзначного числаif(i mod 2=0)and(b[i] mod 2=0) then s1:=s1+b[i];
- проверка, является ли текущий элемент четным и если да, то прибавление его к сумме четных элементовs1
if b[i]>b[imax] then imax:=i;
- проверка, является ли текущий элемент максимальным и если да, то обновление индексаimax
end;
- конец цикла
- Вывод суммы четных элементов на четных местах и максимального элемента
writeln('Сумма четных элементов на четных местах=',s1);
- вывод суммы четных элементов на четных местахwriteln('Максимальный элемент b[',imax,']=',b[imax]);
- вывод индекса и значения максимального элемента
- Проверка, является ли максимальный элемент первым, и если нет, то обмен первого и максимального элементов
if imax=1 then writeln('Максимальный элемент первый, обмена нет')
- вывод сообщения, если максимальный элемент находится на первом местеelse
- начало условного блокаx:=b[1];
- присваивание переменнойx
значения первого элемента массиваb
b[1]:=b[imax];
- присваивание первому элементу массива значения максимального элементаb[imax]:=x;
- присваивание максимальному элементу значения переменнойx
writeln('Обмен первого и максимального');
- вывод сообщения об обмене первого и максимального элементовend;
- конец условного блока
- Сортировка вектора в порядке убывания
for i:=1 to n-1 do
- начало внешнего цикла, который выполняетсяn-1
разfor j:=i+1 to n do
- начало внутреннего цикла, который выполняетсяn-i
разif b[i]<b[j] then
- проверка, является ли элементb[i]
меньше элементаb[j]
begin
- начало условного блокаx:=b[i];
- присваивание переменнойx
значения элементаb[i]
b[i]:=b[j];
- присваивание элементуb[i]
значения элементаb[j]
b[j]:=x;
- присваивание элементуb[j]
значения переменнойx
end;
- конец условного блокаend;
- конец внешнего цикла
- Вывод отсортированного вектора
writeln('Вектор отсортирован по убыванию');
- вывод сообщения о сортировке вектораfor i:=1 to n do
- начало цикла, который выполняетсяn
разwrite(b[i]:3);
- вывод каждого элемента массива в формате трехзначного числаend;
- конец цикла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д