- •Оценка эффективности алгоритмов
- •Целочисленная арифметика
- •Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
- •Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
- •Найти самую большую и самую маленькую цифры данного натурального числа
- •Выяснить образуют ли цифры натурального числа возрастающую последовательность
- •Формат выходного файла
- •Формат входного файла
- •Формат выходного файла
- •Формат входного файла
- •Формат входного файла
- •Формат выходного файла
- •Длинная арифметика
- •Выходные данные
- •Задачи Задача 52 Иностранные земли
- •Входные данные.
- •Выходные данные.
- •Формат входного файла
- •Формат выходного файла
- •Задачи Задача 56 Уравнение
- •Решение
- •Одномерные массивы
- •Базовые задачи на массивы
- •Задача 15 Сокращение одночленов
- •Входные данные:
- •Задача 16 Школьный субботник
- •Входные данные:
- •Входные данные:
- •Выходные данные:
- •Примеры
- •Задача 27 Решение систем линейных уравнений на Pascal
- •Двумерные массивы
- •Описание массива
- •Способы создания массива
- •Задачи:
- •Задача 5 Малыш играет в "Морской бой 2" Малыш играет в "Морской бой". Поле для игры представляет собой квадрат
- •Входные данные
- •Выходные данные
- •Задача 26 Шарик в лабиринте
- •Примечание
- •Задача 27 Блохи
- •В первой строке входного файла Input.Txt находится 5 чисел, разделенных пробелом: n, m, s, t, q.
- •Входные данные
- •Выходные данные
- •Примеры
- •Задача 34 Магический квадрат
- •Формат входного файла
- •Формат выходного файла
- •Входные данные
- •Выходные данные
- •Входные данные
- •Выходные данные
- •Рекурсия
- •Комбинаторика
- •2.5. Генерация комбинаторных объектов
- •Множество всех подмножеств
- •Перестановки
- •Размещения
- •Перестановки с повторениями
- •Сочетания с повторениями
- •Перебор
- •Символ o()
- •Отсечение по времени
- •Рассмотрим несколько олимпиадных задач.
- •Шарик в лабиринте
- •Задача 1. Шарик в лабиринте
- •Задача 3 Цепочка слов
- •Входные данные
- •Выходные данные
- •Примеры
- •Формат входного файла
- •Формат выходного файла
- •Примеры
- •Динамическое программирование
- •Задача 8 Гвоздики
- •Задача 13 Лесенки
- •Задача 18 Свинья-копилка
- •Входные данные
- •Выходные данные
- •Задача 13 Лесенки Лесенкой называется набор кубиков, в котором каждый более верхний слой содержит кубиков меньше, чем предыдущий.
- •Задача 18 Свинья-копилка
- •Формат входного файла:
- •Формат выходного файла:
- •Примеры
- •Решение
- •Входные данные:
- •Выходные данные:
- •Формат входа
- •Формат выхода
- •Задача 39 Лесенка-2
- •Входные данные
- •Выходные данные
- •Примеры
- •Системы счисления
- •Задача 11 Троичная сбалансированная система счисления
- •Алгоритм перевода
- •Процедуры и функции для работы с символами и строками
- •Определить количество слов в строке
- •Получите строковой массив из всех слов данной строки
- •Получите строковой массив из всех слов данной строки и
- •Получите строковой массив из всех слов данной строки и
- •Составьте программу, определяющую, является ли введенное слово изображением числа
- •Введите 2 целых числа. Преобразуйте числа в две строки, объедините их в одну строку и выведите результат на экран.
- •Вычислите длину самого короткого и самого длинного слов в строке
- •Подсчитайте количество букв в каждом слове данной строки
- •Дана строка. Определить количество слов этой строки, в которых есть ровно две буквы «е»
- •Составьте программу, удаляющую все лишние пробелы из введенной строки
- •Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их номеров в ascii-таблице. Например, если введено: 'cba', в результате надо получить ‘abc’.
- •В тексте, состоящем из маленьких латинских букв , подсчитайте количество гласных букв
- •Заданы фамилия, имя и отчество учащегося, разделенные пробелом. Напечатайте его фамилию и инициалы.
- •Сложное слово состоит из двух частей одинаковой длины и соединительной гласной. Найдите обе части этого слова.
- •Вычеркните из слова х те буквы, которые встречаются в слове z
- •Подсчитайте число различных букв в слове
- •Даны два слова. Составьте программу, определяющую можно или нет из букв слова а составить слово в.
- •Даны два слова. Являются ли они анаграммами
- •Является ли данная строка палиндромом?
- •Задача 4. Сокращение одночленов
- •Входные и выходные данные
- •Это чисто техническая задача на аккуратное программирование.
- •Задача 6 Текст
- •Входной файл Input.Txt в первой строке входного файла находится 5 чисел,разделенных пробелом: n, m, s, t, q.
- •Бинарные деревья. Алгоритм HeapSort
- •Поиск в глубину в графе
- •Алгоритм Флойда поиска кратчайших расстояний и кратчайших путей
- •Бинарные деревья. Алгоритм HeapSort
- •Графызадачи Двоичная куча
- •Примеры задач, которые решаются с помощью двоичной кучи
- •Поиск максимального потока методом Форда-Фалкерсона на Pascal
- •Графызадачи Поиск сильно связанных компонент на Pascal
- •Поиск точек раздела, мостов и двусвязных компонент
- •Идеи алгоритмов
- •Точки раздела
- •Двусвязные компоненты
- •Задача 21 Моя Столица
- •Вычислительная геометрия
- •3. Уравнение прямой 2
- •4. Уравнение прямой проходящей через точку м(х0у0)
- •Формат входного файла
Процедуры и функции для работы с символами и строками
Обращение |
Тип результата |
Действие |
Str (Выражение, Строка) |
String |
Преобразование целочисленного выражения в строку |
Val (Строка, Число, Код) |
Real |
Преобразование строки с числом, в число; в случае успеха, Код = 0 |
Insert (Строка1, Строка2, N) |
String |
Вставка Строки1 в Строку2, начиная с позиции N |
Delete (Строка, N, M) |
String |
Удаление M-символов, начиная с позиции N |
Length (Строка) |
Byte |
Количество символов в строке |
Pos (Подстрока, Строка) |
Byte |
Позиция подстроки в строке (0, если не найдена) |
Concat (Строка1,…,СтрокаN) |
String |
Объединение N строк в одну |
Copy (Строка, N, M) |
String |
Копирование из данной строки М-символов, начиная с позиции N |
UpCase (Символ) |
Char |
Преобразование строчной буквы в прописную (кроме русских букв) |
Базовые задачи на строки:
Подсчитать количество вхождений заданной вами буквы, в заданной строке
Удалить из строки все первые и последние пробелы.
Сколько раз данная подстрока встречается в строке.
Определить, является ли введенное слово изображением числа.
Введите 2 целых числа. Преобразуйте числа в две строки, объедините их в одну строку и выведите результат на экран.
Определить количество слов в строке.
Получите строковой массив из всех слов данной строки
Получите строковой массив из всех слов данной строки и
отсортируйте его по алфавиту
Получите строковой массив из всех слов данной строки и отсортируйте его по возрастанию длин слов
Вычислите длину самого короткого и самого длинного слов в строке
Подсчитайте количество букв в каждом слове данной строки
Дана строка. Определить количество слов этой строки, в которых есть ровно две буквы «е».
Составьте программу, удаляющую все лишние пробелы из введенной строки
Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их номеров в ASCII-таблице. Например, если введено: 'CBA', в результате надо получить ‘ABC’
В тексте, состоящем из маленьких латинских букв , подсчитайте количество гласных букв
Заданы фамилия, имя и отчество учащегося, разделенные пробелом. Напечатайте его фамилию и инициалы
Сложное слово состоит из двух частей одинаковой длины и соединительной гласной. Найдите обе части этого слова
Вычеркните из слова Х те буквы, которые встречаются в слове Z
Подсчитайте число различных букв в слове
Даны два слова. Составьте программу, определяющую можно или нет из букв слова А составить слово В
Даны два слова. Являются ли они анаграммами?
Является ли данная строка палиндромом?
Дан строковой массив, каждый элемент которого содержит фамилию ученика и три оценки, разделенных одним пробелом. Упорядочить массив по убыванию среднего балла, а в группах с одинаковыми количеством баллов по алфавиту.
Приведенные ниже листинги программ достаточно прозрачные и некоторые из них не требуют комментариев.
1. Напишите программу, подсчитывающую количество вхождений
заданной вами буквы во введенной строке
var s,s1:string;
n,i,kol:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
readln(s1);
n:=length(s);kol:=0;
for i:=1 to n do
if s1=s[i]
then inc(kol);
write(kol);
end.
Удалить из строки все первые и последние пробелы
var s:string;
i:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
while (length(s)>0)and(s[1]=' ') do
delete(s,1,1);
while (length(s)>0)and(s[length(s)]=' ') do
delete(s, length(s),1);
write(s);
end
Сколько раз данное слово встречается в строке
var s,s1:string;
i,kol:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
readln(s1);
repeat
if pos(s1,s)>0
then
begin
inc(kol);
delete(s,pos(s1,s),length(s1)); так как процедура pos всегда находит первое
end; вхождение слова, то найденное слово надо
удалять
until pos(s1,s)=0;
write(kol);
end.
