Решить на дом: 1) найти сумму элементов массива, больших данного числа b ( b вводится с клавиатуры) 2) есть ли в данном массиве элементы равные заданному числу? если есть, то вывести номер одного из них.
begin Randomize; Writeln('Элементы массива'); for i := 1 to n do begin x[i] := Random(50); Write(x[i]:3); end; Writeln; Write('Введите значение b -> '); Readln(b); s:=0; for i := 1 to n do if x[i]>b then s:=s+b; Writeln('Сумма элементов, больших ',b,', равна ',s) end.
Тестовое решение: Элементы массива 8 46 29 23 21 14 14 8 20 26 15 49 44 35 33 Введите значение b -> 30 Сумма элементов, больших 30, равна 150
const n = 15;
var x: array[1..n] of integer; i, b: integer;
begin Randomize; Writeln('Элементы массива'); for i := 1 to n do begin x[i] := Random(50); Write(x[i]:3); end; Writeln; Write('Введите значение b -> '); Readln(b); i:=1; while (x[i]<>b) and (i<n) do Inc(i); if x[i]=b then Writeln('x[',i,']=',b) else Writeln('Нет элементов со значением, равным ',b) end.
Тестовое решение: Элементы массива 24 6 28 46 25 9 12 47 34 0 20 47 15 10 34 Введите значение b -> 20 x[11]=20
Задача на динамическое программирование. Советую почитать поподробнее на эту тему в интернете. Подобные задачи для изучения: платная лестница, кузнечик, последовательность Фибоначчи. #include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; int height[n]; for(int i=0; i<n; i++) cin >> height[i]; int energy[n]; for(int i=1; i<n; i++) energy[i] = energy[i-1] + abs(height[i]-height[i-1]); cout << height[n-1]; return 0; }
Из условия видно, что количество оценок, распределенных экзаменатором различное и вопрос задачи указывает на одну из всех возможных оценок, поэтому воспользуемся подходом к определению количества информации для неравновероятных событий, а именно формулой Шеннона.Обозначим i4 – количество информации в сообщении "Абитуриент Сидоров получил четверку", i4или3 – количество информации в сообщении "Абитуриент Иванов не сдал экзамен на отлично", I - информационный объем зрительного сообщения о полученной оценки абитуриентом Сидоровым, к – показатель определенной оценки, р3, р4, р5 – вероятности выставления троек, четверок и пятерок соответственно, р4или3 – вероятность выставления оценки не отлично, тогда i4 или 3=3 -log27 бита, i4 = 2 бита. Основные формулы:
n = 15;
var
x: array[1..n] of integer;
i, b, s: integer;
begin
Randomize;
Writeln('Элементы массива');
for i := 1 to n do
begin
x[i] := Random(50);
Write(x[i]:3);
end;
Writeln;
Write('Введите значение b -> '); Readln(b);
s:=0;
for i := 1 to n do if x[i]>b then s:=s+b;
Writeln('Сумма элементов, больших ',b,', равна ',s)
end.
Тестовое решение:
Элементы массива
8 46 29 23 21 14 14 8 20 26 15 49 44 35 33
Введите значение b -> 30
Сумма элементов, больших 30, равна 150
const
n = 15;
var
x: array[1..n] of integer;
i, b: integer;
begin
Randomize;
Writeln('Элементы массива');
for i := 1 to n do
begin
x[i] := Random(50);
Write(x[i]:3);
end;
Writeln;
Write('Введите значение b -> '); Readln(b);
i:=1;
while (x[i]<>b) and (i<n) do Inc(i);
if x[i]=b then Writeln('x[',i,']=',b)
else Writeln('Нет элементов со значением, равным ',b)
end.
Тестовое решение:
Элементы массива
24 6 28 46 25 9 12 47 34 0 20 47 15 10 34
Введите значение b -> 20
x[11]=20