Рабочие листы
к вашим урокам
Скачать
1 слайд
Программы на языке Pascal олимпиадных задач по информатике
г. Красный Лиман, Донецкая обл.
2016 г.
Подготовил учитель информатики лицея Заруднев А.Н.
2 слайд
Задача № 1.
Степень симметрии (100 б)
Степенью симметрии натурального числа назовём количество пар его десятичных цифр, в которых цифры совпадают и расположены симметрично относительно середины десятичной записи этого числа. Если некоторая цифра стоит посередине десятичной записи, её тоже нужно учитывать в паре с ней самой. Найти степень симметрии числа N.
Входные данные. В строке ввода содержится единственное натуральное число N (N < 2·109).
123322
Выходные данные. Нужно вывести единственное число – степень симметрии числа N.
2
3 слайд
Программа
var n:string; i,l,q:byte;
begin
readln(n);
l:= length(n);
if l mod 2=0
then q:=0 else q:=1;
for i:=1 to l div 2 do
if n[i]=n[l-i+1] then q:=q+1;
writeln(q);
end.
4 слайд
Подсчитайте количество счастливых билетов, у которых сума первых трёх цифр равна N.
Счастливым билетом называется билет с шестизначным номером, у которого сумма первых трёх цифр равна сумме трёх последних.
Входные данные. В единственной строке задано натуральное число N (N ≤ 27).
1
Выходные данные. Единственное число - количество счастливых билетов.
9
Задача № 2.
Счастливые билеты(100 б)
5 слайд
Программа
Var n, j, i, l, k: integer;
begin
readln(n);
for i:=0 to 9 do
for j:=0 to 9 do
for l:=0 to 9 do
if (i+j+l=n) then k:=k+1;
writeln(k*k);
end.
6 слайд
Задача № 4. Шарики (100 б)
У продавца воздушных шариков есть N шаров. Каждый из них имеет некоторый цвет. Однако совсем недавно Три Толстяка издали указ, разрешающий торговать шариками какого-то одного цвета. Чтобы не нарушать закон, но при этом и не потерять прибыль, продавец решил перекрасить некоторые из своих шариков. Напишите программу для определения минимального количества перекрашиваний.
Входные данные. В первой строке входного файла задано количество шариков N (1 ≤ N ≤ 100000). Вторая строка состоит из N целых чисел (от 1 до 9), определяющих цвета шариков.
4
3 1 2 1
Выходные данные. В единственную строку выходного файла выведите минимальное количество шариков, которое надо перекрасить, чтобы все шарики были одного цвета.
2
7 слайд
var
kol:array[1..9] of longint; n,i,max:longint; a:byte;
begin
readln(n);
for i:=1 to n do
begin
read(a);
kol[a]:=kol[a]+1;
end;
max:=kol[1];
for i:=2 to 9 do
if max<kol[i] then max:=kol[i];
writeln(n-max);
end.
8 слайд
Будем рассматривать только строчки, состоящие из заглавных латинских букв. Например, рассмотрим строку AAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из латинских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений.
Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки. Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку.
Задача № 5.
Распаковка строчки (100 б)
9 слайд
Входной файл содержит одну упакованную строку. В строке могут встречаться только конструкции вида nA, где n — количество повторений символа (целое число от 2 до 99), а A — заглавная латинская буква, либо конструкции вида A, то есть символ без числа, определяющего количество повторений. Максимальная длина строки не превышает 80.
В выходной файл выведите восстановленную строку. При этом строка должна быть разбита на строчки длиной ровно по 40 символов (за исключением последней, которая может содержать меньше 40 символов).
вход
Sample 1
3A4B7D
Sample 2
22D7AC18FGD
ВХОДНЫЕ И ВЫХОДНЫЕ данные
выход
Sample 1
AAABBBBDDDDDDD
Sample 2DDDDDDDDDDDDDDDDDDDDDDAAAAAAACFFFFFFFFFFFFFFFFFFGD
10 слайд
Идея решения задачи
var s, z: string; {z - исходная строка, s - новая строка} i, k, t, c: integer; {k - количество цифр в числе,
t – число пред буквой в исх. строке, с – функция VAL}
Z = 95AB; s = ‘’.
ПОКА Длина(Z) > 0 – ИСТИНА
Проверим первый символ строки z[1], если это цифра [1..9], то (к=1) проверим второй символ z[2], если это цифра [0..9], то (к=2).
Z[1] = ‘9’ – это цифра, поэтому проверяем Z[2] = ‘5’ – это цифра, поэтому К = 2.
С помощью функции Val(Copy(z,1,k),t,c) {Руденко, т.2, стр. 73-75} преобразуем фрагмент исходной строки Copy(z,1,k), состоящий из числа ‘95’, в число t = 95.
11 слайд
Идея решения задачи
Добавляем в новую строку 95 раз букву, стоящую после числа, на позиции К +1 = 3 – это ‘A’.
For i := 1 to t do s:= s + z[k+1];
Затем удалим все отработанные символы.
Удаляем К+1=3 первых символа из Z:
Delete(z,1,k+1); – остается ‘B’.
Длина(Z) > 0 – ИСТИНА (повторяем)
Если первый символ исходной строки не цифра, то просто переписываем эту букву в новую строку.
Z[1] = ‘B’ – это не цифра, переписываем эту букву в новую строку. Удаляем эту букву из Z – остается ‘’.
Длина(Z) > 0 – ЛОЖЬ.
12 слайд
Фрагмент программы
begin
Readln(z); s:='';
while length(z)>0 do
begin
if z[1] in ['1'..'9']
then begin
k:=1;
if z[2] in ['0'..'9'] then k:=2;
Val(Copy(z,1,k),t,c);
for i := 1 to t do s:=s+z[k+1];
Delete(z,1,k+1);
end
else begin
s:=s+z[1];
Delete(z,1,1);
end;
end;
13 слайд
Вывод новой строки.
Пока длина строки больше 40 символов, то мы выводим фрагмент строки из сорока символов и удаляем эти 40 символов. Затем выводим оставшееся количество символов.
while Length(s)>40 do
begin
writeln(Copy(s,1,40));
Delete(s,1,40);
end;
Writeln(s);
14 слайд
Задача № 3.
Разница в зарплате (100 б)
На малом предприятии работает определенное количество работников, но не менее двух – директора и главного бухгалтера. Зная зарплаты всех работников, найти на сколько наименьшая зарплата на предприятии отличается от наибольшей.
Входные данные. В единственной строке через пробел заданы заработные платы работников в гривнах. Все входные данные – неотрицательные вещественные числа, разделенные пробелами, их количество не превышает 1000.
1000.00 760.00
Выходные данные. Единственное число – ответ к задаче, выведенный с двумя цифрами после запятой.
240.00
15 слайд
Идея решения задачи
Найти разницу мин. и макс. з/п.
min:=z[1];
max:=z[1];
for i:=2 to n-1 do
begin
if min>z[i] then min:=z[i];
if max<z[i] then max:=z[i];
end;
r:=max-min;
writeln(r:1:2);
16 слайд
Чтение данных из текстового файла
В программе необходимо выполнить описание файла
Var f : Text; {имя файловой переменной: тип}
Установить связь логического имени файла – f и физического – ‘data.txt‘
Assign(f,'data.txt')
Открыть файл для чтения Reset(f);
Ввести данные из файла в программу, т.е. вывести данные из файла (Read, Readln).
Read(имя файловой переменной, список ввода)
read(f,a);
Процедура Close(F). Выполняется закрытие файла F.
Обязательна для файла открытого для записи!
17 слайд
var max,min,a:real; f:text;
begin
assign(f,'data.txt');
reset(f);
read(f,a);
max:=a; min:=a;
while not eof(f) do begin
read(f,a);
if max<a then max:=a;
if min>a then min:=a;
end;
writeln(max-min:1:2);
close(f)
end.
Программа
18 слайд
Текстовые файлы -
совокупность строк переменной длины, состоящих из символов (числа, записанные через пробел, составляют таблицу чисел: одна строка – одномерный массив, несколько строк - двумерный).
В конце каждой строки ставится специальный признак (маркер) eol (end of line).
Функция Eoln(F):boolean возвращает значение true, если во входном потоке достигнут маркер конца строки eol.
В конце файла ставится признак (маркер) eof (end of file).
Функция Eof(F):boolean. Функция возвращает значение true, если достигнут конец файла; в противном случае выходное значение равно false.
Рабочие листы
к вашим урокам
Скачать
6 655 772 материала в базе
Настоящий материал опубликован пользователем Заруднев Андрей Николаевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс повышения квалификации
72 ч. — 180 ч.
Курс повышения квалификации
36 ч. — 180 ч.
Курс повышения квалификации
36/72 ч.
Мини-курс
8 ч.
Мини-курс
3 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.