Задание: Вывести на экран таблицу значений f(хi) из таблицы 2 (см. задания для РГР) при изменении аргумента хi от а до b, где хi – i - ое значение х на отрезке [a, b], причем x0 =a, xk+1 =b. При выводе таблицы на экран использовать символы псевдографики.
Математическое описание задачи: для данной задачи математическое описание присутствует в задание РГР № 2.
Схема алгоритма. В соответствии с заданием разработан алгоритм, схема которого отражена блок-схемой на рисунке 3.1.
Рисунок 3.1 – Блок-схема задания РГР № 3.
Разработка программы. Разработка программы проводилась на языке высокого уровня Паскаль. Список идентификаторов для программы, разрабатываемой в соответствии с алгоритмом, отраженном на рисунке 3.1, представлен в таблице 3.1.
Таблица 3.1 – Список идентификаторов для задания РГР № 3.
№ | Наименование переменной и ее смысл | Обозначение в алгоритме | Обозначение в программе |
Аргумент x | x | x | |
Аргумент N | N | N | |
Значение функции f | f | f | |
Число k | k | k | |
Начальное значение а | а | А | |
Начальное значение b | b | b | |
Число i | i | i |
Текст программы представлен на рисунке 3.2.
write(' a = ');read(a);
write(' b = ');read(b);
write(' N = ');read(N);
write(' На сколько разбить отрезков k ');read(k);
H:= (b - a) / k; {Шаг диапазона}
writeln('Изменение функции f:=x*1/(exp(ln(exp(ln(abs(x))*2.34)+cos(x))*(x*cos(x))))');
writeln(' на интервале [', a, ';', b, '] с шагом ', H:0:2);
writeln;
writeln;
writeln(' ┌────────┬──────────┐ ');
writeln(' │ xi │ fi │ ');
writeln(' ├────────┼──────────┤ ');
for i:= 0 to k do
Begin
x:= a + i * H;
if (x < 0) and (x < N) then
f:= x * 1 / (exp(ln(exp(ln(abs(x)) * 2.34) + cos(x)) * (x * cos(x))));
if (x > 0) and (x < N) then
|
f:= x * (exp(ln(exp(ln(x) * 2.34) + cos(x)) * (x * cos(x))));
if (x > 0) and (x >= N) then
f:= ln(abs(ln(abs((x * sin(ln(x) * N)))))) / ln(3);
if (x < 0) and (x >= N) then
f:= ln(abs(ln(abs((x * sin(ln(abs((x) * N)))))))) / ln(3);
Begin
writeln(' │', x:6:5, ' │ ', f:2:6, '│');
end;
end;
writeln(' └────────┴──────────┘');
end.
Тестирование программы. Тестирование является процессом прогона программы на различных входных данных с целью обнаружения ошибок в ней.
Результаты тестирования отражены в таблице 3.2. Вид окна с результатами работы программы на некотором наборе исходных данных показан на рисунке 3.3.
Таблица 3.2 – Результаты тестирования программы РГР № 3.
№ Теста | Тестовые действия | Результат программы | ||
Ожидаемый результат | Результат, выданный программой | |||
Ввод числовых данных | Ввод натуральных чисел | Корректный вывод на экран цифр | Цифры отображаются корректно | |
Некорректный ввод данных | Ввод дробных чисел (туда, где они не допустимы) | Выдача сообщения об ошибке | Выдача сообщения об ошибке | |
Вводимые данные - буквы | Выдача сообщения об ошибке | Выдача сообщения об ошибке |
Проведенное тестирование показало корректную работу программы на предложенных тестовых наборах входных данных, а выявленные ошибки были исправлены путем введения в программу дополнительных проверок.
Рисунок 3.3 – Результат программы.
РГР № 4. Преобразование матриц.
Задание: Дана матрица А размера n*m, где n<=15, m<=15. Предусмотреть, чтобы ее элементы a(i,j) могли задаваться с клавиатуры или заполняться случайными целыми числами из диапазона [-N*10; N*10), где N – номер варианта. Ввести два целых числа k и q. В строках от k до q (включая k и q) отсортировать элементы в порядке убывания.
|
Математическое описание задачи: для данной задачи математическое описание присутствует в задание РГР № 4.
Схема алгоритма. В соответствии с заданием разработан алгоритм, схема которого отражена блок-схемой на рисунке 4.1.
Рисунок 4.1 – Блок-схема задания РГР № 4.
Разработка программы. Разработка программы проводилась на языке высокого уровня Паскаль. Список идентификаторов для программы, разрабатываемой в соответствии с алгоритмом, отраженном на рисунке 4.1, представлен в таблице 4.1.
Таблица 4.1 – Список идентификаторов для задания РГР № 4.
№ | Наименование переменной и ее смысл | Обозначение в алгоритме | Обозначение в программе |
Число d | d | d | |
Количество строк (n) | n | n | |
Количество столбцов (m) | m | m | |
Массив x | x | x | |
Номер строки i | i | i | |
Номер столбца j | j | j | |
Номер строки, с которой начинаем преобразования (k) | k | k | |
Номер строки, с которой начинаем преобразования (q) | q | q | |
Число g | g | g |
Текст программы представлен на рисунке 4.2.
write(' Выбор между автоматическим и ручным вводом d = (0 - ввод-автомат) ');read(d);
writeln;
write(' n = ');read(n);
write(' m = ');read(m);
if d = 0 then
for i:= 1 to n do
for j:= 1 to m do
x[i, j]:= random(100)
Else
for i:= 1 to n do
for j:= 1 to m do
Begin
write(' x[', i, ',', j, '] = ');readln(x[i, j]);
end;
writeln;writeln(' Вывод исходного массива');
for i:= 1 to n do
Begin
for j:= 1 to m do
write(x[i, j]:7:2, ' ');
writeln;
end;
writeln;
write(' k = ');read(k);
write(' q = ');read(q);
b:= 0;
while b <=q do
Begin
for i:= k to q do
for j:= 1 to m do
Begin
if x[i, j] < x[i, j + 1] then
Begin
|
g:= x[i, j];
x[i, j]:= x[i, j + 1];
x[i, j + 1]:= g;
end;
if x[i, j] < x[i, j + 1] then
x[i, j]:= x[i, j];
end;
inc(b);
end;
writeln;
writeln(' Изменённый массив');
for i:= 1 to n do
Begin
for j:= 1 to m do
write(x[i, j]:7:2, ' ');
writeln;
end;
readkey;
end.
Тестирование программы. Тестирование является процессом прогона программы на различных входных данных с целью обнаружения ошибок в ней.
Результаты тестирования отражены в таблице 4.2. Вид окна с результатами работы программы на некотором наборе исходных данных показан на рисунке 4.3.
Рисунок 4.3 – Результат программы.
Таблица 4.2 – Результаты тестирования программы РГР № 4.
№ Теста | Тестовые действия | Результат программы | ||
Ожидаемый результат | Результат, выданный программой | |||
Ввод числовых данных | Ввод натуральных чисел | Корректный вывод на экран цифр | Цифры отображаются корректно | |
Некорректный ввод данных | Ввод дробных чисел (туда, где они не допустимы) | Выдача сообщения об ошибке | Выдача сообщения об ошибке | |
Вводимые данные - буквы | Выдача сообщения об ошибке | Выдача сообщения об ошибке |
Проведенное тестирование показало корректную работу программы на предложенных тестовых наборах входных данных, а выявленные ошибки были исправлены путем введения в программу дополнительных проверок.