20.01.2017, 14:53 [+3 UTC]
в нашей команде: 1 762 чел. | участники онлайн: 12 (рекорд: 21)

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

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

Версия системы:
7.40 (02.09.2016)

Общие новости:
31.12.2016, 18:43

Форум:
18.01.2017, 11:36

Последний вопрос:
20.01.2017, 14:11

Последний ответ:
20.01.2017, 14:06

Последняя рассылка:
19.01.2017, 23:45

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

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

Наша кнопка:

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

Отзывы о нас:
28.10.2009, 07:29 »
Озерова Елена Сергеевна
Спасибо огромное, Игорь Витальевич! Код скомпилирован успешно, я очень рада!СПАСИБО! [вопрос № 173775, ответ № 255942]
27.02.2010, 22:27 »
Anjali
А вот это именно то, о чём я спрашивала! Спасибо за статью! [вопрос № 176930, ответ № 259780]

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

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

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

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

Асмик Гаряка
Статус: Советник
Рейтинг: 182
Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 105
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 95

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

Консультация онлайн # 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.13722 сек.

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