Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

5. Необходимая информация для написания процедуры

При разработке процедуры “строковый редактор” воспользуйтесь следующими рекомендациями:

1) для ввода данных в процедуре используйте функцию ReadKey;

2) так как речь идет о строке, то каждая модификация строки может проводиться в памяти, а потом перевыводится на экран;

3) позаботьтесь о цвете текста и фона: при работе редактора следует сохранять первоначальные цвета.

Напишите процедуру и протестируйте ее. Если возникнут проблемы: читайте следующий пункт - подсказку.

6. Подсказка: алгоритм работы строкового редактора

procedure editor(x1, x2, y : byte; f : boolean; setchar: set of char; var c:char; var st:st80);

если f=False то st:=‘’

выводим значение st в заданное место

запоминаем текущую координату на экране: x:=x1;

повторять

читаем один символ;

если его код равен 0 то

{первый код функциональной клавиши}

читаем второй код функциональной клавиши если он в множестве [left,right,del,ins], то

выбор кода из

right : если можно, координату х:=x+1;

left : если можно, x:=x-1;

del : удаляем предыдущий символ. Если ins в режиме вставки - со сдвигом "хвоста" текста вправо;

ins : переключение режимов "вставка"/ "замена";

конец выбора;

конец если

иначе

{т.е. клавиша не функциональная}

Если нажата bs, то {bs - клавиша забоя}

если есть предыдущий символ, то его удаляем в памяти.

Если режим вставки - сдвигаем текст влево.

Если символ допустимый и он еще входит в строку

если символ внутри строки, то

если режим вставки и есть в конце пустые позиции, то

вставляем символ,

иначе им заменяем текущий или дописываем в конец - в зависимости от местоположения курсора

конец если

конец если

конец если

если не вышли за границу строки,

то увеличиваем координату x на 1

конец если

конец если

повторный вывод строки, пока не нажаты клавиши ESC, ENTER или какая-нибудь другая функциональная;

если нажата клавиша ESC, то в строке сохраняется ее первоначальное значение

конец процедуры

Лабораторная работа 26. Поиск среднего и другие неожиданности

Задание 1

Большое число практических задач требует каким-то образом "усреднять" данные. Это и обработка результатов научных экспериментов, и задачи статистики, и т.п.

Самое простое - это взять среднее арифметическое всей последовательности чисел. Другой способ - взять среднее арифметическое между наибольшим и наименьшим элементами последовательности. Еще один способ, более сложный, применяется, в частности, при судействе соревнований по фигурному катанию. Состоит он в том, чтобы отбросить крайние (наибольшее и наименьшее) числа, а от остальных взять среднее арифметическое.

Запрограммируйте все эти способы для вводимой последовательности чисел. Сравните результаты.

Задание 2

Часто бывает важно не только определить среднее значение последовательности, но и охарактеризовать величину "разброса". Одной из таких характеристик может служить, например, разность между наибольшим и наименьшим значениями.

Запрограммируйте вычисление этой величины для вводимой последовательности чисел.

Задание 3

Для характеристики "разброса" элементов последовательности в статистике используется величина, называемая дисперсией.

Дисперсия - это среднее арифметическое квадратов разностей между элементами последовательности и ее средним значением, т.е. вычисляется по формуле :

,

где ai - элементы последовательности, а M - среднее значение.

Попытайтесь запрограммировать вычисление дисперсии. С какой проблемой Вы столкнулись?

Задание 4

Представьте себе, что Вы смешиваете несколько (10-15) компонентов в одну смесь (может быть, Вы создаете новые духи, может быть, особо прочный и легкий сплав металлов и т.п.). По окончании работы Вы знаете, сколько чего входит в смесь, т.е. массу каждого компонента. Чтобы в дальнейшем изготавливать такую же смесь в промышленных масштабах, вам нужен "рецепт", т.е. процентное содержание каждого компонента в смеси. Удастся ли Вам запрограммировать решение этой задачи?

Задание 5

На одной из предыдущих работ Вы решали такую задачу: ввести строку и напечатать ее "наоборот". Можно ли решить эту задачу, если вместо строки взять последовательность из 15 чисел? Из 100 чисел?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]