Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192

Удаление символов из строки без использования стандартной функции delete

03.12.2017, 22:24. Показов 5864. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как удалить символы из строки без использования стандартной функции delete?
конкретно моя задача: Дана строка. Удалить из неё все удвоенные символы (kk jj oo и т.д). БЕЗ DELETE!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2017, 22:24
Ответы с готовыми решениями:

Текст стандартной функции delete для строки
здравсвуйте .подскажите как написать стандартную функцию delete для строки . С такими условиями процедура удаляет из строки s .символы...

Сравнение строк без использования стандартной функции strncmp
Написать программу, которая сравнивает строки не использую стандартную функцию strncmp. При чем рассматривается только kol-size_t maxlen...

Генератор случайных чисел без использования стандартной функции
Нужен код генератора случайных чисел на c++ без использования функции rand(). Помогите пожалуйста , облазил весь интернет , не смог ничего...

16
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
04.12.2017, 08:09
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function mydel(s : string; n : Byte) : string;
var i : Byte;
begin
  if n > Length(s) then Exit;
  for i := n to Length(s)-1 do
    s[i] := s[i+1];
  s[0] := chr(Length(s)-1);
end;
 
var s : String; i : byte;
begin
  ReadLn(s);
  for i := Length(s) downto 2 do
    if s[i] = s[i-1] then s := mydel(s, i);
  WriteLn(s);
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.12.2017, 08:34
В конец функции добавить
Pascal
1
 mydel:=s
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
04.12.2017, 08:39
Да. Точно!
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
04.12.2017, 19:48  [ТС]
Во первых не работает. Ошибка в этой строке, ругается на выход за границы массива в этой строке s[0] := chr(Length(s)-1);
Во вторых что это за chr? Это же тоже вроде как стандартная функция. Мне надо без них совсем!
0
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
04.12.2017, 20:22
Цитата Сообщение от Kesha777 Посмотреть сообщение
выход за границы массива в этой строке s[0]
Во-первых - это Ваша вина. Пишете в ветку Turbo Pascal, а компилируете программу в каком-то другом диалекте паскаля.

Во-вторых, chr НЕ относится к стандартным процедурам и функциям работы со строками. По какой причине его нельзя применять?

И огласите весь список процедур и функций, пожалуйста, с чем именно Вам нельзя, чтобы по 10 раз для Вас программы не писать напрасно.

Цитата Сообщение от Kesha777 Посмотреть сообщение
Мне надо без них совсем!
Вам на чистом паскале нужно? Почему не указали это в своём вопросе?
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
04.12.2017, 20:53  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Во-первых - это Ваша вина. Пишете в ветку Turbo Pascal, а компилируете программу в каком-то другом диалекте паскаля.
я пробовал в трех разных программах и нигде не работает.

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Во-вторых, chr НЕ относится к стандартным процедурам и функциям работы со строками. По какой причине его нельзя применять?
Об этом я не знал поэтому и задал вопрос.

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Вам на чистом паскале нужно? Почему не указали это в своём вопросе?
Я указал как приказали мне - не использовать стандартные функции. К сожалению я не знаю и большинства из них, ведь только учусь
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
04.12.2017, 20:59
Цитата Сообщение от Kesha777 Посмотреть сообщение
я пробовал в трех разных программах и нигде не работает.
Проверено в fpc в режиме совместимости с Турбо Паскаль. Работает.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.12.2017, 21:01
А я проверял вчера в постом АВС, тоже работает после добавления в код JuriiMW
Pascal
1
mydel:=s
0
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
04.12.2017, 21:06
Цитата Сообщение от Kesha777 Посмотреть сообщение
в трех разных программах
Да хоть в 10. В Turbo Pascal не запускали, ведь так? А программу для Вас написали именно для Turbo Pascal.

На котором диалекте паскаля Вам требуется программа?
Цитата Сообщение от Kesha777 Посмотреть сообщение
не использовать стандартные функции
Функции нельзя, а процедуры, значит, можно? Тогда почему нельзя использовать процедуру delete? Уточните. Скорее всего, запрещено использовать стандартные процедуры и функции для работы со строками, за исключением функции length. Я прав?
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
04.12.2017, 21:09  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Функции нельзя, а процедуры, значит, можно? Тогда почему нельзя использовать процедуру delete? Уточните. Скорее всего, запрещено использовать стандартные процедуры и функции для работы со строками, за исключением функции length. Я прав?
именно

