На главную
ПРАВИЛА 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,0767 ]   [ 14 queries used ]   [ Generated: 26.04.17, 11:51 GMT ]