5 задач по теме строки - Форум
Воскресенье, 04.12.2016, 04:55
Задачи по информатике
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ignorer, KOT_B_MEIIIKE, PASCAL26, atvrider 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » 5 задач по теме строки (pascal)
5 задач по теме строки
PASCAL26Дата: Четверг, 01.04.2010, 14:14 | Сообщение # 1
Генералиссимус
Группа: Модераторы
Сообщений: 215
[ 23 ]
Статус: Offline
Задача 1 «Калькулятор»
В первой строке записано арифметическое выражение в виде: <число> <операция> <число> =
Число - это натуральное число, не превышающее 10000. <операция> - один из знаков +, -, *

В начале строки, в конце строки, а также между числами и знаком операции, числом и = может быть любое число пробелов (а может пробелов и не быть). Гарантируется, что длина строки не превышает 200 символов.

Выведите результат вычисления выражения.

Пример
Вход Выход
154 +3 = 157

Добавлено (01.04.2010, 14:12)
---------------------------------------------
Задача 2 «Считалка»

На входе две строки. Посчитайте, сколько раз первая строка встречается в качестве подстроки во второй.
Длина каждой из строк не превышает 255 символов.

Пример
Вход Выход
abab 2
abababcab

Пояснение:
подстрока abab встречается во второй строке дважды: начиная с 1-го символа и начиная с 3-го символа

Добавлено (01.04.2010, 14:13)
---------------------------------------------
Задача 3 «Статистика»

Задан текст. Напишите программу, которая посчитает статистику - сколько раз встречается буква A, сколько - B и т.д. При этом большие и маленькие латинские буквы считать одинаковыми.

Входные данные

На входе могут быть сколь угодно длинные строки. Текст, состоит из английских букв (больших и маленьких), знаков препинания, цифр и т.д.

Выходные данные

Вывести 26 строк. Каждая строка должна соответствовать латинской букве, буквы должны идти в алфавитном порядке. Каждая строка должна содержать сначала большую латинскую букву, которой она соответствует, пробел, символ - (тире), пробел и число: сколько раз буква встречается во входном файле.

Пример

Вход

Ab - a

Выход

A - 2
B - 1
C - 0
D - 0
E - 0
F - 0
G - 0
H - 0
I - 0
J - 0
K - 0
L - 0
M - 0
N - 0
O - 0
P - 0
Q - 0
R - 0
S - 0
T - 0
U - 0
V - 0
W - 0
X - 0
Y - 0
Z - 0

Добавлено (01.04.2010, 14:13)
---------------------------------------------
Задача 4"Распаковка строчки"

Будем рассматривать только строчки, состоящие из заглавных латинских букв. Например, рассмотрим строку AAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из латинских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений.
Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки.

Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку.

Входные данные

Одна упакованная строка. В строке могут встречаться только конструкции вида nA, где n - количество повторений символа (целое число от 2 до 99), а A - заглавная латинская буква, либо конструкции вида A, то есть символ без числа, определяющего количество повторений. Максимальная длина строки не превышает 80.

Выходные данные

Выведите восстановленную строку. При этом строка должна быть разбита на строчки длиной ровно по 40 символов (за исключением последней, которая может содержать меньше 40 символов).

Примеры

Вход Выход
3A4B7D AAABBBBDDDDDDD

22D7AC18FGD DDDDDDDDDDDDDDDDDDDDDDAAAAAAACFFFFFFFFFF
FFFFFFFFGD

95AB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAB


Задача 5"Реформа Евросоюза "

Европейская комиссия планирует принять решение о том, что официальным языком Евросоюза станет английский. Был также разработан план упрощения английской письменности, который планируется реализовать за четыре года.

Первоочередной задачей будет избавление от буквы c, которая в сочетаниях сi и сe будет изменяться на s, в сочетании ck — опускаться, а в остальных случаях заменяться на k. При этом все замены будут производиться в строгом порядке слева направо. То есть, например, в слове success сначала первая из двух букв c заменится на k, а затем вторая — на s, то есть получится suksess. А слово cck превратится в kk.

На второй год из английских слов изымут все удвоенные буквы: ee изменят на i, oo - на u, a в остальных комбинациях будут просто писать одну букву вместо двух одинаковых. Такие замены также будут делать строго в порядке слева направо. Так, слово ooo превратится в uo, а oou — просто в u (в нем сначала oo заменится на u, а затем uu — на u), слово iee превратится в i (в нем сначала ee заменится на i, а затем ii — на i).

На третий год на конце слова станут опускать букву е, если эта буква не является единственной буквой в слове.

Наконец, завершением реформы станет отмена артиклей (в английском языке три артикля: а, an и the). При этом удаляться эти артикли будут только тогда, когда они в исходном тексте были словами a, an, the.

То есть, например, текст the table после реформ первых трех лет превратиться в th tabl, а после реформы четвертого года — просто в tabl. А слово aaaaa после реформы первых лет станет словом a, но поскольку изначально оно не было словом a (артиклем), то оно в итоге так и останется словом a.

Напишите программу, которая будет переводить классический английский текст на Eвроинглиш.

Входные данные
Одна строка текста, состоящая не более чем из 200 символов: латинских строчных и заглавных букв, пробелов и знаков препинания (в тексте могут встречаться: точка, запятая, вопросительный и восклицательный знаки, двоеточие, тире, точка с запятой, открывающаяся и закрывающаяся скобки, апострофы, кавычки). Заглавные буквы могут встречаться только в начале слова. Нигде подряд не могут стоять два пробела. В начале и в конце строки не может стоять пробел. Слова отделяются друг от друга пробелами и/или знаками препинания.

