Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СТА (лекции+лабы) / СТА Лаба 3.docx
Скачиваний:
48
Добавлен:
16.03.2016
Размер:
66.08 Кб
Скачать

Варианты углубленного уровня

Вариант №11:

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

  • Большой файл с произвольным осмысленным текстом

  • Большой файл уже отсортированный по алфавиту (можно взять результат работы программы на первом варианте).

Объясните причину диспропорции времени выполнения на первом файле и втором файле.

Вариант №12:

Имеется текстовый файл, содержащих оценки студентов по предметам со следующим форматом:

Petrov 90 85 82

Ivanov 75 90 82

Sidorov 60 60 60

Используя деревья бинарного поиска, выведите в другие текстовые файлы те же самые данные в порядке убывания оценки студентов по каждому из предметов. Очевидно, у двух и более студентов допускается одинаковая оценка по одному и тому же предмету. В таком случае, следует выводить студентов в алфавитном порядке их фамилий. Имена всех файлов передаются программе через командную строку. Например, если вышеуказанные данные находятся в input.txt, то запуск программы со следующими аргументами:

myprogram.exe input.txt output1.txt output2.txt output3.txt

должен вывести в output1.txt:

Petrov 90

Ivanov 75

Sidorov 60

в output2.txt:

Ivanov 90

Petrov 85

Sidorov 60

в output3.txt:

Ivanov 82

Petrov 82

Sidorov 60

В целях упрощения, предположите конкретное число предметов, и факт наличия в исходном файле оценок по всем предметам для каждого студента. Если передано меньше выходных файлов, чем оценок в исходном файле, то не обрабатывайте остальные оценки. Если передано больше выходных файлов, чем оценок в исходном файле, выдайте предупреждение на консоли и сгенерируйте меньшее число файлов – по количеству оценок в исходном файле.

Вариант №13:

В любом языке программирования имеется набор ключевых слов. В языке C зарезервированы следующие ключевые слова:

auto break case char const continue default

do double else enum extern float for

goto if inline int long register restrict

return short signed sizeof static struct switch

typedef union unsigned void volatile while

Язык С++ в стандарте 1998г. дополняет эти ключевые слова следующими:

bool catch class const_cast delete dynamic_cast explicit

export false friend inline mutable namespace new

operator private protected public reinterpret_cast static_cast template

this throw true try typeid typename using

virtual wchar_t

Напишите программу, которая считывает слова (словом считается последовательность букв, цифр и подчеркиваний до любого разделителя) из входного файла, имя которого передается через командную строку. Все остальные символы программа должна игнорировать. Для каждого извлеченного слова программа определяет является ли оно ключевым для языков C или C++. По завершению ввода выводит следующую статистику:

  • Сколько обнаружено использований ключевых слов, относящихся только к языку C++.

  • Сколько обнаружено ключевых слов, относящихся как к С, так и к С++.

  • Сколько из прочитанных слов не являются ключевыми ни для C, ни для C++.

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

Вариант №14:

Реализовать структуру данных, моделирующую справочник телефонов и адресов (на основе деревьев бинарного поиска либо хэш-таблиц любого типа, на усмотрение студентов). В качестве ключа должна быть строка - ФИО физического лица, в качестве хранимого значения – структура, содержащая соответствующие номер телефона и адрес. Исходные данные следует прочитать из файла в произвольном формате (можно как угодно изменить данный формат для упрощения реализации считывания), например:

John Smith: +1-254-705-10-58: USA, New York, Wall str. 10, ap. 125

Nickolay Ivanov: +7-095-283-11-90: Russia, Moscow, Tverskaya str. 12, ap. 62.

Semen Kravchuk: +38-044-205-12-40: Ukraine, Kiev, Bogdana Hmelnickogo str. 115, ap. 23.

Tomasz Kowalski: +48-032-44-27-13: Poland, Katowice, Chorzowska str. 50, ap. 105.

Тестовая программа должна иметь следующий интерфейс командной строки:

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

  • Если в качестве второго аргумента командной строки указан ключ “-add”, то третий, четвертый и пятый аргументы командной строки задают ФИО человека, номер телефона и адрес соответственно, запись о котором следует добавить в словарь. Никакие другие дополнительные аргументы не допускаются. После завершения программы запись о новом человеке должна появиться в исходном файле.

  • Если в качестве второго аргумента командной строки указать ключ “-remove”, то третий аргумент должен задавать ФИО человека, запись о котором следует удалить из словаря. Никакие другие дополнительные аргументы не допускаются. После завершения программы запись о таком человеке не должна присутствовать в исходном файле. Если ФИО такого человека не найдено, следует напечатать на экране сообщение об ошибке.

  • Если в качестве второго аргумента командной строки ни один из перечисленных выше ключей не указан, второй и последующие аргументы командной строки задают ФИО, телефон и адрес которых необходимо вывести на экран.

Вариант №15:

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

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

Программа должна поддерживать следующий интерфейс командной строки:

  • Первый аргумент – имя входного текстового файла для анализа.

  • Второй аргумент – имя файла для результатов.

  • Третий аргумент (необязательный) - равен “-i” - означает игнорирование регистра символов при сравнении.

Соседние файлы в папке СТА (лекции+лабы)