Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2022-11-14 | 25 |
5.00
из
|
Заказать работу |
|
|
Спецификация
1. Назначение: ввод и контроль за правильностью ввода диапазона значений элементов двумерного массива (результат истина при правильно заданном диапазоне значений).
2. Имя: vvdiap
3. Вид: функция
4. Перечень параметров:
Таблица 19.1. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Выход | Начало диапазона значений | beg | integer | параметр-переменная |
Выход | Конец диапазона значений | fin | integer | параметр-переменная |
Возвращаемый результат | Результат проверки правильности ввода диапазона | vvdiap | boolean | - |
5. Заголовок подпрограммы:
function vvdiap(var beg,fin:integer):boolean;
Метод решения
1) Получаем от пользователя границы диапазона
2) Если диапазон содержит значений больше, чем количество элементов в массиве, то результат функции истина, что означает – диапазон задан верно, в противном случае результат функции – ложь.
Текст функции
{ввод диапазона значений}
function vvdiap(var beg,fin:integer):boolean;
begin
writeln('Начало и конец диапазона значений?');
readln(beg,fin);
if fin-beg+1>=4*n*n
then vvdiap:=true
else vvdiap:=false
end;
Разработка подпрограммы zapoln
Спецификация
1. Назначение: заполнение двумерного массива, содержащего 2*n строк и 2*n столбцов, разными целыми случайными числами из диапазона от beg по fin. Контроль за правильностью ввода диапазона значений элементов двумерного массива
2. Имя: zapoln
3. Вид: процедура
4. Перечень параметров:
Таблица 19.2. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Вход | Начало диапазона значений | beg | integer | параметр-значение |
Вход | Конец диапазона значений | fin | integer | параметр-значение |
Выход | Двумерный массив разных целых случайных чисел из заданного диапазона | a | t2n | параметр-переменная- |
Примечание: тип t2n и поименованные константы n, mдолжны быть определены до текста подпрограммы
|
type t2n=array[1..2*n,1..2*n] of integer;
5. Заголовок подпрограммы: procedure zapoln(beg,fin:integer; var a: t2n);
Метод решения
Формируем все элементы массива. Для этого перебираем все индексы (по строкам и столбцам) - "i:=1(1)2n: "j:=1(1)2n:
Для каждого формируемого элемента (очередной формируемый элемент располагается в строке i и столбце j):
1) устанавливаем флаг (признак) существования значения в массиве в истину
2) пока существует очередное сгенерированное случайное значение в массиве (признак имеет значение истина) повторяем:
а) формируем новое целое случайное значение в интервале от beg по fin, используя формулу
x:=round(random*(fin-beg)+beg);
б) сбрасываем флаг существования значения в массиве (признаку присваиваем значение ложь);
в) проверяем существование сгенерированного значения х в массиве. Для этого перебираем все полностью заполненные строки с 1 по i-1, в каждой из этих строчек перебираем все столбцы.
" ii:=1(1)i-1:
" jj:=1(1)2n:
Если очередной проверяемый элемент совпадает со сгенерированным значением х, то устанавливаем флаг существования значения в массиве (признаку присваиваем значение истина)
если a[ii,jj]=x => pr:=true;
г) после этого отдельно проверяем i-ую строку массива, так как она заполнена не полностью, а только по j-1 столбец:
" jj:=1(1)j-1:
если a[i,jj]=x => pr:=true
3) завершение цикла пока говорит о том, что последнее сгенерированное случайное значение х не существует в заполненной части двумерного массива, заносим это значение в очередной формируемый элемент массива a[i,j]:=x
Информационная модель
Таблица 19.3. Информационная модель
Назначение | Имя | Тип |
Индекс строки формируемого элемента | i | integer |
Индекс столбца формируемого элемента | j | integer |
Индекс строки массива при проверке существования значения | ii | integer |
Индекс столбца массива при проверке существования значения | jj | integer |
Очередное случайное значение | x | integer |
Флаг (признак) существования значения | pr | Boolean |
Текст процедуры
|
procedure zapoln(beg,fin:integer; var a: t2n);
var i,ii,j,jj,x:integer;
pr:boolean;
begin
for i:=1 to 2*n
do for j:=1 to 2*n
do begin
pr:=true;
while pr
do begin
x:=round(random*(fin-beg)+beg);
pr:=false;
for ii:=1 to i-1
do for jj:=1 to 2*n
do if a[ii,jj]=x
then pr:=true;
for jj:=1 to j-1
do if a[i,jj]=x
then pr:=true
end;
a[i,j]:=x
end;
end;
Разработка подпрограммы vivod
Спецификация
1. Назначение: вывод на экран двумерного массива, содержащего 2*n строк и 2*n столбцов целых чисел
2. Имя: vivod
3. Вид: процедура
4. Перечень параметров:
Таблица 19.4. Перечень параметров
Статус | Назначение | Имя | Тип | Вид |
Вход | Двумерный массив целых чисел | a | t2n | параметр-переменная |
Примечание: тип t2n и поименованная константа n должны быть определены до текста подпрограммы
type t2n=array[1..2*n,1..2*n] of integer;
5. Заголовок подпрограммы: procedure vivod(var a:t2n);
Метод решения
Перебираем строки двумерного массива " i:=1(1)2 n:
Для каждой строки:
1) выводим очередную i строку. Для этого перебираем все столбцы строки и выводим на экран очередной элемент (без перевода курсора в начало следующей строки экрана):
" j:=1(1)2 n: вывод(a [ i, j ])
переводим курсор на экране в начало следующей строки (обращаемся к процедуре writeln без параметров)
Информационная модель
Таблица 19.5. Информационная модель
Назначение | Имя | Тип |
Индекс строки | i | integer |
Индекс столбца | j | integer |
Текст процедуры
procedure vivod(var a:t2n);
var i,j:integer;
begin
for i:=1 to 2*n
do begin
for j:=1 to 2*n
do write(a[i,j]:3);
writeln
end;
end;
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!