Пример выполнения задания

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. Что такое спецификация переменных?