
Буду очень признательна за помощь. Нужно написать программу на Паскале ABC. Задан массив
вещественных чисел Х(n). Найти • сумму элементов с нечетными номерами; • произведение элементов массива, расположенных между первым и последним отрицательными элементами. Из данного массива и некоторого массива того же типа, но другой размерности Y(m), сформировать общий массив Z(n+m). Удалить из полученного массива наименьший элемент.

Ответы на вопрос

Program fantscrin;
const n = 15;
const m = 10;
Var x: array [1..n] of real;
y: array [1..n] of real;
z: array [1..n+m] of real;
i,e_1,e_2,g:integer; s,p,min:real;
Begin
for i:=1 to n do
x[i]:=random(20)-10;
for i:=1 to m do
y[i]:=random(10)-5;
for i:=1 to n do
write(x[i],' ');
s:=0;
for i:=1 to n do
if(i mod 2 <> 0) then s:=s+x[i];
for i:=1 to n do
if (x[i] < 0) then
begin
e_1:=i;
break;
end;
for i:=n downto 1 do
if (x[i] < 0) then
begin
e_2:=i;
break;
end;
p:=1;
for i:=e_1 to e_2 do
p:=p*x[i];
for i:=1 to n do
z[i]:=x[i];
for i:=1 to m do
z[n+i]:=y[i];
min:=z[1];
g:=1;
for i:=2 to n+m do
if (z[i] < min) then
begin
min:=z[i];
g:=i;
end;
writeln('');
writeln('1. : ',s);
writeln('2. : ',p);
for i:=1 to m do
write(y[i],' ');
writeln('');
for i:=1 to n+m do
write(z[i],' ');
for i:=g to n+m-1 do
z[i]:=z[i+1];
z[n+m]:=0;
writeln('');
writeln(g);
for i:=1 to n+m-1 do
write(z[i],' ');
End.



Для решения этой задачи на Паскале ABC, нужно написать соответствующий алгоритм. Ниже приведен код программы:
pascalprogram ArrayOperations; const MaxSize = 100; // Максимальный размер массива type RealArray = array[1..MaxSize] of Real; procedure ReadArray(var arr: RealArray; var n: Integer); var i: Integer; begin Write('Введите размер массива (не более ', MaxSize, '): '); ReadLn(n); WriteLn('Введите элементы массива:'); for i := 1 to n do ReadLn(arr[i]); end; function SumOddElements(const arr: RealArray; n: Integer): Real; var i: Integer; begin Result := 0.0; for i := 1 to n do if i mod 2 <> 0 then Result := Result + arr[i]; end; procedure FindFirstLastNegatives(const arr: RealArray; n: Integer; var firstNeg, lastNeg: Integer); var i: Integer; begin firstNeg := -1; lastNeg := -1; for i := 1 to n do begin if arr[i] < 0 then begin if firstNeg = -1 then firstNeg := i; lastNeg := i; end; end; end; function ProductBetweenNegatives(const arr: RealArray; n, firstNeg, lastNeg: Integer): Real; var i: Integer; begin Result := 1.0; if (firstNeg = -1) or (lastNeg = -1) then Exit; // Нет отрицательных элементов for i := firstNeg + 1 to lastNeg - 1 do Result := Result * arr[i]; end; procedure MergeArrays(const arr1: RealArray; n: Integer; const arr2: RealArray; m: Integer; var mergedArr: RealArray); var i: Integer; begin // Копируем первый массив for i := 1 to n do mergedArr[i] := arr1[i]; // Копируем второй массив for i := 1 to m do mergedArr[n + i] := arr2[i]; end; function FindMinElement(const arr: RealArray; n: Integer): Real; var i: Integer; minElement: Real; begin minElement := arr[1]; for i := 2 to n do begin if arr[i] < minElement then minElement := arr[i]; end; Result := minElement; end; procedure RemoveElement(var arr: RealArray; var n: Integer; element: Real); var i, j: Integer; begin for i := 1 to n do begin if arr[i] = element then begin // Смещаем элементы влево, чтобы удалить текущий элемент for j := i to n - 1 do arr[j] := arr[j + 1]; Dec(n); Break; // Удаляем только первое вхождение элемента end; end; end; var X: RealArray; Y: RealArray; Z: RealArray; n, m: Integer; sumOddElements, productBetweenNegatives, minElement: Real; firstNeg, lastNeg: Integer; begin ReadArray(X, n); sumOddElements := SumOddElements(X, n); WriteLn('Сумма элементов с нечетными номерами: ', sumOddElements); FindFirstLastNegatives(X, n, firstNeg, lastNeg); productBetweenNegatives := ProductBetweenNegatives(X, n, firstNeg, lastNeg); WriteLn('Произведение элементов между первым и последним отрицательными элементами: ', productBetweenNegatives); ReadArray(Y, m); SetLength(Z, n + m); MergeArrays(X, n, Y, m, Z); minElement := FindMinElement(Z, n + m); RemoveElement(Z, n + m, minElement); WriteLn('Массив Z после удаления наименьшего элемента:'); for i := 1 to n + m - 1 do WriteLn(Z[i]:0:2); end.
Программа сначала считывает массив X(n)
и находит сумму элементов с нечетными номерами. Затем она ищет первый и последний отрицательные элементы массива X(n)
и находит произведение элементов между ними. После этого программа считывает массив Y(m)
и объединяет его с массивом X(n)
в массив Z(n+m)
. Затем программа находит наименьший элемент в массиве Z
и удаляет его. В результате получается массив Z
без наименьшего элемента.
Пожалуйста, убедитесь, что у вас установлена среда разработки, поддерживающая язык Паскаль ABC, чтобы скомпилировать и запустить эту программу.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili