К. Поляков, 2010 -2012 Программирование на алгоритмическом языке. Часть II Тема 4. Символьные строки.

Презентация:



Advertisements
Похожие презентации
К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 5. Матрицы.
Advertisements

К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 4. Символьные строки.
К. Поляков, Программирование на алгоритмическом языке. Часть III 1.Обработка массивовОбработка массивов 2.Сортировка.
К. Поляков, Программирование на алгоритмическом языке Тема 7. Алгоритмы-функции.
К. Поляков, Программирование на алгоритмическом языке. Часть III 1.Обработка массивовОбработка массивов 2.Сортировка.
К. Поляков, Программирование на алгоритмическом языке. Часть II 1.МассивыМассивы 2.Максимальный элемент массиваМаксимальный.
К. Поляков, Программирование на алгоритмическом языке Тема 4. Циклы.
К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 6. Файлы.
К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 5. Матрицы.
Начала программирования Занятие 18. Пошаговая детализация алгоритма. Подпрограммы-функции.
К. Поляков, Программирование на алгоритмическом языке Тема 1. Введение.
Программирование на языке Паскаль Символьные строки.
К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 3. Двоичный поиск.
К. Поляков, Программирование на алгоритмическом языке. Часть II 1. Массивы Массивы 2. Максимальный элемент массива Максимальный элемент массива.
К. Поляков, Программирование на алгоритмическом языке Тема 5. Графика.
10 класс. №009. Процедуры и функции обработки строковых переменных. Решение задач. Серия №1.
Операция NFRУсловие 1 Ввод N3 2 F := 11 3 R := 11 4 R <= N1 <= 3да 5 F := F * R1 6 R := R R <= N2 <= 3да 8 F := F * R2 9 R := R R <= N3.
К. Поляков, Программирование на алгоритмическом языке Введение.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 58. Циклические алгоритмы 1.
K := 1, 15 i := 1, 16 - K i := 1, 16 да нет B [ i ] > B [ i + 1 ] X : = B [ i ] B [ i ] : = B [ i + 1] B [ i + 1 ] : = X вывод B [, i, ] =,B [ i ] для.
Транксрипт:

К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 4. Символьные строки

Программирование на алгоритмическом языке. Часть II К. Поляков, Задачи на обработку строк 2 Задача: с клавиатуры вводится число N, обозначающее количество футболистов команды «Шайба», а затем – N строк, в каждой из которых – информация об одном футболисте таком формате: Все данные разделяются одним пробелом. Нужно подсчитать, сколько футболистов, родившихся в период с 1988 по1990 год, не забили мячей вообще. Алгоритм (для каждой строки): 1)выделить год ( year ) и количество голов ( goal ) 2)если 1988

Программирование на алгоритмическом языке. Часть II К. Поляков, Программа 3 использовать Строки алг Футболисты нач цел N, i, p, year, goal, count=0 лит s ввод N нц для i от 1 до N ввод s | разобрать строку, выделить год и голы если year >= 1988 и year = 1988 и year

Программирование на алгоритмическом языке. Часть II К. Поляков, Разбор строки 4 Пропуск фамилии: p:= найти(" ", s) s:= s[p+1:длин(s)] p:= найти(" ", s) s:= s[p+1:длин(s)] Пропуск имени: Ввод года рождения: p:= найти(" ", s) year:= лит_в_цел(s[1:p-1],OK) s:= s[p+1:длин(s)] p:= найти(" ", s) year:= лит_в_цел(s[1:p-1],OK) s:= s[p+1:длин(s)] Ввод числа голов: Иванов Вася p Вася p:= найти(" ", s) s:= s[p+1:длин(s)] p:= найти(" ", s) s:= s[p+1:длин(s)] Вася p p 5 goal:= лит_в_цел(s,OK) лог OK