Выходные данные
Нужно выдать преобразованную строку с учетом следующих требований:
• начинаться с заглавной буквы должны те и только те слова, которые начинались с заглавной буквы в исходном тексте;
• не должно встречаться двух пробелов подряд;
• пробелы между словами и знаками препинания должны остаться там и только там, где они были в исходной строке, в начале и в конце строки пробелов быть не должно.
Примеры

Вход Выход
cacao and coffee kakao and kofi
Cinderella! Where Is The Dress??? Sinderela! Wher Is Dres???
'A' is a letter '' is leter
Aaaa then the ckckck A then k

A the an (пропуск)

success sukses

Добавлено (01.04.2010, 14:14)
---------------------------------------------
к 1-3 есть решения (если кому интересно) к 4 есть недоделанное
помогите решить 5


пишу на с++, delphi, c# (нудные задачи небезвозмедно)
ps Если помог - щелкни +, и вам хорошо и мне приятно
 
ignorerДата: Пятница, 02.04.2010, 16:33 | Сообщение # 2
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
я скорее всего смогу 5 решить, если время найдётся, то попробую на досуге решить, но ничего обещать не могу. кста я не понимаю, почему 2 называется считалочкой smile
 
PASCAL26Дата: Пятница, 02.04.2010, 17:19 | Сообщение # 3
Генералиссимус
Группа: Модераторы
Сообщений: 215
[ 23 ]
Статус: Offline
ignorer, реши сначала 5 плиз до 23.59 сегодняшнего дня
З.Ы. не я названия придумавал


пишу на с++, delphi, c# (нудные задачи небезвозмедно)
ps Если помог - щелкни +, и вам хорошо и мне приятно
 
ignorerДата: Пятница, 02.04.2010, 17:56 | Сообщение # 4
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
сегодня времени вообще нету. уроки еле-еле в торопях щас сделаю (и то тока половину, а вторую завтра в школе придётся катать), а потом побегу. алгоритм могу сказать, тока с четвёртым годом реформ туговато получается. он всё портит. подумаю, что с ним можно будет сделать.
 
PASCAL26Дата: Пятница, 02.04.2010, 20:38 | Сообщение # 5
Генералиссимус
Группа: Модераторы
Сообщений: 215
[ 23 ]
Статус: Offline
ignorer, в принципе мне алгоритм один и нужен(так легче ход решения понять)

пишу на с++, delphi, c# (нудные задачи небезвозмедно)
ps Если помог - щелкни +, и вам хорошо и мне приятно
 
ignorerДата: Пятница, 02.04.2010, 22:45 | Сообщение # 6
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
тока вернулся домой, поэтому тока щас и отписался.
ну раз впринципе нужен алгоритм, то вот впринципе он и есть:
I пункт - 4 год
II пункт - 1 и 2 года
III пункт - 3 год
I) Сначала нужно проводить реформу 4 года с а, an и the (во всех пунктых мы проходимся по массиву). Делается это всё тремя простыми ветвлениями:
1) if (s[i]='t')and(s[i+1]='h')and(s[i+2]='e')and((a[i+3]>'z')or(a[i+3]<'A'))and((a[i-1]>'z')or(a[i-1]<'A')) then (потом все элементы начиная с s[i+3] смещаем на 3 влево)
2) if (s[i]='a')and(s[i+1]='n')and((a[i+2]>'z')or(a[i+2]<'A'))and((a[i-1]>'z')or(a[i-1]<'A')) then (все элементы начиная с s[i+2] смещаем на 2 влево)
3) if (s[i]='a')and((a[i+1]>'z')or(a[i+1]<'A'))and((a[i-1]>'z')or(a[i-1]<'A')) then (по аналогии с первыми 2-мя ветвлениями)
Примечание№1: (относится и к следующим 2-м пунктам) если нужно чтобы между двумя словами не было 2-х пробелов на том месте, где когда-то был артикль, то нужно перебирать не с s[i+3], а с s[i+4] и смещать нужно на 4 символа влево (в остальных 2-х ветвлениях тоже самое, тока вместо
s[i+2] нужно s[i+3] и вместо смещения на 2 нужно смещать на 3 и т.д.).
Примечание №2: русские буквы за буквы не считаются.
II) Дальше перебираешь по такому же типу весь массив ещё раз с самого начала (ветвление такое же - проверяешь буквы s[i] и s[i+1] и вперёд). Если нужно заменить 2 буквы на 1, то (я думаю ты догадываешься что нужно сделать, но всё же напишу) нужно i-ую заменить на ту, которая соответствующую и начиная с s[i+1] смещать все на 1.
III) Третий проход. Впринципе ветвление практически всё тоже, что и в первом за исключением одной подробности:
if (s[i]='e')and((a[i+1]>'z')or(a[i+1]<'A'))and((a[i-1]<'z')and(a[i-1]>'A')) then (думаю ты знаешь, что дальше делать).

ФУУУХ! ну вроде всё. если будут вопросы - спрашивай. наверн никогда стока не писал. разве что когда на олимпиаде Интелло участвовал недельку назад где-то :)

 
ignorerДата: Пятница, 02.04.2010, 23:13 | Сообщение # 7
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
ладно, я пошёл спать, поэтому на какие бы то ни было вопросы по алгоритму ответить уже не смогу. желаю удачи!
 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » 5 задач по теме строки (pascal)
Страница 1 из 11
Поиск:

Copyright MyCorp © 2016