Помогите решить задачу в паскале.
10-11 класс
|
Даны три массива:
A = {17.2, 9.3, 14.5, -11.7, 4.3,
5.9, -11.9, 12.3, -14.1, -15.3},
function subprogram(a: array of real): real;
begin
foreach obj: real in a do
if (obj > 0) then
result += obj;
end;
var
a: array of real := (17.2, 9.3, 14.5, -11.7, 4.3, 5.9, -11.9, 12.3, -14.1, -15.3);
b: array of real := (-1.2, 4.2, 5.9, -18.1, 21.2, -3.1, -5.3, -12.2, 21.4, -4.5, 8.2, 9.4);
c: array of real := (3.5, 8.4, -3.2, 4.5, -8.4, -9.5, 1.5, 9.3);
begin
writeln('a => ', subprogram(a));
writeln('b => ', subprogram(b));
writeln('c => ', subprogram(c));
end.
type
V = array of real;
function SumPos(a:V): real;
var
i: integer;
s: real;
begin
s := 0;
for i := 0 to Length(a, 0) - 1 do
if a[i] > 0 then s := s + a[i];
Result := s
end;
var
A, B, C: V;
begin
A := new real[10] (17.2, 9.3, 14.5, -11.7, 4.3, 5.9, -11.9, 12.3, -14.1, -15.3);
B := new real[12] (-1.2, 4.2, 5.9, -18.1, 21.2, -3.1, -5.3, -12.2, 21.4, -4.5, 8.2, 9.4);
C := new real[8] (3.5, 8.4, -3.2, 4.5, -8.4, -9.5, 1.5, 9.3);
writeln('Сумма положительных элементов массива А ',SumPos(A));
writeln('Сумма положительных элементов массива B ',SumPos(B));
writeln('Сумма положительных элементов массива C ',SumPos(C));
end.
Тестовый прогон:
Сумма положительных элементов массива А 63.5
Сумма положительных элементов массива B 70.3
Сумма положительных элементов массива C 27.2
Другие вопросы из категории
на третьей сверху полке. Какое количество информации вы получили.
выражение или укажите его результат
(при его однозначности). Результат
упрощения может содержать только
операции инверсии, конъюнкции и
дизъюнкции.
((A and B and not C) ↔ (A or B or not C)) and C
Помогите кто может!
+Если можно скиньте еще ссылку где эту тему подучить! (Не обязательно)
Читайте также
Дан массив А1,.......Аn. найти максимальный и минимальный элементы и поменять их местами. Вот задача которую я делал:
program zadacha;
const
k=50;
var
a:array[1..k] of integer;
n,i:1..k;
c,v,max,min,prom:integer;
begin
for i:=1 to n do begin (здесь выскакивает ошибка о проверки диапазона)
a[i]:=random(50);
write(a[i],' ');
end;
max:=a[1];
min:=a[1];
for i:=1 to n do begin
if a[i]>max then begin
max:=a[i];
c:=i;
end;
if a[i]<min the begin
min:=a[i];
v:=i;
end;
end;
writeln('max=',max,'min=',min);
prom:=max; (вот с этой строчки и до конца помогите решить)
max:=min;
min:=prom;
writeln;
writeln('Полученный массив');
for i:=1 to n do
write(a[i], ' ');
readln;
end.
Дана строка.Перенести последнюю букву слова в начало слова
строка символов р1, р2,
..., рn. Определить число вхождений в последовательность группы
букв "xyz". Вырезать
фрагмент из текста между первым и вторым вхождением группы символов "xyz".
Дана строка, удалить текст находящийся в скобках (вместе со скобками)
Я тут начал делать, вот только с удалением у меня ничего не получается, напишите как можно сделать
Вот как я делал:
program zd;
uses crt;
var s:string; i,l,n,t,y:integer;
begin
clrscr;
writeln('Введите строку');
readln(s);
l:=length(s);
for i:=1 to n do begin
if s[i]='(' then
t:=i; {здесь присваивал номер найденной скобки}
if s[i]=')' then
y:=i; {так же, как и выше}
delete (s,t,i); {у меня получается, что он удаляет с открывающей скобки и всё что находится вправо, а левая часть до скобки остается нетронутой}
end;
writeln('Данный результат =', s);
readln;
end.