На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> помогите найте ошибку в программе
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.
Что делает этот код?

while pos(' ',s)>0 do
delete (s,pos(' ',s),1); {цикл удаляющий лишние пробелы}

Думаю, в кавычках подразумевалось два пробела.

Цикл по строке должен идти до Length, а не до плохо посчитанного count

Дальше не смотрел. Нужно пользоваться отладчиком и на простом примере следить, что все задуманные дейстаия отрабатываются правильно.
Цитата MBo @
Что делает этот код?

while pos(' ',s)>0 do
delete (s,pos(' ',s),1); {цикл удаляющий лишние пробелы}

Думаю, в кавычках подразумевалось два пробела.

Цикл по строке должен идти до Length, а не до плохо посчитанного count

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

можешь помочь исправить ибо не знаю как и что тут сделать
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


[ Script Execution time: 0,0733 ]   [ 19 queries used ]   [ Generated: 25.03.17, 23:38 GMT ]