Найти сумму положительных (SP) и количество отрицательных (PO) элементов массива - Free Pascal
Формулировка задачи:
Помогите пожалуйста с составлением программы.
Условие: Найти сумму положительных (SP) и количество отрицательных (PO) элементов массива Z(7) и минимальный элемент массива b(2,3) и вычислить [x][/i]:
x(i-тое)=((sqrt(SP))/(PO+a*c))+b(min-в индексе)*Sqr(k)+Z(i-ое);
a=2,5e-3;
c=175;
K=8;
Z(i-тое)=-2,3,12,-7,-18,27,-10;
B(2,3)=Матрица 0.3 1.5 -6.1
7.2 10.3 0.6
Добавлено через 5 минут
Вот так написал можете пожалуйста найти ошибку
Program LB5U;
Const a=2.5e-3;
c=175;
K=8;
Z:Array[1..7] of real=(-2,3,12,-7,18,27,-10);
VAR
f:file;
B:Array[1..2 , 1..3] of real;
x:Array[1..7] of real;
i,j,t,y:integer;
min,SP,PO:real;
begin
assign (f,'z:\2Д63\Акимов А\Akimov14.txt');
REWRITE(F);
for i:=1 to 2 do
for j:=1 to 3 do
readln(B[I,J]);
min:=B[1,1];
for i:=1 to 2 do
for j:=1 to 3 do
begin
if B[i,j]<min then min:=B[i,j];
end;
writeln('Минимальный элемент= ', min);
PO:=0;
for t:=1 to 7 do
if Z[t]<0 then
PO:=PO+1;
writeln('Количество отрицательных элементов массива= ', PO);
for y:=1 to 7 do
readln((Z[y]));
SP:=0;
for y:=1 to 7 do
if Z[y]>0 then
SP:=SP+Z[y];
for i:=1 to 7 do
x[i]:=(((sqrt(SP))/(PO+a*c))+min*sqr(K)+Z[i]);
WRITE(f,'X[i]= ',x[i]:3:3);
close(f);
end.Решение задачи: «Найти сумму положительных (SP) и количество отрицательных (PO) элементов массива»
textual
Листинг программы
program LB5U;
const a=2.5e-3;
c=175;
K=8;
Z:Array[1..7] of integer=(-2,3,12,-7,18,27,-10);
B:array[1..2,1..3] of real=((0.3,1.5,-6.1),
(7.2,1.3,0.6));
var f:text;
X:Array[1..7] of real;
i,j,SP,PO:integer;
min:real;
begin
assign (f,'Akimov14.txt'); //файл в папке с програмой
rewrite(f);
writeln(f,'Massiv Z');
SP:=0;
PO:=0;
for i:=1 to 7 do
begin
write(f,Z[i]:4);
if Z[i]>=0 then inc(SP,Z[i])
else inc(PO);
end;
writeln(f);
writeln(f,'SP=',SP,' PO=',PO);
writeln(f,'Massiv B');
for i:=1 to 2 do
begin
for j:=1 to 3 do
begin
write(f,B[i,j]:5:1);
if i+j=2 then min:=B[1,1]
else if B[i,j]<min then min:=B[i,j];
end;
writeln(f);
end;
writeln(f,'min=',min:0:1);
writeln(f,'Massiv X');
for i:=1 to 7 do
begin
X[i]:=sqrt(SP)/(PO+a*c)+min*sqr(K)+Z[i];
write(f,X[i]:10:3);
end;
writeln('Resultaty zapisany v fail Akimov14.txt');
close(f);
readln
end.
Объяснение кода листинга программы
В этом коде используется язык программирования Free Pascal, который является одним из диалектических вариантов языка Паскаль. Программа выполняет следующие действия:
- Создает массив целых чисел Z, содержит семь элементов, принимает значения от -2 до 27.
- Создает двумерный массив B, содержит три элемента в каждом из двух подмассивов, значения массива B содержат числа с плавающей точкой.
- Создает пустой текстовый файл с именем
Akimov14.txtи открывает его для записи. - Записывает в файл массив Z.
- Устанавливает начальные значения переменных SP и PO равными нулю.
- Используя цикл, проходит по всем элементам массива Z.
- Записывает значение каждого элемента массива Z в файл.
- Если значение элемента массива Z больше или равно нулю, увеличивает значение переменной SP на это значение.
- Если значение элемента массива Z меньше нуля, увеличивает значение переменной PO на единицу.
- Выводит на экран значения переменных SP и PO.
- Записывает в файл массив B.
- Используя два вложенных цикла, проходит по всем элементам массива B.
- Записывает значение каждого элемента массива B в файл.
- Если индексы текущего элемента массива B равны 1 и 1, обновляет значение переменной min.
- Если значение текущего элемента массива B меньше значения переменной min, обновляет значение переменной min.
- Выводит на экран значение переменной min.
- Создает массив X, содержит семь элементов.
- Используя цикл, проходит по всем элементам массива X.
- Вычисляет значение каждого элемента массива X по формуле sqrt(SP)/(PO+ac)+minsqr(K)+Z[i].
- Записывает значение каждого элемента массива X в файл.
- Выводит на экран сообщение о том, что результаты сохранены в файле
Akimov14.txt. - Закрывает файл.
- Ждет ввода пользователя.