Читайте также: |
|
1.Условие. Проверить, есть ли в матрице элементы, абсолютная величина которых больше 1000
2.Уточненная постановка задачи.
Дана вещественная квадратная матрица X из n строк и n столбцов. Проверить (flag), есть ли в матрицы элементы, абсолютная величина которых больше 1000. Если есть, то присвоить flag значение True и найти номер строки (ii) и столбца (jj) первого такого элемента, иначе присвоить flag значение False.
3.Примеры. (В скобках результаты для матрицы В)
Тест 3 есть некорректный элемент X[1,3]=1001, flag=True (f=false)
Тест 4 есть некорректный элемент flag=false; (X[1,1]= -2000, flag=True)
Тест 5 есть некорректный элемент X[2,1]= -1050, flag=true, (X[1,2]= 2000, flag= True)
Таблица данных
Класс | Имя | Описание (смысл), диапазон, точность | Тип | Структура | |
Входные данные | X | Заданная матрица, |Xij|<=5000 Точн. 0.1 | вещ | Двухмерный массив (10х10) | |
n | число строк и столбцов в матрице A,1£n£10 | цел | простая переменная | ||
Выходные данные | ii | Строка с некорр. X[ii,jj], 1£ii£10 | цел | простая перем | |
jj | Столбец с некорр. X[ii,jj], 1£jj£10 | цел | простая перем | ||
flag | = True, если есть некорректные Xij, в противном случае False | лог | простая переменная | ||
Промежу-точные данные | i | Номер текущей строки, 1£i£10 | цел | простая переменная | |
j | Номер текущего столбца, 1£j£10 | цел | простая переменная | ||
5.Входная форма.
нет ввода/вывода
Выходная форма
нет ввода/вывода
Аномалии
нет ввода/вывода
Тесты
Тест 3 есть некорректный элемент X[1,3]=1001, flag=True (f=false)
Тест 4 есть некорректный элемент flag=false; (X[1,1]= -2000, flag=True)
Тест 5 есть некорректный элемент X[2,1]= -1050, flag=true, (X[1,2]= 2000, flag= True)
Метод
Истина, если есть в матрице элемент |Xi,j|>1000; Ложь, если нет такого элемента |
Пусть flag =
Предположим сначала, что такого элемента в матрице нет (Flag:=False)
Затем будем просматривать строки, начиная с первой (i:=1)
Пока не просмотрены все (i≤m) и не найден такой элемент (flag=False)
В каждой строке будем просматривать элементы, начиная с первого (j:=1)
Пока не просмотрены все (j≤n) и не найден такой элемент (flag=False)
Если рассматриваемый элемент Xij по модулю больше 1000
То
искомый элемент найден! (flag:=True)
Запоминаем его местонахождение (ii:=i; jj:=j)
Переходим к следующему элементу в строке (j:=j+1)
Переходим к следующей строке
Найденные значения flag, ii, jj будут искомыми.
Алгоритм
Начало А0.4 |
Вх. n, X |
flag:=False |
i:=1 |
i≤n Ù Ø flag |
j:=1 |
j≤n Ù Ø flag |
|Xij|>1000 |
ii:=i; jj:=j; flag:=True |
j:=j+1 |
i:=i+1 |
Конец А0.4 |
Вых. flag, ii, jj |
Программа на паскале. Процедура общего вида
procedure ProvMas (var X:mas; const n:byte; out flag:boolean; out ii,jj:byte);
var i,j:byte;
Begin
flag:=false; i:=1;
while (i<=n) and (not(flag)) do
Begin
j:=1;
while (j<=n)and (not(flag)) do
Begin
if abs(X[i,j])>1000 then
Begin
flag:=true; ii:=i; jj:=j;
End;
Дата добавления: 2015-08-21; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Алгоритм | | | Абстракция А0.6 |