Програмирование. Обработка строковых данных

Разделы для повторения

При решении задач будет использоваться язык программирования Turbo Pascal. Ссылки на информационные ресурсы для повторения основ языка:

Структкра программы на языке Pascal

Переменные. Типы данных

Операции и стандартные функции

Операторы Turbo Pascal

Условные операторы

Циклы

Массивы

Работа со строковыми переменными

Разбор задачи. Построение информационной модели.

Пример задачи С-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 - служебные переменные.

Прокрутка программы

Для просмотра этого содержимого требуется Adobe Flash Plugin.

Программный код

Один из вариантов решения данной задачи на языке 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 (S<K) and (i>9) 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 года.

 
proekty_uchenikov_11a2/podgotovka_k_egeh_po_informatike._razdel_programmirovanie._obrabotka_strokovyx_dannyx._ilin_pavel.txt · Последние изменения: 2008/04/16 21:02 От ilin_11a2
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki