20.08.2017, 18:40 [+3 UTC]
в нашей команде: 2 094 чел. | участники онлайн: 4 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
20.08.2017, 16:51

Последний вопрос:
18.08.2017, 23:30

Последний ответ:
17.08.2017, 18:54

Последняя рассылка:
20.08.2017, 17:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
09.02.2011, 11:11 »
Lion
Спасибо! Ответ очень понятный, и содержит дельный совет. [вопрос № 182144, ответ № 265783]
20.10.2009, 20:21 »
Lion
К сожалению я не сразу понял Ваш ответ. Но всё так и получилось. Скачал - распаковал. Спасибо. [вопрос № 173438, ответ № 255634]
26.03.2012, 19:48 »
Stanislav Bolshakov
Спасибо Вам за объяснение smile [вопрос № 185680, ответ № 270326]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 313
mklokov
Статус: 6-й класс
Рейтинг: 87
Вадим Исаев ака sir Henry
Статус: Старший модератор
Рейтинг: 44

Перейти к консультации №:
 

Консультация онлайн # 190208
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: roma5310 (Посетитель)
Отправлена: 03.12.2016, 17:54
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
помогите пожалуйсто в паскаль абс: Имеется строка, содержащая слова из букв и цифр. Слово – последовательность символов между пробелами, не содержащая пробелы внутри себя. Преобразуйте эту строку так, чтобы сначала в каждом слове шли все буквы, встречающиеся в нем, а потом все цифры слова в прямом порядке.

Состояние: Консультация закрыта

Здравствуйте, roma5310!

В приложении, код, который буквы распологает в начале строки, цифры в конце строки, отсортированные по возрастанию.
Я так понял условие:

© Цитата:
а потом все цифры слова в прямом порядке.

Код (Pascal) :: выделить код
var
  a:string;
  i:integer;
{
обрабатываем слово: буквы в начало, цифры в конец строки отсортированные по возрастанию
}
function z(b:string):string;
  var
    c:char;
    i:integer;
  begin
    i:=0;
    repeat
      inc(i);
      while(b[i]in['0'..'9'])and((b[i+1]in ['A'..'Z','a'..'z'])or{сортировка буквы цифры}
           ((b[i+1]in['0'..'9']))and(b[i]>b[i+1]))do{сортировка по возрастанию цифр}
        begin
          c:=b[i];
          b[i]:=b[i+1];
          b[i+1]:=c;
          i:=0;
        end;
    until i>length(b);
    z:=b;
  end;
{
выделяем слово рекурсивно и обрабатываем, пока длина строки не равна нулю
}
function y(b:string):string;
  begin
    if pos(' ',b)>0 then y:=z(copy(b,1,pos(' ',b)))+y(copy(b,pos(' ',b)+1,length(b)))
      else y:=z(copy(b,1,length(b)));
  end;
begin
  {
вводим строку
  }
  repeat
    write('Enter string:');
    readln(a);
  until length(a)>0;
  {
заменяем знаки препинания на пробелы
  }
  i:=1;
  while(pos(a[i],'.,;:^&')>0)do
    begin
      if pos(a[i],'.,;:^&')>0 then a[i]:=' ';
      inc(i);
    end;
  {
удаляем начальные пробелы
  }
  while a[1]=' ' do delete(a,1,1);
  {
удаляем двойные пробелы
  }
  while pos('  ',a)>0 do delete(a,pos('  ',a),1);
  {
выводим результат
  }
  write('result:',y(a));
end.

Удачи!


Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 10.12.2016, 02:43

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 190208
roma5310
Посетитель

ID: 400749

# 1

= общий = | 29.12.2016, 20:41 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

программа выдает ошибку времени выполнения индекс выходит за границы массива
и вот эту строчку выделяет
while(b[i]in['0'..'9'])and((b[i+1]in ['A'..'Z','a'..'z'])or{сортировка буквы цифры}

Зенченко Константин Николаевич
Модератор

ID: 31795

# 2

= общий = | 29.12.2016, 22:14 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
roma5310:


не знаю на каких данных Вы это проверяли?

Как рецепт: в условие можно добавить i<length(b)-1

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13767 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн