Пример выполнения задания
1. Задание:
Составить спецификацию программы (обязательно включающую блок-схему алгоритма). Написать программу. Составить тесты для проверки программы, используя метод покрытия операторов и метод покрытия решений. Сформировать список ошибок, которые могут быть выявлены этими тестами.
Задача: написать программу, в которой находятся корни квадратного уравнения вида ax2+bx+c=0. Случай комплексных корней (дискриминант меньше нуля) не рассматривать. Коэффициенты a, b и c вводятся с клавиатуры. Значения корней выводятся на экран
2. Спецификация программы:
- Название задачи: квадратное уравнение
- Название программы: quadrur
- Система программирования: С++ Builder
- Системные требования: IBM PC/AT 486 и выше
- Входные данные:
Три действительных числа – коэффициенты.
- Выходные данные:
Вычисленные корни уравнения.
3. Постановка задачи:
Cсоставить программу вычисления квадратного уравнения, если уравнение действительно является квадратными и если имеются действительные корни уравнения. Необходимо составить набор тестов, направленных на обнаружение возможных ошибок.
4. Спецификация переменных:
Имя переменной | Назначение переменной в программе | Тип переменной | Диапазон типа |
a | Первый коэффициент уравнения | Real | 2.9e-39..1.7e38 |
b | Второй коэффициент уравнения | Real | 2.9e-39..1.7e38 |
c | Третий коэффициент уравнения | Real | 2.9e-39..1.7e38 |
Блок-схема алгоритма программы
Нет |
Нет |
dis<0 |
Да |
Да |
НАЧАЛО |
Ввести a, d,c |
Dis=b2-4*a*c |
а=0 |
Уравнение не имеет действительных корней |
Уравнение линейное |
X1=-b-sqrt(dis)/(2*a) |
X1=-b+sqrt(dis)/(2*a) |
x1, x2 Решение квадратного уравнения вида уравнения вида а*x^2+b+x+c=0 |
КОНЕЦ |
Текст программы:
program quadrur;
Uses Crt;
var
a, b, c: real;
procedure Entering;
begin
Write ('Введите значение a: ');
ReadLn (a);
Write ('Введите значение b: ');
ReadLn (b);
Write ('Введите значение c: ');
ReadLn (c);
end; {procedure Entering}
function Dis:real;
begin
dis := b*b-4*a*c;
end; {function Dis}
function Valid:boolean;
begin
Valid := true;
if a = 0 then
begin
Writeln ('Уравнение линейное');
Valid := false;
end
else if Dis < 0 then
begin
Writeln ('Уравнение не имеет действительных корней');
Valid := false;
end;
end; {function Valid}
function Results:real;
begin
WriteLn ('x1 = ',(-b-SQRT(dis))/(2*a):3:6);
WriteLn ('x2 = ',(-b+SQRT(dis))/(2*a):3:6);
end; {function Results}
begin
ClrScr;
Write ('Решение квадратного уравнения');
WriteLn (' вида ax^2+bx+c=0');
WriteLn;
Entering;
if Valid = true then
Results;
ReadKey;
end.
Варианты заданий
Общее задание изложено в примере (п. 1).
Программу разработать в ИСР C+++ Builder в консольном режиме.
№ варианта | Формулировка задачи |
1. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти среднее арифметическое элементов каждого из четных столбцов этой матрицы. |
2. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти среднее арифметическое элементов каждого из нечетных столбцов этой матрицы. |
3. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти среднее арифметическое элементов каждой из строк этой матрицы. |
4. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти среднее арифметическое элементов каждой из четных строк этой матрицы. |
5. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти среднее арифметическое элементов каждой из нечетных строк этой матрицы. |
6. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти среднее арифметическое из всех отрицательных элементов этой матрицы. |
7. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти среднее арифметическое из всех положительных элементов этой матрицы. |
8. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти характеристику каждой ее строки (сумму положительных четных элементов в каждой строке). |
9. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти характеристику каждого ее столбца (сумму модулей отрицательных нечетных элементов в каждом столбце). |
10. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти сумму и произведение всех ее положительных элементов. |
11. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти сумму и произведение всех ее отрицательных элементов. |
12. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти сумму всех ее положительных и произведение всех ее отрицательных элементов. |
13. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти сумму всех ее элементов и заменить ею все диагональные элементы этой матрицы. |
14. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти произведение всех ее элементов и заменить им все диагональные элементы этой матрицы. |
15. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти минимальное из чисел, встречающееся в данной матрице более одного раза. |
16. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти максимальное из чисел, встречающееся в данной матрице более одного раза. |
17. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти сумму наибольших элементов каждой строки матрицы и их координаты. |
18. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти произведение наибольших элементов каждой строки матрицы и их координаты. |
19. | Задана квадратная матрица A размером NxN (N<=10), состоящая из действительных элементов. Найти сумму наибольших элементов каждого столбца матрицы и их координаты. |
20. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти, сколько положительных элементов содержит данная матрица в каждой строке. |
21. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти, сколько отрицательных элементов содержит данная матрица в каждом столбце. |
22. | Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент. |
23. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее. |
24. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Сформировать вектор из суммы элементов строк и найти их среднее арифметическое. |
25. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Сформировать вектор из произведения элементов столбцов и найти их среднее арифметическое. |
26. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Сформировать вектор из наименьших значений элементов строк и найти их среднее арифметическое. |
27. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Сформировать вектор из разностей наибольших и наименьших значений элементов строк. |
28. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти сумму элементов строки, в которой расположен наименьший элемент. |
29. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти сумму элементов столбца, в котором расположен наименьший элемент. |
30. | Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Поменять местами строку, содержащую максимальный элемент, со строкой, содержащей минимальный элемент. |
Контрольные вопросы
1. Что такое спецификация программы?
2. Что в себя включает постановка задачи?
3. Что в себя включает анализ требований и определение спецификаций?
4. Какова основная задача проектирования программного продукта?
5. Что такое спецификация переменных?