напишите по порядку какое имя и фамилию вы бы указали следующим кандидатам в базе
Запросить фамилии и имена людей, а затем вывести их в алфавитном порядке
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Записи: в алфавитном порядке вывести на экран фамилии и имена абитуриентов, не допущенных к сдаче экзаменов
Решите задачу и напишите пожалуйста объяснение. 1. В некотором вузе абитуриенты проходят.
Вывести на экран данные фамилии и имена всех людей, у которых фамилии начинаются с 2 буквы, как и ваша фамилия
Необходимо ввести в файл фамилии, имени 6 человек. Вывести на экран данные фамилии и имена всех.
Отсортировать список в алфавитном порядке по фамилии, а затем по возрастанию года рождения
В текстовом файле содержатся записи о студентах. Для каждого студента известны его фамилия, имя.
Fedor Vlasenko, покажите свой вариант
Добавлено через 4 минуты
И правда. Выводит сначала я а потом ё, никогда не замечал этого.
Найти в строке имена собственные и вывести их в алфавитном порядке
Пользователь вводит строку, найти в строке имена собственные и вывести их в алфавитном порядке.
Вывести на экран фамилии учеников в алфавитном порядке
помогите найти ошибку uses crt; var a:array of string; b,x,y:string; i,n,j:integer;.
Структуры, найти людей с одинаковыми именами и вывести данные о них в алфавитном порядке
C++ Создать файл и записать в него исходные данные в виде структуры. Даны сведения о 5 Людей.
Практическая работа № 10
Тема:Организация баз данных. Заполнение полей баз данных. Возможности систем управления базами данных. Формирование запросов для поиска и сортировки информации в базе данных.
Цель занятия:научиться создавать и заполнять базы данных в редакторе MS Access.
Время проведения: 2 часа
Средства обучения: Персональный компьютер, методические рекомендации
Программное обеспечение: Microsoft office Access.
Порядок выполнения работы:
Ознакомиться с содержанием задания и рекомендации по их выполнению
1. Уяснить, что необходимо сделать
2. Произвести необходимые действия
3. Ответить на контрольные вопросы
Ход работы:
1. Запустите Microsoft office Access.
2. Выполните задание.
Задание.Создать БД «Отдел кадров» и три запроса к ней.
Наименование таблицы | Структура таблицы |
Сотрудник | Идентификационный код, Фамилия, Имя, Отчество, Пол, Дата рождения, Место рождения, Образование, Должность, Стаж работы, Семейное положение, Дата зачисления на работу, Телефон, Домашний адрес |
Состав семьи | Идентификационный код, Взаимоотношения, Фамилия, Имя, Отчество, Год рождения |
Штатное расписание | № по порядку, Название подразделения, Должность, Количество штатных единиц, Должностной оклад, Фонд з/платы за месяц, Фонд з/платы за год |
Состав и характеристика полей таблицы “Штатное расписание”.
Название поля | Имя поля | Характеристики поля | |
Тип данных | Возможности | ||
№ по порядку | НПП | Числовой | Длинное целое, обязательное |
Название подразделения | Назв подраз | Текстовый | 30 символов, обязательное |
Должность | Должность | Текстовый | 15 символов, обязательное |
Количество штатных единиц | Кол ед | Числовой | Длинное целое, обязательное |
Должностной оклад | Оклад | Числовой | Длинное целое, обязательное |
Фонд з/платы за месяц | ФЗПМ | Числовой | Длинное целое, обязательное |
Фонд з/платы за год | ФЗПГ | Числовой | Длинное целое, обязательное |
Состав и характеристика полей таблицы “Сотрудник”.
Название поля | Имя поля | Характеристики поля | |
Тип данных | Возможности | ||
Идентификационный код | Идент код | Текстовый | 10 символов, обязательное |
Фамилия | Фамилия | Текстовый | 20 символов, обязательное |
Имя | Имя | Текстовый | 15 символов, обязательное |
Отчество | Отчество | Текстовый | 15 символов, обязательное |
Пол | Пол | Текстовый | 50 символов, не обязательное |
Дата рождения | Дата рожд | Дата/время | Маска ввода 00.00.0000, не обязательное |
Место рождения | Место рожд | Текстовый | 15 символов, не обязательное |
Образование | Образование | Текстовый | 15 символов, обязательное |
Должность | Должность | Мастер подстановок | 15 символов, индексированное, допускается совпадение, обязательное |
Стаж работы | Стаж работы | Числовой | Длинное целое, обязательное |
Семейное положение | Семейн полож | Текстовый | 11 символов, не обязательное |
Дата зачисления на работу | Дата зачисл | Дата/время | Маска ввода 00.00.0000, не обязательное |
Телефон | Тел | Текстовый | 8 символов, не обязательное |
Домашний адрес | Домашн адрес | Поле МЕМО | не обязательное |
Состав и характеристика полей таблицы “Состав семьи”.
Название поля | Имя поля | Характеристики поля | |
Тип данных | Возможности | ||
Идентификационный код | Идент код | Мастер подстановок | 10 символов, обязательное |
Взаимоотношения | Взаимоотношения | Текстовый | 10 символов, не обязательное |
Фамилия | Фамилия | Текстовый | 20 символов, обязательное |
Имя | Имя | Текстовый | 15 символов, обязательное |
Отчество | Отчество | Текстовый | 15 символов, обязательное |
Год рождения | Год рожд | Дата/время | Маска ввода 00.00.0000, обязательное |
Должна быть получена схема данных:
Задание №1. Создание, заполнение таблиц Штатное расписание, Сотрудник, Состав семьи
Чтобы создать новую БД нужно:
1.Пуск → Программы → MS Office → Microsoft Access
2.щелкаем на пиктограмме Новая база данных
3.В правой части окна появится информация об имени файла и указана директория для его хранения. По умолчанию имя файла — База данных1.accdb.
4. Далее щелкнуть справа по пиктограмме и ввести имя файла Библиотека и в верхней части окна открыть свою папку на диске Д:
5.В результате получаем:
6.Нажимаем кнопку Создать
7. Далее необходимо перейти в режим Конструктор и создать структуру первой таблицы базы данных. Для этого необходимо щелкнуть на пиктограмме Режим и выбрать режим Конструктор.
8. Откроется окно Сохранение, в котором надо указать имя Штатное расписание и нажать кнопку ОК.
9.Создать структуру таблицы «Штатное расписание», данные не вводить
После создания структуры таблицы необходимо задать ключевое поле.
Как ключевое поле выбираем поле Должность, т.к. оно не содержит записей, что повторяются, а также будет использовано для связи с таблицей “Сотрудник”.
10.Создать структуру таблицы «Сотрудник», данные не вводить:
-имя Сотрудник и т.д.
Для поля Должность выбираем тип Мастер подстановок. Это позволит облегчить заполнение данными для данного поля.
Далее, Далее, Далее, Готово.
Как ключевое поле выбираем поле Идент код , т.к. оно не содержит записей, что повторяются, а также будет использовано для связи с таблицей “Состав семьи”.
11.Создать структуру таблицы «Состав семьи», данные не вводить:
При создании поляИдент код как столбец подстановки используется поле Идент код из таблицы “Сотрудник”.
Поле Иден код выбрать как индексное поле. Для этого в разделе Свойства поля выбрать строку Индексированное поле и выбрать из выпадающего списка Да (допускаются совпадения).
Таблицы будут связаны между собой таким образом: таблицаСотрудникс таблицею Состав семьисвязываются по полю Идент код, с таблицею Штатное расписание– по полю Должность.
12.Закрыть все созданные структуры таблиц
Задание №2. Создать связи между таблицами.
Создание связей между таблицами:
-меню Работа с базами данных
-Показать или скрыть
-Схема данных, появится окно Добавление таблицы
-Выделить все таблицы, Добавить каждую
-Схема данных будет иметь вид:
Дважды щелкнуть по линии соединения
Задание №3.Внести данные во все таблицы
Задание №4. Создать следующие запросы к|до| базе данных:
1. Запрос на выборку данных из|с| одной таблицы;
2. Запрос на выборку данных из|с| двух или трех таблиц;
3. Параметрический запрос.
1. Запрос на выборку данных из|с| одной таблицы.
Создадим запрос, что содержит поля: Идент| код, Фамилия, Имя, Отчество, Дата нар, который|какой| отображает список только тех сотрудников, фамилии которых|каких| начинаются с буквы «К». Список отсортируем| по дате рождения по возрастанию.
Для этого необходимо выполнить|исполнить,проделать| такую последовательность действий.
Меню Создание-Конструктор запросов-Сотрудник
Выбираем объект Запросы,щелкаем пункт меню Создать.Открывается окно Новый запрос|,в котором|каком| выбираем режим создания запроса Конструктор.Открывается окно Запросы: запрос| на выборку|и активизируется окно Добавление таблицы|,в котором|каком| следует выбрать|избрать| из списка таблицу Сотрудник(щелкнув мышью|мишой| на имя таблицы), после чего нажать на кнопку Добавитьи закрыть окно Добавление таблицы|.
Дальше необходимо выбрать|избрать| нужные поля и задать способы сортировки и условия отбора из|с| таблицы. Для этого:
· выделить поля Идент| код, Фамилия, Имя, Отчество, Дата рождс помощью|посредством| мыши|миши| в комбинации с клавишами SHIFTили СTRLи отбуксировать на бланк построения запроса QВЕ|в строку Поле.Поля можно перемещать в бланк QВЕ|и в одиночку|по одиночке,по одному,поодиночке|.
· для поля Дата рождустановить сортировку записей по возрастанию. Для этого щелкнуть в строке Сортировкав столбце поля Дата рожд,появится кнопка со стрелкой, нажатие на которую|какую| раскрывает окно выбора типа сортировки. Выбрать|избрать| тип сортировки по возрастанию|;
· для реализации в запитые условия выбора сотрудников, фамилии которых|каких| начинаются с буквы «К», в строке Условие отбора|в столбце Фамилияввести условие Like «К*».
Файл-Сохранить как
Выполнить|исполнить,проделать| запрос на выборку. Для этого выделить запрос Fаm_ки щелкнуть по кнопке Открыть.На экран выводится таблица, в которой|какой| отображаются все записи с фамилиями, которые начинаются на букву К, записи отсортированные по дате рождения по возрастанию.
2. Запрос на выборку данных с из|с| двух или трех таблиц.
Меню Создание-Конструктор запросов-Сотрудник и Состав семьи, Закрыть
Создадим запрос, в результате выполнения которого|какого| будут полученные сведения о сотрудниках, которые не имеют родственников.
До отчета включим поля, которые|какие| содержат идентификационный код, фамилию, имя, отчество рабочего, а также его дату рождения.
При выбранной|избранной| вкладке Запросщелкнуть по кнопке
Открывается окно Новый запрос|,в котором|каком| выбрать|избрать| режим создания запроса Записи без подчиненных|.
В первом окне с названием «Поиск записей|, не имеющих| подчиненных|» мастер выведет на экран список для выбора основной таблицы, в котором|каком| выбрать|избрать| таблицу Сотрудники нажать кнопку Далее.
В следующем окне выбрать|избрать| таблицу, что содержит подчиненные записи. Это таблица Состав семьи.Нажать кнопку Далее.
В следующем окне мастера проверить, что таблицы Сотрудники Состав семьисвязаны по полю Идент| код(поля, по которым|каким| связанные таблицы, выделены). Если это не так, в каждом списке полей обеих таблиц выделить поле Идент| коди щелкнуть на кнопку «», что расположена между списками. Нажать кнопку Далее.
На экране появится новое окно, в котором|каком| отображенные поля, которые могут быть включены к|до| отчету. В этом окне в левом поле в списке выделить по очереди|поочередно| поля Идент|код, Фамилия, Имя, Отчество, Дата рожд,которые|какие| должны отображаться в отчете, и перенести их в левое поле с помощью|посредством| кнопки «».
Дальше нажать кнопку Готово.
Проверяем исправленный отчет и храним|бережем| его под именем Без родственников.
3. Параметрический запрос.
При выполнении параметрического запроса выводится диалоговое окно с приглашением ввести параметр для условия отбора записей. Параметров может быть несколько.
Создадим запрос, в результате выполнения которого|какого| будут выводиться поля Фамилия, Имя, Отчество, Идент| коди Стаж работысотрудника, фамилия которого|какого| будет указана в запросе как параметр отбора.
При выбранном|избранном| режиме работы Запросщелкнуть по кнопке Создать.
Напишите по порядку какое имя и фамилию вы бы указали следующим кандидатам в базе
Автоматическое устройство осуществило перекодировку информационного сообщения на русском языке, первоначально записанного в 16-битном коде Unicode, в 8-битную кодировку КОИ-8. При этом информационное сообщение уменьшилось на 480 бит. Какова длина сообщения в символах?
1 символ в коде Unicode кодируется 16-ю битами, 1 символ в коде КОИ-8 — 8-ю битами. Количество символов при перекодировке не меняется, поэтому обозначим его за .
Решая его найдём следовательно,
.
Считая, что каждый символ кодируется двумя байтами, оцените информационный объем следующего предложения в кодировке Unicode:
Диаметр окружности равен 2R.
Подсчитаем количество символов в заданном предложении, включая пробелы и точку: их 28. Поскольку один символ кодируется 2 байтами, 28 символов кодируются 56 байтами.
Считая, что каждый символ кодируется 16 битами, оцените информационный объем следующей фразы в кодировке Unicode:
«Word» — по-русски «слово».
Подсчитаем количество символов в заданном предложении, включая кавычки, пробелы, тире, дефис и точку: всего их 27. Поскольку один символ кодируется 16 битами, 27 символов кодируются 432 битами.
В таблице приведена часть кодовой таблицы ASCII:
Символ | 1 | 3 | A | N | Z | a | z |
Десятичный | 49 | 51 | 65 | 78 | 90 | 97 | 122 |
Восьмеричный | 61 | 63 | 101 | 116 | 132 | 141 | 172 |
Каков восьмеричный код символа «n»?
Т. к. прописные и строчные буквы идут подряд, то расстояние между латинскими буквами «n» и «N» точно такое же, как и расстояние между латинскими буквами «a» и «A». «z» и «Z» соответственно.
В таблице приведена часть кодовой таблицы ASCII:
Символ | 1 | 3 | A | Z | a | n | z |
Десятичный | 49 | 51 | 65 | 90 | 97 | 110 | 122 |
Восьмеричный | 1 | 3 | 101 | 132 | 141 | 156 | 172 |
Каков восьмеричный код символа «N»?
Т. к. прописные и строчные буквы идут подряд, то расстояние между латинскими буквами «n» и «N» точно такое же, как и расстояние между латинскими буквами «a» и «A». «z» и «Z» соответственно.
В таблице приведена часть кодовой таблицы ASCII:
Символ | 1 | 3 | A | T | Z | a | z |
Десятичный | 49 | 51 | 65 | 84 | 90 | 97 | 122 |
Восьмеричный | 61 | 63 | 101 | 124 | 132 | 141 | 172 |
Каков восьмеричный код символа «t»?
Т. к. прописные и строчные буквы идут подряд, то расстояние между латинскими буквами «t» и «T» точно такое же, как и расстояние между латинскими буквами «a» и «A». «z» и «Z» соответственно.
В таблице приведена часть кодовой таблицы ASCII:
Символ | 1 | 3 | A | Z | a | t | z |
Десятичный | 49 | 51 | 65 | 90 | 97 | 116 | 122 |
Восьмеричный | 61 | 63 | 101 | 132 | 141 | 164 | 172 |
Каков восьмеричный код символа «Т»?
Т. к. прописные и строчные буквы идут подряд, то расстояние между латинскими буквами «t» и «T» точно такое же, как и расстояние между латинскими буквами «a» и «A». «z» и «Z» соответственно.
В таблице приведена часть кодовой таблицы ANSII:
Символ | 1 | 3 | A | Y | Z | a | b |
Десятичный | 49 | 51 | 65 | 89 | 90 | 97 | 98 |
Восьмеричный | 61 | 63 | 101 | 131 | 132 | 141 | 142 |
Каков восьмеричный код символа «z»?
Заметим, что расстояние между латинскими буквами «a» и «A» точно такое же, как и расстояние между латинскими буквами «y» и «Y». Т.к. прописные и строчные буквы идут подряд, то указанное расстояние точно такое же, как и между буквами «z» и «Z».
В таблице приведена часть кодовой таблицы ASCII:
Символ | 1 | 3 | A | Y | a | b | z |
Десятичный | 49 | 51 | 65 | 89 | 97 | 98 | 122 |
Восьмеричный | 61 | 63 | 101 | 131 | 141 | 142 | 172 |
Каков восьмеричный код символа «Z»?
Т. к. прописные и строчные буквы идут подряд, то расстояние между латинскими буквами «a» и «A» точно такое же, как и расстояние между латинскими буквами «y» и «Y». «z» и «Z» соответственно.
Строки (цепочки латинских букв) создаются по следующему правилу. Первая строка состоит из одного символа – латинской буквы «А». Каждая из последующих цепочек создается такими действиями: в очередную строку сначала записывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i─м шаге пишется «i»─я буква алфавита), к ней слева дважды подряд приписывается предыдущая строка. Вот первые 4 строки, созданные по этому правилу:
Латинский алфавит (для справки): ABCDEFGHIJKLMNOPQRSTUVWXYZ. Запишите шесть символов подряд, стоящие в седьмой строке со 117─го по 122─е место (считая слева направо).
Заметим, что в n-ой строке содержится 2 n − 1 символов. Построим строки по указанному в условии правилу. Будем записывать не всю строку, а лишь её часть
В седьмой строке со 117-го по 122-е место стоят символы AABAAB.
Строки (цепочки символов латинских букв) создаются по следующему правилу. Первая строка состоит из одного символа – латинской буквы «А». Каждая из последующих цепочек создается такими действиями: в очередную строку сначала записывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i─м шаге пишется «i»─я буква алфавита), к ней справа дважды подряд приписывается предыдущая строка. Вот первые 4 строки, созданные по этому правилу:
Латинский алфавит (для справки): ABCDEFGHIJKLMNOPQRSTUVWXYZ
Сколько в восьмой строке букв, отличных от буквы «B»?
Заметим, что в n-ой строке содержится 2 n − 1 символов. При этом в строке с номером n, где n больше единицы стоит 2 n-2 букв B. Таким образом, в восьмой строке букв отличных от букв B:
2 8 − 1 − 1 − 2 8−2 = 256 − 1 − 64 = 191 символ.
Цепочки символов (строки) создаются по следующему правилу. Первая строка состоит из одного символа – цифры «1». Каждая из последующих цепочек создается следующим действием: в очередную строку дважды записывается предыдущая цепочка цифр (одна за другой, подряд), а в конец приписывается еще одно число – номер строки по порядку (на i─м шаге дописывается число «i»). Вот первые 4 строки, созданные по этому правилу:
Сколько раз встречаются в восьмой строке чётные цифры?
Последовательно проанализируем сколько чётных символов в каждой строке. В первой строке ни одного чётного символа, во второй — 1, в третьей — 2 · 1 = 2, в чётвёртой 1 + 2 · 2 = 5, в пятой — 2 · 5 = 10, в шестой — 1 + 2 · 10 = 21, в седьмой — 2 · 21 = 42, в восьмой — 1 + 2 · 42 = 85.
Считая, что каждый символ кодируется одним байтом, определите, чему равен информационный объем следующего высказывания Рене Декарта в битах:
Я мыслю, следовательно, существую.
В ответе запишите только число.
Подсчитаем количество символов в заданном предложении, включая пробелы и точку: их 34. Поскольку один символ кодируется 1 байтом (8 битами), 34 символов кодируются 272 битами.
На вход программе (как вариант, из входного файла text.dat) подаётся текст на английском языке. Ввод этих символов заканчивается точкой (другие символы, отличные от «.» во входных данных отсутствуют; в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка). Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять и выводить на экран, какая английская буква встречается во входной последовательности чаще всего и сколько именно раз. Строчные и прописные буквы при этом не различаются. Если таких букв несколько, то программа должна выводить на экран ту из них, которая стоит по алфавиту раньше.
Например, пусть файл содержит следующую информацию:
It is not a simple task. Yes!
Тогда чаще всего встречаются буквы I, S, T. (слово Yes в подсчете не участвует, так как расположено после точки). Следовательно, в данном случае, программа должна вывести
Программа читает текст до точки один раз, подсчитывая в массиве, хранящем 26 целых чисел, количество вхождений каждой из букв. Сам текст при этом не запоминается. Затем в этом массиве шлется первое вхождение максимального элемента. Баллы начисляются только за программу, которая решает задачу хотя бы для частного случая (например, для строк, состоящих не более чем из 255 символов).
DIM i, imах, с, a(26) AS INTEGER
OPEN «TEXT.DAT» FOR INPUT AS #1
IF(c>=ASC(«A»)AND c =ASC(«a»)AND c =1 AND c a(imax) THEN imax = i
PRINT CHR$(imax + 64), a(imax)
var a:array[‘A’..’Z’] of integer;
Текстовый документ хранился в 8-битной кодировке КОИ-8. Этот документ был преобразован в 16-битную кодировку Unicode, при этом размер памяти, необходимой для хранения документа увеличился на 4 Кбайт. При этом хранится только последовательность кодов символов. Укажите, сколько символов в документе. В ответе запишите только число.
Обозначим количество символов в документе за .
Тогда объем информации в кодировке КОИ-8: бит =
байт
Объем информации в 16-битной кодировке Unicode: бит =
байт.
Откуда = 4096.
Ответ: 4096 символов.
Некоторый алфавит содержит 4 различных символа. Сколько трехбуквенных слов можно составить из символов этого алфавита, если символы в слове могут повторяться?
Если в алфавите символов, то количество всех возможных «слов» (сообщений) длиной
равно
.
N=3, M=4. Следовательно,
Азбука морзе позволяет кодировать символы для сообщений по радиосвязи, задавая комбинацию точек и тире. Сколько различных символов (цифр, букв, знаков пунктуации и т.д.) можно закодировать, используя код азбуки Морзе длиной четыре или пять сигналов (точек и тире)?
Если в алфавите символов, то количество всех возможных «слов» (сообщений) длиной
равно
.
Поэтому четырехбуквенных символов слов 2 4 = 16, а пятибуквенных — 2 5 = 32. Всего можно закодировать 48 сообщений.
Муниципальный этап олимпиады по информатике проводился для учеников 7–11-х классов. Все ученики участвовали в общем конкурсе. Каждый участник олимпиады мог набрать от 0 до 400 баллов. По положению об олимпиаде победителем признаётся участник, набравший наибольшее количество баллов, при условии, что им набрано больше половины возможных баллов. Победителей может быть несколько, если это количество баллов наберут несколько человек; а может и не быть совсем, если никто не наберёт больше половины.
Пример входной строки:
Иванов Пётр 10 275
Программа должна выводить через пробел Фамилию и Имя искомого участника или их число. Пример выходных данных:
Второй вариант выходных данных:
Считываем данные. Для этого будем идти по каждой строке и считать количество пройденных пробелов. Если прошли ноль пробелов, то текущий символ надо отнести к имени, если один, то к фамилии, если два, то игнорируем, т. к. класс не важен, и, если три, то относим символ к количеству баллов.
При каждом считывании данных сравниваем количество баллов с максимальным, если оно меньше или равно 200, то это то количество баллов, которое имеется у искомых школьников. Иначе, ищем тот результат, который меньше максимального, но при этом наиболее близок к нему. Найдя такой результат сохраним имя и фамилию школьника в специально отведённых для этого переменных. Если же такой результат уже есть будем увеличивать счёт в переменной, предназначенной для подсчёта участников с одинаковым количеством баллов.
Пример правильной и эффективной программы на языке Паскаль:
var n, i, j, spaces, max, next, cnt, points: integer;
s, name, lastName, nameNext, lastNameNext: string;
var n, i, j, spaces, max, next, cnt, points, cntMax,: integer;
s, name, lastName, nameNext, lastNameNext, nameMax, lastNameMax: string;
for j := 1 to length(s) do
lastName := lastName+ s[j];
if points > max then
if max max) and (points > next) then
else if points = next then cnt:=cnt+1
else if points = max the cntMax:=cntMax+1;
Региональный этап олимпиады по информатике проводился для учеников 9–11-х классов. Все ученики участвовали в общем конкурсе. Каждый участник олимпиады мог набрать от 0 до 600 баллов. По положению об олимпиаде победители определяются следующим образом.
1. Определяются все участники, набравшие наибольшее среди всех участников количество баллов. Они объявляются кандидатами в победители.
2. Если число кандидатов составляет не более 25% всех участников олимпиады, все кандидаты считаются победителями.
3. Если кандидатов в победители более 25%, то рассматривается количество баллов, набранное кандидатами в победители. Если кандидаты набрали более 300 баллов, все они объявляются победителями. Если балл, набранный кандидатами, не превышает 300 баллов, победителем не признаётся никто.
Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет определять фамилию и имя лучшего участника, не ставшего победителем олимпиады. Если следующий за баллом победителей один и тот же балл набрали несколько человек или если победителей нет, а лучших участников несколько (в этом случае они же являются искомыми), то выдаётся только число искомых участников. Гарантируется, что искомые участники (участник) имеются.
На вход программе сначала подаётся число участников олимпиады N
Пример входной строки:
Иванов Пётр 10 275
Программа должна выводить через пробел Фамилию и Имя искомого участника или их число. Пример выходных данных:
Второй вариант выходных данных:
Считаем данные. Для этого будем идти по каждой строке и считать количество пройденных пробелов. Если прошли ноль пробелов, то текущий символ надо отнести к имени, если один, то к фамилии, если два, то игнорируем, т. к. класс не важен, и, если три, то относим символ к количеству баллов.
При каждом считывании данных сравниваем количество баллов с максимальным, если текущий результат больше максимального, то записываем его вместо максимального, если он равен максимальному, увеличиваем счётчик в переменной, предназначенной для подсчёта участников с одинаковым максимальным количеством баллов. Если таких людей меньше 25% объявляем их победителями, если их больше 25% и они набрали более 300 баллов, также объявляем их победителями, если максимальны балл меньше 300, то выводим 0, показывая, что победителей нет.
Пример правильной и эффективной программы на языке Паскаль.
var n, i, j, spaces, max, next, cntWinner, cntNext, points : integer;
s, name, lastName, nameWinner, lastNameWinner, nameNext, lastNameNext : string;