Задание 1Нахождение суммы (творенья, количества) частей (владеющих данным

Задание 1

Нахождение суммы (произведения, количества) элементов (обладающих заданным свойством).
Заполнить одномерный массив А из 10 элементов случайными числами из отрезка [-20,50].


Любую задачку на массив можно разбить на подзадачи. Так, в данной задачке две подзадачи: 1. формирование массива; 2. Вывод массива на экран. Потому программа решения данной задачки будет содержать процедуры: Vvod и Vivod.
Заметим, что наполнение и вывод на экран массива можно выполнить только поэлементно, то есть можно поначалу присвоить значение первому элементу, потом второму и так дальше.
Поскольку знаменито количество повторений команды ввода либо вывода частей массива, то при составлении программ на массивы употребляется цикл с параметром:
Program massiv1; Uses Crt;
Type Mas=Array [1..10] of Real;
Var a:Mas;
Procedure Vvod(Var x:Mas);
Var i:Integer;
Begin For i:=1 To 10 Do x[i]:=30*Random+20;(B-A)*random+A
End;
Procedure Vivod(Var x:Mas);
Var i:Integer;
Begin For i:=1 To 10 do Write(x[i]:8:2)
End;
Begin
Vvod(a); Vivod(a); End.
Дополним программу, решив задачу: отыскать среднее арифметическое положительных элементов массива процедурой:
Procedure sr_arif(Var x:Mas;Var c:Real);
Var i,k:Integer;
Begin c:=0;k:=0;For i:=1 To 10 Do
If x[i]gt;0 Then Begin c:=c+x[i];k:=k+1 End; c:=c/k End;
В программу добавятся строчки:
sr_arif(a,s); Writeln('Среднее ариф. положительных частей = ',s:8:2); Модифицируйте программу для решения последующих задач:
1)Отыскать сумму частей, кратных данному числу;
2)Отыскать количество отрицательных частей.
3)Отыскать творенье частей, наименьших 10.
помогите пожалуйста:))))))))) это 10-11 класс.

Задать свой вопрос
1 ответ
1)
Program massiv1;
Uses Crt;
Type Mas=Array [1..10] of integer; 
Var a:Mas; d,s:integer;
Procedure Vvod(Var x:Mas); 
Var i:Integer;
Begin For i:=1 To 10 Do
 x[i]:=Random(50);
End;
Procedure Vivod(Var x:Mas);
Var i:Integer;
Begin
For i:=1 To 10 do Write(x[i]:4);
writeln;
End;
Procedure p1(Var x:Mas; d:integer; Var s:integer); 
Var i:Integer;
Begin
s:=0;
For i:=1 To 10 Do
 If x[i] mod d=0 Then s:=s+x[i];
End; 
Begin
Vvod(a);
Vivod(a);
write('d = ');
readln(d);
p1(a,d,s);
Writeln('Сумма частей, кратных ',d,' = ',s);
End.

Пример:
4 18 37 15 45 4 9 48 47 27
d = 3
Сумма частей, кратных 3 = 162

2)
Program massiv2;
Uses Crt;
Type Mas=Array [1..10] of Real; 
Var a:Mas; k:integer;
Procedure Vvod(Var x:Mas); 
Var i:Integer;
Begin For i:=1 To 10 Do
 x[i]:=30*Random-20;(B-A)*random+A
End;
Procedure Vivod(Var x:Mas);
Var i:Integer;
Begin
For i:=1 To 10 do Write(x[i]:8:2);
writeln;
End;
Procedure p2(Var x:Mas;Var k:integer); 
Var i:Integer;
Begin
k:=0;
For i:=1 To 10 Do
 If x[i]lt;0 Then k:=k+1;
End; 
Begin
Vvod(a);
Vivod(a);
p2(a,k);
Writeln('Количество отрицательных частей = ',k);
End.

Пример:
  -13.77  -11.34   -2.35    7.69  -18.85  -12.48   -6.11  -17.10    7.12   -9.60
Количество отрицательных частей = 8

3)
Program massiv3;
Uses Crt;
Type Mas=Array [1..10] of Real; 
Var a:Mas; p:real;
Procedure Vvod(Var x:Mas); 
Var i:Integer;
Begin For i:=1 To 10 Do
 x[i]:=30*Random;(B-A)*random+A
End;
Procedure Vivod(Var x:Mas);
Var i:Integer;
Begin
For i:=1 To 10 do Write(x[i]:8:2);
writeln;
End;
Procedure p3(Var x:Mas;Var p:real); 
Var i:Integer;
Begin
p:=1;
For i:=1 To 10 Do
 If x[i]lt;10 Then p:=p*x[i];
End; 
Begin
Vvod(a);
Vivod(a);
p3(a,p);
Writeln('Произведение частей, наименьших 10 = ',p:8:3);
End.

Пример:
   24.36   22.50    3.31    5.50   21.68    8.22   19.89   24.86    2.69   23.78
Творенье частей, наименьших десяти =  402.027
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт