Принятые в программе ДОПОЛНИТЕЛЬНЫЕ К УСЛОВИЮ ЗАДАНИЯ соглашения: 1. Разделителями между словами считаются любые символы, включенные к константу delim 2. Все символы, не входящие в delim, образуют алфавит (т.е. "буквы"), из которого может быть составлено каждое слово 3. Количество разделителей, окружающих каждое слово, ограничено только здравым смыслом. Все разделители будут переданы в строку результата без изменения. 4. Если слово содержит только один символ, оно не изменяется, несмотря на то, что единица - нечетное число. В противном случае такое слово было бы исключено. К тому же, слово длиной в один символ не имеет "средней буквы"
CONST delim = " .,;:!?-" DIM s AS STRING, s1 AS STRING, word AS STRING, wd AS STRING DIM i AS INTEGER, n AS INTEGER, k AS INTEGER INPUT "Введите строку: ", s 'Обеспечить наличие пробела за последним словом IF INSTR(delim, RIGHT$(s, 1)) = 0 THEN s = s + " " 'Начальные присваивания n = LEN(s): s1 = "": i = 1 DO WHILE i <= n 'Просматриваем входную строку символ за символом 'Ищем первый непробельный символ wd = "" 'qq DO WHILE (INSTR(delim, MID$(s, i, 1)) <> 0) AND (i <= n) wd = wd + MID$(s, i, 1) i = i + 1 LOOP 'Выделяем очередное слово, за которым следует пробельный символ word = "" DO WHILE (INSTR(delim, MID$(s, i, 1)) = 0) AND (i <= n) word = word + MID$(s, i, 1) i = i + 1 LOOP 'Найдено ли слово? k = LEN(word) IF k > 0 THEN 'Если слово найдено '--- вырезается средний символ при нечетной длине --- IF (k > 1) AND (k MOD 2 <> 0) THEN k = (k - 1) \ 2 word = LEFT$(word, k) + RIGHT$(word, k) END IF ' 'Добавляем найденное слово через wd к выходной строке s1 = s1 + wd + word END IF LOOP PRINT "Результат: " + s1 END
Примеры работы программы: 1. Обычный текст: слова через один пробел Введите строку: А роза упала на лапу Азора Результат: А роза упла на лапу Азра 2. Использовано больше одного пробела и разделители : и ! Введите строку: Пример №2: Ура! Мы ломим: гнутся шведы! Результат: Пример №2: Уа! Мы лоим: гнутся швды! 3. Использовано несколько непробельных разделителей подряд Введите строку: Пример --№3--: Какое небо голубое!... Результат: Пример --№3--: Каое небо голбое!...
Var a,b,c,d,i,f,g,h,n:integer; begin writeln('введите число'); readln(a); g:=0; c:=0; d:=0; i:=0; f:=0; writeln('введите число для сравнения'); readln(h); for b:=a downto 1 do begin if a mod b = 0 then writeln('его делитель ==>',b); if a mod b = 0 then c:=b+c; if a mod b = 0 then if b mod 2 = 0 then d:=d+b; if a mod b = 0 then if b mod 2 <> 0 then i:=i+1; if a mod b = 0 then f:=f+1; if a mod b = 0 then if b mod 2 = 0 then g:=g+1;i f a mod b = 0 then if b>h then n:=n+1; end; writeln('сумма его делителей ==>',c); writeln('сумма его чётных делителей ==>',d); writeln('количество нечётных делителей ==>',i); writeln('количество чётных делителей ==>',g); writeln('количество делителей ==>',f); writeln('количество делителей больших b ==>',n); end.
1. Разделителями между словами считаются любые символы, включенные к константу delim
2. Все символы, не входящие в delim, образуют алфавит (т.е. "буквы"), из которого может быть составлено каждое слово
3. Количество разделителей, окружающих каждое слово, ограничено только здравым смыслом. Все разделители будут переданы в строку результата без изменения.
4. Если слово содержит только один символ, оно не изменяется, несмотря на то, что единица - нечетное число. В противном случае такое слово было бы исключено. К тому же, слово длиной в один символ не имеет "средней буквы"
CONST delim = " .,;:!?-"
DIM s AS STRING, s1 AS STRING, word AS STRING, wd AS STRING
DIM i AS INTEGER, n AS INTEGER, k AS INTEGER
INPUT "Введите строку: ", s
'Обеспечить наличие пробела за последним словом
IF INSTR(delim, RIGHT$(s, 1)) = 0 THEN s = s + " "
'Начальные присваивания
n = LEN(s): s1 = "": i = 1
DO WHILE i <= n 'Просматриваем входную строку символ за символом
'Ищем первый непробельный символ
wd = "" 'qq
DO WHILE (INSTR(delim, MID$(s, i, 1)) <> 0) AND (i <= n)
wd = wd + MID$(s, i, 1)
i = i + 1
LOOP
'Выделяем очередное слово, за которым следует пробельный символ
word = ""
DO WHILE (INSTR(delim, MID$(s, i, 1)) = 0) AND (i <= n)
word = word + MID$(s, i, 1)
i = i + 1
LOOP
'Найдено ли слово?
k = LEN(word)
IF k > 0 THEN 'Если слово найдено
'--- вырезается средний символ при нечетной длине ---
IF (k > 1) AND (k MOD 2 <> 0) THEN
k = (k - 1) \ 2
word = LEFT$(word, k) + RIGHT$(word, k)
END IF
'
'Добавляем найденное слово через wd к выходной строке
s1 = s1 + wd + word
END IF
LOOP
PRINT "Результат: " + s1
END
Примеры работы программы:
1. Обычный текст: слова через один пробел
Введите строку: А роза упала на лапу Азора
Результат: А роза упла на лапу Азра
2. Использовано больше одного пробела и разделители : и !
Введите строку: Пример №2: Ура! Мы ломим: гнутся шведы!
Результат: Пример №2: Уа! Мы лоим: гнутся швды!
3. Использовано несколько непробельных разделителей подряд
Введите строку: Пример --№3--: Какое небо голубое!...
Результат: Пример --№3--: Каое небо голбое!...
begin
writeln('введите число');
readln(a);
g:=0;
c:=0;
d:=0;
i:=0;
f:=0;
writeln('введите число для сравнения');
readln(h);
for b:=a downto 1 do begin
if a mod b = 0 then writeln('его делитель ==>',b);
if a mod b = 0 then c:=b+c;
if a mod b = 0 then if b mod 2 = 0 then d:=d+b;
if a mod b = 0 then if b mod 2 <> 0 then i:=i+1;
if a mod b = 0 then f:=f+1;
if a mod b = 0 then if b mod 2 = 0 then g:=g+1;i
f a mod b = 0 then if b>h then n:=n+1;
end;
writeln('сумма его делителей ==>',c);
writeln('сумма его чётных делителей ==>',d);
writeln('количество нечётных делителей ==>',i);
writeln('количество чётных делителей ==>',g);
writeln('количество делителей ==>',f);
writeln('количество делителей больших b ==>',n);
end.