Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.116.102] |
|
Сообщ.
#1
,
|
|
|
Program LR2;
var s,s1:string; i,x,j,count,countpr,a,b,max,imax:integer; words:array[1..255]of string; schet:array[1..255]of integer; begin writeln('Введите строку'); {запрос строки задания} readln(S); {считывание и сохранение строки задания} while pos(' ',s)>0 do delete (s,pos(' ',s),1); {цикл удаляющий лишние пробелы} count:=length(s); if s[count]=' 'then Delete(s,count,1); {удаляем пробел в конце строки если он есть} if s[1]=' ' then begin Delete(s,1,1); count:=count-1; {удаляем пробел в начале строки если он есть} end; countpr:=0; for i:=1 to count do {цикл для нахождения количества слов} begin if (s[i]=' ') or (i=count)then inc(countpr); end; for i:=1 to countpr do {выделяем слова в строке в отдельный массив} begin j:=0; if count=0 then break; repeat inc(j) until s[j]=' '; words[i]:=copy(s,1,j-1); delete(s, 1, j); end; for i:=1 to countpr do {создаем массив со счетом} begin {количества букв в алфавитном порядке} for j:=1 to length(words[i]) do begin if words[i,j]<words[i,j+1] then a:=a+1 else begin if b<=a then b:=a; a:=0; end; end; schet[i]:=b; b:=0; end; max:=0; for i:=1 to countpr do {определение максимального количества} begin {упорядоченных букв в алфавитном порядке} if max<schet[i] then begin max:=schet[i]; imax:=i; end; end; for i:=1 to countpr do {вывод слов отличные от последнего слова} begin {в которых наибольшее количество букв} if max=schet[i] then {упорядоченных по алфавиту} begin if words[i]<>words[countpr] then write(words[i],' '); end; end; readln; for i:=1 to countpr do {все слова, отличные от последнего слова} if length(words[i]) mod 2=0 then {если слово четной длинны, заменить все} {строчные гласные буквы прописными} begin for j:=1 to length(words[i]) do begin if words[i,j] in ['e','y','u','i','o','a'] then words[i,j]:=UpCase(words[i,j]); end; end; for i:=1 to countpr do begin if words[i]<>words[countpr] then write (words[i],' '); end; Readln; end. |
Сообщ.
#2
,
|
|
|
Что делает этот код?
while pos(' ',s)>0 do delete (s,pos(' ',s),1); {цикл удаляющий лишние пробелы} Думаю, в кавычках подразумевалось два пробела. Цикл по строке должен идти до Length, а не до плохо посчитанного count Дальше не смотрел. Нужно пользоваться отладчиком и на простом примере следить, что все задуманные дейстаия отрабатываются правильно. |
Сообщ.
#3
,
|
|
|
Цитата MBo @ Что делает этот код? while pos(' ',s)>0 do delete (s,pos(' ',s),1); {цикл удаляющий лишние пробелы} Думаю, в кавычках подразумевалось два пробела. Цикл по строке должен идти до Length, а не до плохо посчитанного count Дальше не смотрел. Нужно пользоваться отладчиком и на простом примере следить, что все задуманные дейстаия отрабатываются правильно. можешь помочь исправить ибо не знаю как и что тут сделать |
Сообщ.
#4
,
|
|
|