Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Практическая работа 6. Множества. Записи




Var

Пример

Begin

Write('Enter filename: ');

Readln(S);

Assign(T, S); { открываем файл для чтения }

{$I-} Reset(T); {$I+} { если не нуль, то была ошибка }

if IOResult <> 0 then

begin Write('Error when open file ', S, '!'); Halt; end;

{ иначе все в порядке, продолжаем }

{ ЦИКЛ: пока НЕ КОНЕЦ ФАЙЛА }

While (not Eof(T)) do begin { читаем из файла переменную }

Read(T, C); { если пробел, увеличиваем счетчик }

If C = ' ' then Inc(Spaces); Write(C); end;

Writeln('КОЛИЧЕСТВО ПРОБЕЛОВ: ', Spaces);

Readln; end.

Составим еще одну небольшую программку, которая покажет работу с файлами. Используем типизированные файлы, состоящие из чисел. Итак, мы имеем файл, в котором содержаться числа типа Integer. Отсортируем эти числа в файле по возрастанию.

Алгоритм:

· Отрываем типизированный файл из Integer; (проверяем на ошибку и т.п.)

· Читаем все числа в массив (считываем, пока не конец файла)

· Сортируем массив по возрастанию;

· Записываем отсортированный массив обратно в файл.

Программа:

Program Sorting;

uses Crt;

F: File of Integer;

I, J, M: Word; Mas: Array [1..500] of Integer; S: String;

begin ClrScr; Write('Enter filename: '); Readln(S); { открываем файл }

Assign(F, S); {$I-} Reset(F); {$I+}

if IOResult <> 0 then begin Write('Error when open file!'); Halt; end;

{ пока не конец файла, читаем массив }

While (not Eof(F)) do begin Inc(M); Read(F, Mas[M]);

Write(Mas[M], ' '); end;

{ сортируем массив по возрастанию }

For I:= 1 to M do

For j:= 1 to M do

if Mas[I] < Mas[J] then begin inc(mas[j], mas[i]);

mas[i]:= mas[j]-mas[i];

dec(mas[j], mas[i]); end; Writeln;

Writeln('=============================================');

{ перезаписываем файл }

ReWrite(F);

For I:= 1 to 100 do begin Write(Mas[I], ' ');

Write(F, Mas[i]); end;

Writeln; Write('Elements in file: ', M); Close(F); Readln; end.

 


Задания к работе 5

 

№1 Дан символьный файл f. Получить копию файла в файле g.
№2 Дан файл f, компоненты которого являются целыми числами. Получить файл g, образованный из файла f исключением повторных вхождений одного и того же числа.
№3 Дан символьный файл f. Добавить в его конец символы e,n,d (если необходимо, использовать вспомогательный файл g).
№4 Дан символьный файл f. Найти самое длинное слово среди слов, вторая буква которых есть k; если слов с наибольшей длиной несколько, то найти последнее.
№5 Дан файл f, компоненты которого являются целыми числами. Число компонент файла f делится на 100. Записать в файл g наибольшее значение первых ста компонент файла f, затем – следующих ста компонент и т.д.
№6 Дан файл, содержащий сведения об учениках (его имени и фамилии и названия класса (года учения и буквы), в котором он учится). Выяснить имеются ли в школе однофамильцы.
№7 Дан файл, который содержит номера телефонов сотрудников учреждения (указывается фамилия, его инициалы и номер телефона). Найти номер телефона по его фамилии и инициалам.

 

№8 Дан файл, содержащий сведения об экспортируемых товарах: указывается наименование товара, страна, импортирующая товар и объем поставляемой партии в штуках. Найти страны, в которые экспортируется товар, и общий объем его экспорта.
№9 Дан текстовый файл f. Переписать в файл g все компоненты файла f с заменой в них символа 0 на символ 1 и наоборот.
№10 Дан текстовый файл f. Получить все его строки, содержащие более 60 символов.
№11 Дан файл, содержащий сведения об учениках (его имени и фамилии и названия класса (года учения и буквы), в котором он учится). Выяснить, в каких классах насчитывается более 35 учеников.
№12 Дан текстовый файл f. Получить самую длинную строку файла.
№13 Дан текстовый файл f и строка s. Получить все строки файла f, содержащие в качестве фрагмента строку s.
№14 Дан файл, содержащий сведения об учениках (его имени и фамилии и названия класса (года учения и буквы), в котором он учится). Выяснить, на сколько учеников в восьмых классах больше, чем в десятых.

 


Множество в паскале имеет такой же смысл, как и в алгебре – это неупорядоченная совокупность отличных друг от друга однотипных элементов. При описании множественного типа используются слова set и of. Задание конкретного множества определяется правилом (конструктором) – списком элементов или интервалов, заключенным в квадратные скобки. Пустое множество обозначается двумя символами [].

Множественный тип можно определить:

· в разделе описания типов по схеме: type<имя>=set of<тип элементов>

· можно совместить описание множественного типа и соответствующих переменных: type <имя> = set of <тип элементов>

· Можно описать переменную множественного типа и задать ее первоначальное значение в разделе описания констант, как констант-множество.

Для данных множественного типа определены операции объединения, пересечения и дополнения множеств, обозначаемые в Паскале соответственно знаками +,* и -, а также отношения равенства множеств (А=В), неравенств (A<>B), включения (A<=B, A>=B). Результат операций отношения имеет булевский тип.

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

Пример. Составим программу, анализирующую латинский текст и печатающую в алфавитном порядке все найденные в нем буквы, а затем все ненайденные

Пусть alfa – множество всех букв латинского алфавита. Будем вводить заданный текст с клавиатуры символ за символом, одновременно формируя множество E – множество латинских букв текста. В конце текста введем символ *. Затем с помощью операции in будем проверять, какие буквы алфавита имеются во множестве Е. Множество N – ненайденных букв в тексте – определяется оператором: N:=alfa-E.

program alfa;

const alfa:set of char=[‘a’..’z’];

var c:char; E,N:set of char;

begin

clrscr; E:=[]; writeln(‘введите текст, конец ввода -*’); read(c);

while c<> ‘*’ do

begin

if c in alfa then E:=E+[c; read(c)]

end;

writeln;

if E=alfa then writeln (‘найдены латинские буквы’)

else begin

N:=alfa-E;

writeln(‘найдены:’);

for c:=’a’ to ‘z’ do if c in E then write(c);

writeln; writeln(‘не найдены:’);

for c:=’a’ to ‘z’ do if c in N then write(c);

writeln

end

end.

 




Поделиться с друзьями:


Дата добавления: 2015-06-04; Просмотров: 589; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.