====== Програмирование. Обработка строковых данных ====== ===== Разделы для повторения ===== При решении задач будет использоваться язык программирования [[http://ru.wikipedia.org/wiki/Turbo_Pascal|Turbo Pascal.]] Ссылки на информационные ресурсы для повторения основ языка: [[http://valera.asf.ru/delphi/book/tp04.shtml|Структкра программы на языке Pascal]] [[http://valera.asf.ru/delphi/book/tp05.shtml|Переменные. Типы данных]] [[http://valera.asf.ru/delphi/book/tp06.shtml|Операции и стандартные функции]] [[http://valera.asf.ru/delphi/book/tp07.shtml|Операторы Turbo Pascal]] [[http://valera.asf.ru/delphi/book/tp08.shtml|Условные операторы]] [[http://valera.asf.ru/delphi/book/tp09.shtml|Циклы]] [[http://valera.asf.ru/delphi/book/tp10.shtml|Массивы]] [[http://valera.asf.ru/delphi/book/tp11.shtml|Работа со строковыми переменными]] ===== Разбор задачи. Построение информационной модели. ===== == Пример задачи С-4 из варианта ЕГЭ по информатике: == >Вступительные испытания в некоторый вуз состоят из трех экзаменов: математика (максимальный балл - 9), информатика (максимальный балл - 9), литература (максимальный балл - 5). На вход программе подаются сведения о сдаче этих экзаменов абитуриентами. В первой строке указывается количество абитуриентов N, во второй - количество мест K (K < N), на которые эти абитуриенты претендуют. Каждая из следующих N строк имеет следующий формат: <Фамилия> <оценка 1> <оценка 2> <оценка 3>, где <Фамилия> - строка, состоящая не более, чем из 20 символов, оценки - числа от 0 до максимальной оценки по предмету соответственно (ноль ставится в случае, если экзамен не сдавался, например, после полученной на предыдущем экзамене двойки; все баллы, больше 2, считаются удовлетворительными). Пример входных строк: > >Иванов 8 9 3 >Петров 2 0 0 > >Требуется написать как можно более эффективную программу, которая определяла бы по имеющимся данным количество абитуриентов, набравших полупроходной балл в данный вуз, или сообщила, что такой балл отсутствует. (Полупроходным называется такой балл, что лишь часть абитуриентов, набравших такой балл и не получивших ни одной неудовлетворительной оценки, попадает в K лучших, которые должны быть зачислены на 1 курс). Предполагается, что абитуриенты, получившие только удовлетворительные оценки, обязательно присутствуют. // // ==Блок схема решения задачи== ---- **Обозначения переменных:** >**N** - содержит число всех абитуриентов. >**K** - количество мест, на которые претендуют абитуриенты. >**m[1..23]** - массив, содержащий количество абитуриентов, набравших определенный общий балл (порядковый номер элемента массива вычисляется из суммы баллов, набранных абитуриентом). >**C** - символьная переменная, используемая для ввода фамилии абитуриента. >**m1,m2,m3** - баллы абитуриента по трем экзаменам соответственно. >**S,i** - служебные переменные. {{proekty_uchenikov_11a2:blok2.gif|}} ===== Прокрутка программы ===== {{proekty_uchenikov_11a2:prokrytka2.swf|}} ===== Программный код ===== == Один из вариантов решения данной задачи на языке Turbo Pascal: == var m:array[0..23] of integer; c:char; i, K, N, S, m1, m2, m3:integer; begin readln(N); readln(K); for i:=0 to 23 do m[i]:=0; for i:=1 to N do begin repeat read(c) until c=' '; {считана фамилия абитурьента} readln(m1, m2, m3); if (m1<3) or (m2<3) or (m3<3) then S:=0 else S:=m1+m2+m3; m[s]:=m[s]+1 {учитываем абитурьента в элементе массива, соответствующем его баллам} end; S:=m[23]; i:=23; while (S+m[i-1]<=K) and (i>9) do begin i:=i-1; S:=S+m[i] end; if (S9) then writeln('Полупроходной балл набрали: ', m[i-i], ' человек') else writeln('Полупроходной балл отсутствует'); readln end. ===== Задачи для самостоятельного решения ===== [[http://www.ucheba.ru/ege-article/5615.html]] - задания части B и C из варианта ЕГЭ.\\ [[http://www.itrobot.net/fajly/task,doc_details/gid,3/]] - скачать пробные варианты ЕГЭ по информатике.\\ [[http://www.ege.ru/demo-ege/demo-inf-2004.shtml]] - ознакомительный вариант ЕГЭ по информатике.\\ [[http://design.gossoudarev.com/school/ege/2006demo.pdf]] - Демонстрационный вариант ЕГЭ 2006 года.\\ [[http://www.school-117.ru/userfiles/file/informatika/i_d_2008.pdf]] - Демонстрационный вариант ЕГЭ 2008 года.