вівторок, 30 червня 2015 р.

Літерні величини задачі з сайту e-olimp


1. Кількість слів

Є деяке речення на невідомій мові. Порахувати кількість слів у ньому. Літерами алфавіту у невідомій мові є літери латинського алфавіту та арабські цифри. Гарантується, що інших символів, крім пропусків та розділових знаків у реченні нема.

Вхідні дані
У єдиному рядку дано речення на невідомій мові.

Вихідні дані

Єдине число - кількість слів у ньому.

Код програми

program kilkist_sliv;
var s:string; i,j:integer;
begin
readln(s);
s:=s+' '; j:=0;
for i:=2 to length(s) do
 if (s[i]=' ') and (s[i-1]<>' ') then j:=j+1;
writeln(j) ;
readln;
end.

2. Слово чемпіон

Дано деяке речення на невідомій мові. Назвемо слово у ньому чемпіоном, якщо воно є паліндромом і кількість літер у ньому максимальна. Літерами алфавіту у невідомій мові є літери латинського алфавіту та арабські цифри. Гарантується, що інші символи, крім пропусків та розділових знаків, у реченні відсутні.
Вхідні дані

Речення на невідомій мові.

Вихідні дані
Номер слова чемпіона.

Код програми

program z3;
Var s,p:string;
i,max,x,y:integer;
Begin
 Readln(s);
For i:=1 to length(s) do
 If not(s[i]=' ') and not(i=length(s)) then p:=p+s[i] else
 Begin If i=length(s) then p:=p+s[i];
 If length(p)>max then
 Begin
 max:=length(p); x:=Pos(p,s);
 End;
 p:='';
 End;
Writeln(x);
Readln;
End.

3. Голосні

До голосних літер в латинському алфавіті відносяться літери A, E, I, O, U і Y. Інші літери вважаються приголосними. Напишіть програму, яка підраховує кількість голосних літер в тексті.

Вхідні дані

У вхідному файлі міститься один рядок тексту, який складається лише із заглавних латинських літер та проміжків. Довжина рядка не перевищує 100 символів.

Вихідні дані

У вихідний файл вивести одне ціле число – кількість голосних у вхідному тексті.

Код програми

program golosni;
const glas=['A','O','U','I','E','Y'];
var s:string; i,k:byte;
begin readln(s);
 k:=0; for i:=1 to length (s) do
 if s[i] in glas then k:=k+1;
writeln(k);
 readln;
end.

4. Кількість операцій

Визначити загальну кількість операцій додавання (+), віднімання (-) та множення (*) у заданому арифметичному виразі.

Вхідні дані

У єдиному рядку задано арифметичний вираз без дужок та пропусків. Кількість символів у виразі не перевищує 250.

Вихідні дані

Єдине число - кількість вказаних операцій.

Код програми

Program vpr; 
var a: string;
 n,m,k,i,s: integer;
 begin 
readln(a);
 s:=0; n:=0; m:=0; k:=0;
 for i:=1 to length(a) do
 if a[i]='+' then begin n:=n+1; end; 
 if a[i]='-' then begin m:=m+1; end; 
 if a[i]='*' then begin k:=k+1; end;
 s:=n+m+k; 
writeln(s); 
readln; 
Визначити кількість речень у заданому фрагменті тексту.

Вхідні дані

У єдиному рядку задано фрагмент тексту на англійській мові, кількість символів у якому не перевищує 250. Гарантується, що у тексті відсутні тире, дефіси, цифри і числа.

Вихідні дані

Єдине число - кількість речень у фрагменті.

Код програми

program rechennya;
 var s:string;
 i,k: byte; 
begin 
readln(s); 
k:=0; 
for i:=1 to length(s) do
 if s[i] in ['.','?','!'] 
then k:=k+1;
 writeln(k); 
readln;
Задано номер мобільного телефону. Визначити, які цифри відсутні в цьому номері.

Вхідні дані

У єдиному рядку задано номер мобільного телефону.

Вихідні дані

У першому рядку вивести кількість відсутніх у номері цифр. У другому рядку у порядку зростання вивести відсутні цифри, відокремлені пропуском.

Код програми

program nomer; 
const filter=['0'..'9']; 
var s: string; 
i,k:integer; 
 c:char;
 m: set of char; 
begin
 readln(s);
 k:=0; 
m:=filter;
 for i:=1 to length(s) do 
if (s[i] in filter ) then m:=m-[s[i]];
 for c:='0' to '9' do if c in m
 then k:=k+1; 
writeln(k); 
for c:='0' to '9' do 
if c in m then 
begin write(c,' '); 
end; 
readln; 
end.