Цитата Сообщение от Puporev Посмотреть сообщение
тоже работает после добавления в код JuriiMW
а куда именно это добавлять? может не туда пихнул

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
На котором диалекте паскаля Вам требуется программа?
для компилятора freepascal 2.6.0 Как бы. Но у нас диалект турбо паскаль.

Компилируется в fpc, но не выводит строку с удаленными повторками.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
04.12.2017, 21:21
Pascal
1
2
3
4
5
6
7
8
9
function mydel(s : string; n : Byte) : string;
var i : Byte;
begin
  if n > Length(s) then Exit;
  for i := n to Length(s)-1 do
    s[i] := s[i+1];
  s[0] := chr(Length(s)-1);
  mydel:=s;
end;
0
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
04.12.2017, 21:26
Цитата Сообщение от Kesha777 Посмотреть сообщение
куда именно это добавлять
После строки 7.

Можно проще. Мой вариант программы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var s, t: string;
    i: integer;
begin
  readln(s);
  t := '';
  if length(s) > 0 then t := s[1];
  for i := 2 to length(s) do if s[i] <> t[length(t)] then t := t + s[i];
  s := t;
  writeln(s);
  readln
end.
Подойдёт?
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
04.12.2017, 21:31  [ТС]
ZX Spectrum-128, Ошибка времени выполнения: Индекс находился вне границ массива.

fpc не выводит правильную строку

Добавлено через 2 минуты
Cyborg Drone, в принципе неплохо, но он из удвоенных букв одну оставляет. А если чтоб не оставлял сделать можно? но программу в таком ключе, мне нравится
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
04.12.2017, 21:32
Цитата Сообщение от Kesha777 Посмотреть сообщение
fpc не выводит правильную строку
Не знаю, никаких ошибок нет, все компилируется.
Миниатюры
Удаление символов из строки без использования стандартной функции delete  
0
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
04.12.2017, 21:52
Лучший ответ Сообщение было отмечено Kesha777 как решение

Решение

Для того, чтобы программа для TP правильно работала в FPC, добавьте перед первой строкой программы строку
Pascal
{$mode tp}
Добавлено через 19 минут
Цитата Сообщение от Kesha777 Посмотреть сообщение
из удвоенных букв одну оставляет. А если чтоб не оставлял сделать можно?
Вот ведь... Неверно понял задание. Можно, конечно. Вот так, например:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var s, t: string;
    i: integer;
begin
  readln(s);
  t := '';
  i := 1;
  while i <= length(s) do
    begin
      if (i = length(s)) or (s[i] <> s[i + 1])
        then t := t + s[i]
        else inc(i);
      inc(i)
    end;
  s := t;
  writeln(s);
  readln
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
04.12.2017, 22:23
Лучший ответ Сообщение было отмечено Cyborg Drone как решение

Решение

Вообще говоря, вместо задачи "удалить отдельные символы" куда перспективнее решать задачу "оставить символы, кроме удаляемых":
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  s: String;
  j, k, l: Byte;
begin
  ReadLn(s);
  j:=1; l:=Length(s); {k:=0;}
  while j<l do begin
    if s[j]<>s[j+1] then begin
      Inc(k); s[k]:=s[j];
    end else Inc(j);
    Inc(j);
  end;
  if j=l then begin
    Inc(k); s[k]:=s[j];
  end;
  s[0]:=Char(k);
end;
Если и Length нельзя использовать, заменить на Byte(s[0]).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2017, 22:23
Помогаю со студенческими работами здесь

Написать аналог шаблонной функции без использования стандартной (и других библиотек)
Здравствуйте! Набрел на вот такой вопрос по C++. Вот мой вариант ответа: template&lt;class Base, class Derived&gt; bool...

Извлечение подстроки из строки (без использования библиотек функции)
Извлечение подстроки из строки (без использования библиотек функций). Помогите чем кто может, заранее спасибо:)

Копирование файла с заменой без использования File.Delete()
как сделать копирование файла с заменой без использования file.delete() в С#,файл в .zip формате?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru