Читайте также: |
|
1.Условие. Даны матрицы X и Y. Составить матрицу С, по правилу
2.Уточненная постановка задачи.
Даны вещественные квадратные матрицы X и Y из n строк и n столбцов. Составить матрицу С (количество элементов C равно количеству строк матриц = n), где С[i] это сумма i-ых строк матриц А и В
3.Примеры.
Тест 7 С[1]=8.0
Тест 8 C[1]=4.3; C[2]= 8.9; C[3]=3.0
Тест 10 C[1]=19999.0; C[2]= -19999.0 … C[9]=19999.0; C[10]= -19999.0
Таблица данных
Класс | Имя | Описание (смысл), диапазон, точность | Тип | Структура | |
Входные данные | X | Заданная матрица, |Xij|<=1000 Точн. 0.1 | вещ | Двумерный массив (10х10) | |
Y | Заданная матрица, |Yij|<=1000 Точн. 0.1 | вещ | Двумерный массив (10х10) | ||
n | число строк и столбцов в матрицах X,Y 1£n£10 | цел | простая переменная | ||
Выходные данные | C | Созданная матрица |Сi |<=19999 Точн. 0.1 | вещ | одномерный массив | |
Промежу-точные данные | i | Номер текущей строки, 1£i£10 | цел | простая переменная | |
j | Номер текущего столбца, 1£j£10 | цел | простая переменная | ||
5.Входная форма.
нет ввода/вывода
Выходная форма
нет ввода/вывода
Аномалии
нет ввода/вывода
Тесты
Тест 7 С[1]=8.0
Тест 8 C[1]=4.3; C[2]= 8.9; C[3]=3.0
Тест 10 C[1]=19999.0; C[2]= -19999.0 … C[9]=19999.0; C[10]= -19999.0
Метод
Будем просматривать строки, начиная с первой (i:=1) по посдеднюю (i:=n)
Просматриваем все столбцы от первого (j:=1) до последнего (j:=n)
Суммируем все элементы i-ых строк двух матриц и
сумму записываем как элемент матрицы С с индексом i
Получившаяся матрица С – искомая
Алгоритм
Начало А0.6 |
i=1..n, +1 |
C[i]:=0 |
j=1..n, +1 |
C[i]:= C[i]+X[i,j]+Y[i,j] |
Конец А0.6 |
Вх. n, X, Y |
Вых. С |
Программа на паскале. Процедура общего вида
procedure SozdanieC (const n:byte; var X,Y:mas; out C:mas2);
var i,j:byte;
Begin
for i:= 1 to n do
Begin
C[i]:=0;
for j:=1 to n do
C[i]:=C[i]+X[i,j]+Y[i,j];
End;
End;
После написания текста программы можно перейти к написанию структурных тестов.
Для этого составим таблицу, в которой перечислим все структуры ветвления и циклов в порядке их появления в программе.
Тест№ Структура | 11 | 12 | 13 | |||||||||||
If (n<1) or (n>10) | ||||||||||||||
n<1 истина n>10 истина | Не возможно одновременное выполнение этих условий | |||||||||||||
n<1 истина n>10 ложь (n=10) | Не возможно одновременное выполнение этих условий | |||||||||||||
n<1 истина n>10 ложь (n<10) | - | n= -1 | - | - | - | - | - | - | - | - | - | - | - | |
n<1 ложь (n=1) n>10 истина | Не возможно одновременное выполнение этих условий | |||||||||||||
n<1 ложь (n>1) n>10 истина | n=20 | - | - | - | - | - | - | - | - | - | - | - | - | |
n<1 ложь (n=1) n>10 ложь (n=10) | Не возможно одновременное выполнение этих условий | |||||||||||||
n<1 ложь (n>1) n>10 ложь (n=10) | - | - | - | - | - | - | - | - | - | n= 10 | - | - | - | |
n<1 ложь (n=1) n>10 ложь (n<10) | - | - | - | - | - | n=1 | n=1 | - | - | - | - | - | - | |
n<1 ложь (n>1) n>10 ложь (n<10) | n=3 | n=2 | n=2 | - | - | n=3 | n=4 | - | n=3 | n=3 | n=2 | |||
Ввод/вывод матриц For i:=1 to n do | Н Е Т В В О Д А И П Р О В Е Р К И М А Т Р И Ц Ы | Н Е Т В В О Д А И П Р О В Е Р К И М А Т Р И Ц Ы | ||||||||||||
0 раз (i>n) | Не возможно, n³1 | |||||||||||||
1 раз (i=n) | - | - | - | - | - | - | - | - | - | |||||
более 1 раза (i<n) | - | - | ||||||||||||
For j:=1 to n do | ||||||||||||||
0 раз (j>n) | Не возможно, n³1 | |||||||||||||
1 раз (j=n) | - | - | - | - | - | - | - | - | - | |||||
более 1 раза (j<n) | - | - | ||||||||||||
Проверка элементов while (i<=n)and not(flag)do | ||||||||||||||
(i<=n) истина (i<n) flag ложь | + | + | + | - | - | + | + | + | + | + | + | |||
(i<=n) истина (i=n) flag ложь | + | + | + | + | + | + | + | + | - | + | + | |||
(i<=n) истина (i<n) flag истина | + | - | - | - | - | - | - | - | + | - | - | |||
(i<=n) истина (i=n) flag истина | - | + | + | - | - | - | - | - | + | - | - | |||
(i<=n) ложь (i>n) flag ложь | + | + | + | + | + | + | + | + | - | + | + | |||
(i<=n) ложь (i>n) flag истина | - | - | + | - | - | - | - | - | - | - | - | |||
while (j<=n)and not(flag) do | ||||||||||||||
(j<=n) истина (j<n) flag ложь | + | + | + | - | - | + | + | + | + | + | + | |||
(j<=n) истина (j=n) flag ложь | + | + | + | + | + | + | + | + | + | + | + | |||
(j<=n) истина (j<n) flag истина | - | - | - | - | - | - | - | - | + | - | - | |||
(j<=n) истина (j=n) flag истина | - | + | + | - | - | - | - | - | - | - | - | |||
(j<=n) ложь (j>n) flag ложь | + | + | + | + | + | + | + | + | + | + | + | |||
(j<=n) ложь (j>n) flag истина | + | - | + | - | - | - | - | - | - | - | - | |||
if abs(X[i,j]) > 1000 then | ||||||||||||||
abs(X[i,j]) > 1000 | + | + | + | - | - | - | - | - | + | - | - | |||
abs(X[i,j]) < 1000 | - | - | - | + | + | + | + | + | - | + | + | |||
abs(X[i,j]) = 1000 | - | - | - | - | - | - | - | - | + | - | - | |||
If FlagA or FlagB then | ||||||||||||||
FlagA истина FlagB истина | - | - | + | - | - | - | - | - | - | - | - | |||
FlagA ложь FlagB ложь | - | - | - | + | + | + | + | + | - | + | + | |||
FlagA ложь FlagB истина | - | + | - | - | - | - | - | - | - | - | - | |||
FlagA истина FlagB ложь | + | - | - | - | - | - | - | - | + | - | - | |||
Проверка того,что эл-ты А > соотв. эл-ов В While (i<=n) and f=true do | З А Д А Ч А Н Е Р Е Ш А Л А С Ь | З А Д А Ч А Н Е Р Е Ш А Л А С Ь | З А Д А Ч А Н Е Р Е Ш А Л А С Ь | |||||||||||
(i<=n) истина(i<n) f ложь | - | - | - | - | - | Н Е Р Е Ш А Л А С Ь | + | - | ||||||
(i<=n) истина(i=n) f ложь | - | - | - | - | - | - | + | |||||||
(i<=n) истина (i<n) f истина | - | - | + | - | + | + | + | |||||||
(i<=n) истина (i=n) f истина | - | - | + | - | + | - | - | |||||||
(i<=n) ложь (i>n) f ложь | + | - | - | + | - | - | - | |||||||
(i<=n) ложь (i>n) f истина | - | + | + | - | + | - | - | |||||||
While (j<=n) and f=true do | ||||||||||||||
(j<=n) истина(j<n) f ложь | - | - | - | + | - | + | - | |||||||
(j<=n) истина(j=n) f ложь | - | - | - | - | - | - | + | |||||||
(i<=n) истина (j<n) f истина | - | - | + | - | + | + | + | |||||||
(j<=n) истина (j=n) f истина | - | - | + | - | + | - | - | |||||||
(j<=n) ложь (j>n) f ложь | + | - | - | - | - | - | - | |||||||
(j<=n) ложь (j>n) f истина | - | + | + | + | - | - | ||||||||
If X[i,j]<=Y[i,j] then | ||||||||||||||
X[i,j]<Y[i,j] | + | - | - | + | - | - | - | |||||||
X[i,j]=Y[i,j] | - | - | - | - | - | - | + | |||||||
X[i,j]>Y[i,j] | - | + | + | + | + | - | - | |||||||
If not(f) then | ||||||||||||||
f истина | - | + | + | - | + | - | - | |||||||
f ложь | + | - | - | + | - | + | + | |||||||
Создание матрицы С For i:=1 to n do | ||||||||||||||
0 раз (i>n) | Не возможно, n³1 | n³1 | ||||||||||||
1 раз (i=n) | - | + | - | - | - | - | - | |||||||
Более 1 раза (i<n) | - | - | + | - | + | - | - | |||||||
For j:=1 to n do | ||||||||||||||
0 раз (j>n) | Не возможно, n³1 | n³1 | ||||||||||||
1 раз (j=n) | - | + | - | - | - | - | - | |||||||
более 1 раза (j<n) | - | - | + | - | + | - | - | |||||||
Вывод С For i:=1 to n do | ||||||||||||||
0 раз (i>n) | Не возможно, n³1 | n³1 | ||||||||||||
1 раз (i=n) | - | + | - | - | - | - | - | |||||||
Более 1 раза (i<n) | - | - | + | - | + | - | - | |||||||
Выявлено 6 строк в таблице, непокрытых имеющимися 10 тестами. Добавим еще 3 теста 11,12,13.
Дата добавления: 2015-08-21; просмотров: 72 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Абстракция А0.4 | | | Альманах карвера. Why carving? |