Программирование на алгоритмическом языке. Часть II К. Поляков, Разбор строки 5 Если фамилия нужна: p:= найти(" ", s) fam:= s[1:p-1] s:= s[p+1:длин(s)] p:= найти(" ", s) fam:= s[1:p-1] s:= s[p+1:длин(s)] лит fam Иванов Вася p Иванов Вася Если нужны ВСЕ фамилии: p:= найти(" ", s) fam[i]:= s[1:p-1] s:= s[p+1:длин(s)] p:= найти(" ", s) fam[i]:= s[1:p-1] s:= s[p+1:длин(s)] литтаб fam[1:N]

Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 6 «3»: Вывести фамилии всех футболистов, которые забили больше двух голов. Пример: Иванов Василий Семёнов Кузьма «4»: Вывести фамилию и имя футболиста, забившего наибольшее число голов, и количество забитых им голов. Пример: Иванов Василий 25 Информация о футболистах вводится так же, как и для приведенной задачи (сначала N, потом N строк с данными).

Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 7 «5»: Вывести в алфавитном порядке фамилии и имена всех футболистов, которые забили хотя бы один гол. В списке не более 100 футболистов. Пример: Васильев Иван Иванов Василий Кутузов Михаил Пупкин Василий

Программирование на алгоритмическом языке. Часть II К. Поляков, Рекурсивный перебор 8 Задача: Алфавит языка племени «тумба-юмба» состоит из букв Ы, Ц, Щ и О. Вывести на экран все слова из К букв, которые можно составить в этом языке, и подсчитать их количество. Число K вводится с клавиатуры. 1K в каждой ячейке может быть любая из 4-х букв 4 варианта Количество вариантов:

Программирование на алгоритмическом языке. Часть II К. Поляков, Рекурсивный перебор 9 Ы 1K Рекурсия: Решения задачи для слов из К букв сводится к 4-м задачам для слов из K-1 букв. Щ 1K О 1K Ц 1K перебрать все варианты

Программирование на алгоритмическом языке. Часть II К. Поляков, Процедура 10 алг Рек(цел p) нач если p > K то вывод s, нс count:= count + 1 выход все кон алг Рек(цел p) нач если p > K то вывод s, нс count:= count + 1 выход все кон ???? 1K p s p+1 рекурсивные вызовы А если букв много? ? Глобальные переменные: лит s цел count, K если p > K то вывод s, нс count:= count + 1 выход все если p > K то вывод s, нс count:= count + 1 выход все s[p]:= "Ы"; Рек(p+1) s[p]:= "Ц"; Рек(p+1) s[p]:= "Щ"; Рек(p+1) s[p]:= "О"; Рек(p+1) s[p]:= "Ы"; Рек(p+1) s[p]:= "Ц"; Рек(p+1) s[p]:= "Щ"; Рек(p+1) s[p]:= "О"; Рек(p+1) окончание рекурсии

Программирование на алгоритмическом языке. Часть II К. Поляков, Основная программа 11 лит s, цел count = 0, K алг Рекурсивный перебор нач вывод "Введите длину слов: " ввод K s:= "" нц K раз s:= s + " " кц Рек(1) вывод "Всего ", count, " слов" кон лит s, цел count = 0, K алг Рекурсивный перебор нач вывод "Введите длину слов: " ввод K s:= "" нц K раз s:= s + " " кц Рек(1) вывод "Всего ", count, " слов" кон s:= "" нц K раз s:= s + " " кц строка из K пробелов глобальные переменные алг Рек(цел p) нач... кон алг Рек(цел p) нач... кон

Программирование на алгоритмическом языке. Часть II К. Поляков, Процедура (много букв) 12 алг Рек(цел p) нач если p > K то вывод s, нс count:= count + 1 выход все кон алг Рек(цел p) нач если p > K то вывод s, нс count:= count + 1 выход все кон лит syms="ЫЦЩО", цел i нц для i от 1 до длин(syms) s[p]:= syms[i]; Рек(p+1) кц нц для i от 1 до длин(syms) s[p]:= syms[i]; Рек(p+1) кц локальные переменные все буквы цикл по всем буквам

Программирование на алгоритмическом языке. Часть II К. Поляков, Задания 13 Алфавит языка племени «тумба-юмба» состоит из букв Ы, Ц, Щ и О. Число K вводится с клавиатуры. «3»: Вывести на экран все слова из К букв, в которых первая буква – Ы, и подсчитать их количество. «4»: Вывести на экран все слова из К букв, в которых буква Ы встречается более 1 раза, и подсчитать их количество. «5»: Вывести на экран все слова из К букв, в которых есть одинаковые буквы, стоящие рядом (например, ЫЩЩО), и подсчитать их количество.