Дана последовательность, содержащая от 2 до 30 слов, в каждом из от 1 до 8 символов строчных латинских букв между соседними словами-не менее одного
10-11 класс
|
пробела, за последним словом-точка. Составить программу на языке Паскаль
1) Все слова, которые встречаются в последовательность по одному разу
var
ast:array[1..30] of string;
procedure GetWord(s: string; var ib: integer; var pWord: string; var l: integer);
// Возвращает слово pWord, которое является подстрокой s
// Разделителем слов являются один и более пробелов.
// ib при вызове процедуры указывает на позицию в строке s,
// начиная с которой ведется поиск слова.
// При выходе из процедуры ib - позиция начала найденного слова,
// l- длина найденного слова, l=0 если слово не найдено.
var
i, n: integer;
w: string;
begin
n := Length(s);
l := 0;
w := '';
if ib >= n then begin
ib := n;
pWord := ''
end
else begin
i := ib;
while (s[i] = ' ') and (i < n) do i := i + 1;
ib := i;
w := '';
while (s[i] <> ' ') and (i < n) do
begin
w := w + s[i];
i := i + 1
end;
if i < n then begin
l := i - ib;
pWord := w
end
else begin
l := i - ib + 1;
pWord := w + s[n]
end;
if pWord[l]='.' then pWord:=Copy(pWord,1,l-1)
end
end;
procedure SortWords(n:integer);
// Сортировка первых n элементов массива ast
var
i,j:integer;
s:string;
begin
for i:=1 to n-1 do
begin
if ast[i]>ast[i+1] then
begin
s:=ast[i]; ast[i]:=ast[i+1]; ast[i+1]:=s;
j:=i;
while j>1 do
if ast[j]<ast[j-1] then
begin
s:=ast[j]; ast[j]:=ast[j-1]; ast[j-1]:=s;
j:=j-1
end
else j:=0
end
end
end;
var
s,st:string;
p,n,i,len:integer;
Flag:Boolean;
begin
st:=' aquila non captat muscas ';
st:=st+'dolus an virtus quis in hoste requirat ';
st:=st+'de mortuis aut bene aut nihil ';
st:=st+'esse oportet ut vivas non vivere ut edas.';
p:=1; i:=1; len:=1; n:=0;
while len>0 do
begin
GetWord(st,p,ast[i],len);
if len>0 then begin
p:=p+len;
n:=n+1;
i:=i+1
end
end;
for i:=1 to n do write(ast[i],' ');
SortWords(n);
writeln;
writeln;
s:=ast[1];
Flag:=True;
for i:=2 to n do
if ast[i]<>s then
begin
If Flag then write(s,' ')
else Flag:=True;
s:=ast[i];
end
else Flag:=False;
if Flag then write(ast[n],' ');
writeln
end.
Тестовое решение:
aquila non captat muscas dolus an virtus quis in hoste requirat de mortuis aut bene aut nihil esse oportet ut vivas non vivere ut edas
an aquila bene captat de dolus edas esse hoste in mortuis muscas nihil oportet quis requirat virtus vivas vivere
Другие вопросы из категории
помочь другу купить компьютеру. В магазине ему написали вот такой список:
Материнская плата GIGABYTE
GA-Z77-DS3H LGA 1155, ATX, Ret
Читайте также
ПРИПИШИТЕ ДВЕ ЦИФРЫ МЕСЯЦА(НАПРИМЕР,ДЛЯ ДАТЫ 02.03.93 ИСКОМОЕ ЧИСЛО 203)ЕСЛИ ДЕНЬ В ДАТЕ РОЖДЕНИЯ-ЧИСЛО ОТ 10 ДО 31,ТО К ДВУМ ЦИФРАМ ИЗ ОБОЗНАЧЕНИЯ ДНЯ ПРИПИШИТЕ ВТОРУЮ ЦИФРУ ИЗ ОБОЗНАЧЕНИЯ МЕСЯЦА(НАПРИМЕР,ДЛЯ ДАТЫ 23.11.93 ИСКОМОЕ ЧИСЛО 231) мОЯ ДАТА РОЖДЕНИЯ 30.05.95
настоящий момент в совет входит N чесовек, из них К родителей. Определите, сколько родителей нужно дополнительно ввести в совет, чтобы их число стало составлять не менее трети от числа членов совета.
Программа получает на вход два целых числа N и К (N>0, 0<=K<=N), записанные в отдельных строках, - текущее число члено совета и числао родителей в совете.
Программа должна вывести единственное число - минимальное число родителей, которое необходимо ввести в совет.
языков программирования алгоритм,позволяющий найти среднее арифметическое нечетных трехзначных чисел,записанных в этом массиве.если ни одного такого числа нет,нужно вывести сообщение об этом.
2)дан целочисленный массив из 30 элементов.элементы массива могут принимать целые значения от 0 до 100.опишите на русском языке или на одном из языков программирования алгоритм,позволяющий найти и вывести произведение элементов массива,которые имеют четное значение и не оканчиваются на 0.
31, мм - целое число из диапазона от 1 до 12, а гг - целое число из диапазона от 1 до 2020 (если какая-то часть формата нарушена, то данная подстрока в качестве даты не рассматривается.) Заменить каждую дату сообщения на дату следующего дня. Написать программу на Паскале. Сроооооооооооооочнооо. Пооожалуйста.....
двузначных элементов массива, которые не оканчиваются на 3. №2. Дан массив из 100 элементов. Каждый элемент может принимать целочисленные значения от 1 до 500. Напишите программу, которая позволит найти и вывести минимальное значение среди элементов массива, которые делят максимальное значение элементов массива без остатка.