Ввод-вывод в задачах этого листка - файловый. Имя входного файла - input.txt, выходного файла - output.txt.
Фраза "в данном тексте" означает, что необходимо считать весь входной текстовый файл, выполнить указанные действия над всем содержимым файла, вывести результат в выходной файл.
В шифре Цезаря каждая буква заменется на третью по счету букву за ней, при этом алфавит зациклен (буква А переходит в D, B переходит в E, ..., Z переходит в С).
Напишите программу, которая шифрует весь данный текст при помощи шифра Цезаря. Программа должна переводить заглавные латинские буквы - в заглавные, строчные латинские буквы - в строчные, все остальные символы не менять.
Указание по считыванию данных:
string inputline; while( getline(cin, inputline) ) { // Обработать посимвольно строку inputline }
Ввод | Вывод |
---|---|
Hello, |
Khoor, |
Для усиления шифра Цезаря величину сдвига при шифровании решили сделать независимой для каждой строки текста, а именно, величина сдвига при шифровании равна максимальной длине слова в строке. Слово определяется, как последовательность букв, идущих подряд, которые могут быть как заглавными, так и строчными.
Напишите программу, которая шифрует весь данный текст подобным образом.
Ввод | Вывод |
---|---|
Abc de fg |
Def gh ij |
На вход программы поступает строка текста, в которой могут встречаться:
Слово — это последовательность подряд идущих латинских букв и знаков дефис, ограниченная с обоих концов. В качестве ограничителей могут выступать начало строки, конец строки, пробел, знак препинания, тире. Тире отличается от дефиса тем, что слева и справа от знака дефис пишутся буквы, а хотя бы с одной стороны от тире идет либо начало строки, либо конец строки, либо пробел, либо какой-либо знак препинания, либо еще одно тире. Напишите программу, определяющую, сколько слов в данной строке текста. Во входном файле содержится одна строка. Программа должна вывести одно число — количество слов, которые содержатся в исходной строке.
Указание по считыванию данных. Поскольку строка одна, то она считывается одной функцией getline.
Ввод | Вывод |
---|---|
Hello , world! |
2 |
www.olympiads.ru |
3 |
Gyro-compass – this is a ... |
4 |
В этой задаче текстовый файл содержит только строчные латинские буквы и пробелы. Каждая строка файла состоит из слов, разделенных ровно одним пробелом. Первый и последний символ в каждой строке являются буквами.
Вам необходимо изменить порядок слов в каждой строке на противоположный.
Указание по считыванию данных. Считывать текст построчно, как в задаче A, обрабатывать отдельно каждую строку.
Ввод | Вывод |
---|---|
hello world |
world hello |
to be or not to be |
be to not or be to |
В файле записан текст, состоящий из строк. Удалите из каждой строки все лишние пробелы: лидирующие пробелы в начале каждой строки, концевые пробелы в конце строки, замените все пробелы между словами на один. Результат выведите в файл.
Указание по считыванию данных. Считывать текст построчно, как в задаче A, обрабатывать отдельно каждую строку.
Ввод | Вывод |
---|---|
We all live |
We all live |
Первая строка входного файла содержит целое число N. Далее (начиная со следующей строки) идет текст. Необходимо данный текст разбить на строки, длина которых не превосходит N символов и вывести его в файл. В каждой выведенной строке не должно быть пробелов в начале строки, пробелов в конце строки, слова в строке должны разделяться одним пробелом. При этом каждая строка должна быть максимально большой, то есть строки формируются по "жадному" принципу: добавляем слова из входного файла до тех пор, пока длина полученной строки не превышает N, после этого ставим разрыв строки. Гарантируется, что во входном файле нет слов длиннее N символов.
Указание по считыванию данных. Сначала считать число N, затем считывать текст по словам до окончания ввода.
int N; cin>>; string word; while( cin>>word ) { // Обработать слово word }
Ввод | Вывод |
---|---|
15 |
We all live in |
Решите предыдущую задачу при условии, что текст должен быть выровнен по правому краю, то есть каждая строка в выводе должна иметь длину ровно N символов, в противном случае ее нужно дополнить в начале строки пробелами до длины N. Последний символ каждой строки должен быть непробельным.
Ввод | Вывод |
---|---|
15 |
We all live in |
Решите предыдущую задачу при условии, что текст в выводе программы должен быть выровнен по ширине: первый и последний символ строки должны быть непробельными, при необходимости между словами должны быть добавлены дополнительные пробелы, при этом количество пробелов между любыми двумя словами в одной строке не должно отличаться более, чем на 1.
Последняя строка в тексте не растягивается по ширине.
Ввод | Вывод |
---|---|
15 |
We all live in |
Входной файл содержит некоторый текст. Для каждой буквы латинского алфавита посчитайте, сколько раз она встречается в тексте. Заглавные и строчные буквы считайте вместе, остальные символы игнорируйте. Программа должна вывести все буквы латинского алфавита (заглавные, от A до Z, по одной букве в строке), после этого на этой же строке количество появления этой буквы в исходном тексте.
Указание по считыванию данных. Считывать файл посимвольно до окончания ввода.
char inputchar; while( cin>>inputchar ) { // Обработать символ inputchar }
Ввод | Вывод |
---|---|
We all live in the yellow submarine! |
A 2 |
Решите предыдущую задачу, выводя результат в порядке убывания частоты появления буквы во входном файле. Если какая-то буква не встречается во входном файле, ее не нужно выводить. Если два символа встречаются одинаковое количество раз, то ихз нужно выводить в алфавитном порядке.
Ввод | Вывод |
---|---|
We all live in the yellow submarine! |
E 5 |
У Васи на клавиатуре не работает клавиша пробел. Поэтому все тексты он теперь набирает слитно. Напишите программу, которая будет разделять набранный Васей текст на слова из данного словаря.
Сначала на вход программы поступает текст, введенный Васей – одна строка из не более чем 100 латинских строчных букв. В следующей строке входных данных задается значение N – количество слов в словаре (N – натуральное число, не превосходящее 2000). В следующих N строках записаны слова из словаря – по одному слову в строке, каждое слово содержит не более 20 латинских строчных букв. Слова записаны в алфавитном порядке.
Выведите Васин текст с пробелами между словами (пробел после последнего слова допустим). Если возможно несколько вариантов разбиения строки на слова, выведите любой их них. Гарантируется, что хотя бы один способ разбиения строки на словарные слова существует.
Ввод | Вывод |
---|---|
whatcanido |
what can i do |
bababababa |
b a b a b a b a b a |