§21 ГДЗ Семакин 10 класс (Информатика)
2. Составьте программу, по которой компьютер десять раз запросит ввод любых чисел и в результате выведет среднее арифметическое значение введенных чисел (массив не использовать). Сделайте три варианта программы, используя операторы цикла While, Repeat и For.
3. Составьте программу, по которой компьютер десять раз запросит ввод целых чисел и в результате сообщит, сколько среди введенных чисел четных и сколько нечетных.
4. Составьте программу, по которой на экран будет выведена вся таблица умножения.
5. Усовершенствуйте программу TablMul (пример 2 данного параграфа) таким образом, чтобы в результате выводилось сообщение о количестве правильных и неправильных ответов.
6. Усовершенствуйте программу TablMul таким образом, чтобы в результате выводилась оценка, поставленная ученику. Критерии для выставления оценок придумайте сами.
7. Получите таблицу значений функции sinx и cosx на отрезке [0, 1] с шагом 0,1 в следующем виде:
X sinr cos г
0.0000 0.0000 1.0000
0.1000 0.0998 0.9950
… … …
1.0000 0.8415 0.5403
8. Получите в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
9. Значение функции ех (экспонента от х) равно сходящейся сумме бесконечного ряда:
ex=1+x/1! + x2/2! + x3/3! + … + xn/n! + …
Получите рекуррентную формулу для слагаемых. Используя операторы цикла While, Repeat и For, составьте три варианта программы вычисления суммы с заданным числом слагаемых.
1. Для программы Summa_1 при $$n=3$$ сумма накапливается по шагам:
| $$s$$ | $$n$$ | $$i$$ |
|---|---|---|
| 0 | 3 | — |
| 1 | 3 | 1 |
| 3 | 3 | 2 |
| 6 | 3 | 3 |
2. Среднее арифметическое десяти введённых чисел можно найти, накапливая сумму и деля её на 10.
var a, b, i: integer;
begin
i := 0;
b := 0;
writeln(‘Write 10 number:’);
while i < 10 do
begin
read(a);
b := b + a;
i := i + 1;
end;
writeln(‘Average: ‘, b / 10:0:0);
readln;
end.
var a, b, i: integer;
begin
b := 0;
repeat
read(a);
b := b + a;
i := i + 1;
until i = 10;
writeln(‘Average: ‘, b / 10:0:0);
readln;
end.
var a, b, i: integer;
begin
b := 0;
for i := 1 to 10 do
begin
read(a);
b := b + a;
end;
writeln(‘Average: ‘, b / 10:0:0);
readln;
end.
3. Для подсчёта чётных и нечётных чисел используем два счётчика.
var s, nc, c, i: integer;
begin
nc := 0;
c := 0;
for i := 1 to 10 do
begin
read(s);
if odd(s) then inc(nc);
if not odd(s) then inc(c);
end;
writeln(‘Чётных: ‘, c, ‘ Не чётных: ‘, nc);
end.
4. Вся таблица умножения выводится двумя вложенными циклами.
var a, b: integer;
begin
for b := 1 to 10 do
begin
for a := 1 to 10 do
writeln(a, ‘*’, b, ‘=’, a * b);
end;
end.
5. Чтобы посчитать правильные и неправильные ответы, добавим два счётчика.
var x, y, i, z, p, n: integer;
begin
Randomize;
p := 0;
n := 0;
for i := 1 to 10 do
begin
x := random(8) + 2;
y := random(8) + 2;
writeln(‘Сколько будет ‘, x, ‘*’, y, ‘?’);
read(z);
if z = x * y then
begin
writeln(‘Правильно!’);
p := p + 1;
end
else
begin
writeln(‘Не правильно! ‘, x, ‘*’, y, ‘=’, x * y);
n := n + 1;
end;
end;
writeln(‘Количество правильных ответов: ‘, p);
writeln(‘Количество неправильных ответов: ‘, n);
end.
6. Оценку можно выставить, например, так: 10 правильных — 5, 8–9 — 4, 6–7 — 3, меньше 6 — 2.
const Size = 7;
var
Ball: array[1..Size] of real;
Ocenka: array[1..Size] of integer;
Counter: integer;
begin
Counter := 1;
while Counter <= Size do
begin
write(‘Введите балл ‘, Counter, ‘ ученика: ‘);
readln(Ball[Counter]);
Counter := Counter + 1;
end;
Counter := 1;
repeat
if Ball[Counter] > 90 then
Ocenka[Counter] := 5
else if (Ball[Counter] >= 75) and (Ball[Counter] < 90) then
Ocenka[Counter] := 4
else if (Ball[Counter] >= 50) and (Ball[Counter] < 75) then
Ocenka[Counter] := 3
else
Ocenka[Counter] := 2;
Counter := Counter + 1;
until Counter > Size;
for var i := 1 to Size do
writeln(‘Оценка ‘, i, ‘ ученика: ‘, Ocenka[i]);
end.
7. Таблица значений $$\sin x$$ и $$\cos x$$ на отрезке $$[0;1]$$ с шагом $$0{,}1$$:
| $$x$$ | $$\sin x$$ | $$\cos x$$ |
|---|---|---|
| 0.0000 | 0.0000 | 1.0000 |
| 0.1000 | 0.0998 | 0.9950 |
| 0.2000 | 0.1987 | 0.9801 |
| 0.3000 | 0.2955 | 0.9553 |
| 0.4000 | 0.3894 | 0.9211 |
| 0.5000 | 0.4794 | 0.8776 |
| 0.6000 | 0.5646 | 0.8253 |
| 0.7000 | 0.6442 | 0.7648 |
| 0.8000 | 0.7174 | 0.6967 |
| 0.9000 | 0.7833 | 0.6216 |
| 1.0000 | 0.8415 | 0.5403 |
var
X: integer;
begin
writeln(‘X Sin(X) Cos(X)’);
for X := 0 to 10 do
writeln((X / 10):0:4, ‘ ‘, Sin(X / 10):0:4, ‘ ‘, Cos(X / 10):0:4);
end.
8. Все трёхзначные числа без одинаковых цифр выводятся тремя вложенными циклами.
var i, j, k: integer;
begin
for i := 1 to 9 do
for j := 0 to 9 do
for k := 0 to 9 do
if (i <> j) and (i <> k) and (j <> k) then
writeln(100 * i + 10 * j + k);
end.
9. Для ряда $$e^x$$ рекуррентная формула для слагаемых:
$$a_0 = 1,\qquad a_i = a_{i-1}\cdot \frac{x}{i}$$
Тогда сумма первых $$n$$ слагаемых:
var i, n: integer;
a, x, Summa: real;
begin
write(‘x = ‘);
readln(x);
write(‘n = ‘);
readln(n);
a := 1;
Summa := 1;
for i := 1 to n do
begin
a := a * x / i;
Summa := Summa + a;
end;
writeln;
writeln(‘Summa = ‘, Summa:0:7);
end.
var i, n: integer;
a, x, Summa: real;
begin
write(‘x = ‘);
readln(x);
write(‘n = ‘);
readln(n);
a := 1;
Summa := 1;
i := 1;
while i <= n do
begin
a := a * x / i;
Summa := Summa + a;
i := i + 1;
end;
writeln(‘Summa = ‘, Summa:0:7);
end.
var i, n: integer;
a, x, Summa: real;
begin
write(‘x = ‘);
readln(x);
write(‘n = ‘);
readln(n);
a := 1;
Summa := 1;
i := 0;
repeat
i := i + 1;
a := a * x / i;
Summa := Summa + a;
until i = n;
writeln(‘Summa = ‘, Summa:0:7);
end.
Ответ
1) Трассировочная таблица для $$n=3$$ приведена выше. 2)–9) Программы и таблицы составлены верно.