1. Условие:
Вычислить сумму квадратов всех целых чисел, попадающих в интервал (Ln(x), exp(x)) при x>1
2. Математическая модель:
Ln - возвращает натуральный логарифм аргумента.
Еxp(x) - значение e, возведённое в степень х, где e — основание натуральных логарифмов.
Trunc - целая часть числа с плавающей запятой
3. Таблица внешних спецификаций:
Таблица 1.
No | Имя | Назначение | Тип | Ед. изм. | ОДЗ |
n | число | целое | - | положительное четное | |
b | Вспомогательная переменная | целое | - | любое | |
i | Вспомогательная переменная | вещ | - | любое | |
x | Вспомогательная переменная | вещ | - | любое | |
sum | результат | длинное целое число | - | диапазон 2147483648..2147483647 | |
SOOB1 | Сообщение | текст | - | 1 вид | |
SOOB2 | Сообщение | текст | - | 1 вид |
Сообщения:
c1: ‘Введите число 22<x>1: ’
c2: ‘Сумма квадратов целых чисел в интервале от до ’
3. Таблица тестов:
Таблица 2.
№ теста | Исходные данные | Результат | Примечания | ||
x | Ln(x) | Exp(x) | sum | ||
0.693147180559945 | 7.38905609893065 | ||||
1.79175946922806 | 403.428793492735 | ||||
2.30258509299405 | 22026.4657948067 | ||||
3.04452243772342 | 1318815734.48321 | -110642475 | |||
- | - | - | Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32.* |
* дописываю промежуток вводимых значений n от 2 до 21.
|
|
5. Алгоритмизация:
Блок-схема алгоритма (рис. 1):
Рис. 1. Блок-схема алгоритма
6. Кодирование алгоритма:
program kontr21;
Var
a, b, i: integer;
x: real;
sum: longint;
Begin
Repeat
writeln('Введите число 22<x>1: ');
readln(x);
until (x > 1) and (x < 22);
a:= Trunc(ln(x)+1);
b:= Trunc(exp(x));
for i:= a to b do
sum:= sum + Sqr(i);
writeln('Сумма квадратов целых чисел в интервале от ', ln(x), ' до ', exp(x), ' = ', sum);
readln;
end.
Задание 24а.
1. Условие:
Продолжить последовательность и составить программу, печатающую N чисел данной последовательности: 21, 20, 18, 15, 11, 6, ___, ___
2. Математическая модель:
Inc(x) - процедура порядкового типа увеличивает x на 1
3. Таблица внешних спецификаций:
Таблица 1.
No | Имя | Назначение | Тип | Ед. изм. | ОДЗ |
n | число | целое. | - | положительное | |
a | Результат последовательности | целое | - | любое | |
i | Вспомогательная переменная | целое | - | положительное | |
SOOB1 | Сообщение | текст | - | 1 вид | |
SOOB2 | Сообщение | текст | - | 1 вида |
Сообщения:
c1: ‘Введите количество цифр в последовательности’
c2: ‘, ’
4. Таблица тестов:
Таблица 2.
№ теста | Исходные данные | Результат вывода | Примечания |
n | |||
21, 20, 18, 15, 11 | |||
21, 20, 18, 15, 11, 6, 0, -7, -15, -24, -34 | |||
21, 20, 18, 15, 11, 6, 0, -7, -15, -24, -34, -45, -57, -70, -84, -99, -115, -132, -150, -169 |
5. Алгоритмизация:
Блок-схема алгоритма (рис. 1):
Рис. 1. Блок-схема алгоритма
6. Кодирование алгоритма:
|
|
program kontr25a;
Var
a,n,i:integer;
Begin
writeln('Введите количество цифр в последовательности');
readln(n);
a:=21;i:=0;
while i<n do begin
write(a,', ');
inc(i);
a:=a-i;
end;
end.