Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/32: Рейтинг темы: голосов - 32, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 4

Тело процедуры DELETE в PASCAL

07.02.2013, 22:41. Показов 6770. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
народ, помогите пожалуйста, есть процедура DELETE, встроееная программистами в Pascal, но раз это процедура, какое у нее тело? Что за код в процедуре DELETE?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2013, 22:41
Ответы с готовыми решениями:

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

Процедуры и функции в pascal
Задачка №1:.Даны 3 угла треугольника.Определить длины его сторон.В подпрограмме реализовывается алгоритм нахождения одной стороны...

Pascal, массивы и процедуры
Помогите решить 2 задачи на паскале, очень для зачёта надо! 1) В матрице целых чисел необходимо для каждого значения выполнить подсчёт...

6
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.02.2013, 23:47
Эта процедура написана на ассемблере. Например, в Delphi её код выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
procedure       _Delete{ var s : openstring; index, count : Integer };
asm
{     ->EAX     Pointer to s    }
{       EDX     index           }
{       ECX     count           }
 
        PUSH    ESI
        PUSH    EDI
 
        MOV     EDI,EAX
 
        XOR     EAX,EAX
        MOV     AL,[EDI]
 
{       if index not in [1 .. Length(s)] do nothing     }
 
        TEST    EDX,EDX
        JLE     @@exit
        CMP     EDX,EAX
        JG      @@exit
 
{       limit count to [0 .. Length(s) - index + 1]     }
 
        TEST    ECX,ECX
        JLE     @@exit
        SUB     EAX,EDX         { calculate Length(s) - index + 1       }
        INC     EAX
        CMP     ECX,EAX
        JLE     @@1
        MOV     ECX,EAX
@@1:
        SUB     [EDI],CL        { reduce Length(s) by count                     }
        ADD     EDI,EDX         { point EDI to first char to be deleted }
        LEA     ESI,[EDI+ECX]   { point ESI to first char to be preserved       }
        SUB     EAX,ECX         { #chars = Length(s) - index + 1 - count        }
        MOV     ECX,EAX
 
        REP     MOVSB
 
@@exit:
        POP     EDI
        POP     ESI
end;
2
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 4
08.02.2013, 00:08  [ТС]
спасибо, то что нужно. Классно что так быстро ответили. И еще один вопрос: можно ли в программе на pascal'e удалить какие либо символы из строки(string) не использую процедуру delete? напрмер у меня в задаче убираь маленькие латинские буквы.
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
08.02.2013, 00:27
Цитата Сообщение от MAESTRO_GREEN Посмотреть сообщение
можно ли в программе на pascal'e удалить какие либо символы из строки(string) не использую процедуру delete? напрмер у меня в задаче убираь маленькие латинские буквы.
Можно, конечно. Действовать можно по-разному. Например, таким способом:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
program Project1;
 
const
  D = ['a'..'z']; {Множество строчных латинских букв.}
var
  S : String;
  i, j : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    {Решение.}
    j := 0;
    for i := 1 to Length(S) do
      if not (S[i] in D) then begin
        Inc(j); {Это тоже самое, что и: j := j + 1}
        S[j] := S[i];
      end;
    SetLength(S, j);
 
    {Ответ.}
    Writeln('Строка после обработки:');
    Writeln(S);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 4
08.02.2013, 00:32  [ТС]
о спасибо большое, но я пол огике не знаю операцию или что это SetLength похоже что установить длину так что в конце использовал так:
Pascal
1
2
3
A:=X-K;
   for I:=1 to A do
      write(S[I]);
где X-length(S); а K-вроде бы количество мелких латинских букв что я "удалил"
и вроде норм все. Спасибо еще раз!
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
08.02.2013, 00:39
Цитата Сообщение от MAESTRO_GREEN Посмотреть сообщение
SetLength похоже что установить длину
Да - процедура SetLength() задаёт длину строки. У нас после завершения цикла в переменной j записано количество символов, которые мы не стали удалять. Поэтому длина полученной строки должна быть равна j. Если не использовать SetLength(), тогда код вывода полученной строки будет таким:
Pascal
1
for i := 1 to j do Write(S[i]);
Т. е., полностью будет так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
program Project1;
 
const
  D = ['a'..'z']; {Множество строчных латинских букв.}
var
  S : String;
  i, j : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    {Решение.}
    j := 0;
    for i := 1 to Length(S) do
      if not (S[i] in D) then begin
        Inc(j); {Это тоже самое, что и: j := j + 1}
        S[j] := S[i];
      end;
 
    {Ответ.}
    Writeln('Строка после обработки:');
    for i := 1 to j do Write(S[i]);
    Writeln;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 4
08.02.2013, 00:41  [ТС]
СПАСИБО!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2013, 00:41
Помогаю со студенческими работами здесь

Процедуры и функции в pascal
1 задача). Найти минимальное из пяти чисел. В подпрограмме реализовать минимальное из двух чисел. 2задача). Составить программу подсчета...

Процедуры и Функции на языке Pascal
Есть 2 программы, помогите переделать под (Процедуры и Функции) 1. var w,i,n,m,res:integer; begin writeln('n должно быть больше m...

Pascal. Процедуры и функции. Повторяющиеся члены
Даны целые числа a1...an (в этой последовательности могут быть повторяющиеся члены). Выяснить, сколько чисел входит в последовательность...

Процедуры. Робот Pascal ABC.NET
Помогите решить задачу Task ('p1') Закрасить, помеченные клетки, используя процедуру Cross Uses Robot; begin Task('p1'); ...

Процедуры с параметром. Робот Pascal ABC.NET
Task ('pp1') Закрасить помеченные клетки, составив процедуры с параметром RightN(n) и LeftN(n) Мой код работает. Возможно ли...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru