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

Дана строка. Удалить все пробелы, подсчитать кол-во удалений

21.02.2013, 16:47. Показов 4797. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте)
Помогите,пожалуйста с решением задачи:
Дана строка.Удалить все пробелы, подсчитать кол-во удалений.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2013, 16:47
Ответы с готовыми решениями:

Удалить из строки все цифры. Подсчитать количество произведенных удалений.
Удалить из строки все цифры. Подсчитать количество произведенных удалений.

Дана строка символов удалить из строки все звездочки
Дана строка символов удалить из строки все звездочки

Удалить из заданной строки все знаки препинания
uses crt; var s:string; i:integer; const z:string='.,;:!?()'; begin clrscr; writeln('введите строку'); readln(s); for ...

12
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
21.02.2013, 16:54
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Var
  s: String;
  i,k: Byte;
BEGIN
Writeln('Введите строку: ');
Readln(s);
For i:=Length(s) downto 1 do
If s[i]=' ' Then
begin
  Delete(s,i,1);
  Inc(k);
end;
Writeln('Измененная строка:');
Writeln(s);
Writeln('Кол-во удалений: ',k);
END.
2
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.02.2013, 16:58
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program dv;
uses Crt;
var s:string;
lpos,k:Integer;
begin
ClrScr;
Writeln('Введите строку символов:');
Readln(s);
while pos(' ',s)<>0 do
begin
lpos:=pos(' ',s);
Delete(s,lpos,1);
inc(k);
end;
Writeln('Преобразованная строка:');
Writeln(s);
Writeln('Количество удалений:',lpos);
Readln;
end.
2
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.02.2013, 17:24
И ещё способ. Для коллекции.
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
program Project1;
 
var
  S : String;
  i, j, Len : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    j := 0;
    for i := 1 to Len do
      if S[i] <> ' ' then begin
        Inc(j);
        S[j] := S[i];
      end;
    SetLength(S, j);
 
    Writeln('Количество удалённых пробелов: ', Len - j);
    Writeln('Строка после обработки:');
    Writeln(S);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
2
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.02.2013, 17:31
Mawrat,интересный нетрадиционный способ,я уж сначала не понял алгоритм,но потом дошло.Спасибо за этот способ.

Добавлено через 2 минуты
Mawrat,единственный вопрос а в Pascal разве есть SetLength?
1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.02.2013, 17:43
Цитата Сообщение от Андрей_Новичок Посмотреть сообщение
Mawrat,единственный вопрос а в Pascal разве есть SetLength?
Да - есть.
1
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.02.2013, 17:47
Цитата Сообщение от Mawrat Посмотреть сообщение
Да - есть.
Не знал,думал только в Delphi.
1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.02.2013, 17:49
Андрей_Новичок, я не прав - сейчас проверил - в стандартном Borland/Turbo Pascal нет SetLength(), оказывается... Тогда придётся так сделать:
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
program Project1;
 
var
  S : String;
  i, j, Len : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    j := 0;
    for i := 1 to Len do
      if S[i] <> ' ' then begin
        Inc(j);
        S[j] := S[i];
      end;
    {SetLength(S, j);}
    S[0] := Char(j); {Для Borland/Turbo Pascal.}
 
    Writeln('Количество удалённых пробелов: ', Len - j);
    Writeln('Строка после обработки:');
    Writeln(S);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Добавлено через 2 минуты
Андрей_Новичок, спасибо за наводку.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.02.2013, 17:52
Mawrat,я вот и подумал что кажись только в Delphi ну и может PascalABC.NET,но в обычном Паскале нет.
1
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.02.2013, 17:53
Цитата Сообщение от Андрей_Новичок Посмотреть сообщение
Mawrat,я вот и подумал что кажись только в Delphi ну и может PascalABC.NET,но в обычном Паскале нет.
Да, выходит так.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.02.2013, 17:57
Цитата Сообщение от Mawrat Посмотреть сообщение
Pascal
1
S[0] := Char(j);
А вы не могли бы объяснить,для чего эта строка?
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.02.2013, 18:59
В Borland/Turbo Pascal строка устроена таким образом - это одномерный массив символов:
Pascal
1
String = array[0..255] of Char;
в котором самый первый элемент (его индекс = 0) содержит сведения о длине строки. Именно по этому символы в строке индексируются с [1], а не с нуля [0]. Таким образом, устанавливая значение элемента строки с индексом [0], происходит задание длины строки. Здесь под длиной строки подразумевается количество значащих символов. Т. е., например, если строка задана таким образом:
Pascal
1
2
3
4
var
  S : String;
begin
  S := '11112222';
и задать длину так:
Pascal
1
S[0] := Char(4);
То в памяти строка S всё равно будет занимать 256 байт. Но в ней будет только 4 значащих символа: '1111'.

Добавлено через 47 минут
Ещё для пояснения. Строку можно смоделировать через символьный массив:
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
program Project1;
 
var
  {Символьный массив, совпадающий по своему устройству со строкой типа String.}
  Arr : array[0..255] of Char;
  {Указатель на строку.}
  PStr : ^String;
  i : Integer;
begin
  {В указатель на строку записываем адрес символьного массива.}
  PStr := Addr(Arr);
  {Теперь с помощью указателя PStr можно работать с символьным массивом
  точно также, как с обыкновенной строкой типа String.}
  PStr^ := '1234' + '5678';
  Writeln('Строка:');
  Writeln('Длина строки: ', Length(PStr^));
  Writeln('Значимая часть: ', PStr^);
  Writeln('Массив:');
  Writeln('Элемент Arr[0] = ', Byte(Arr[0]));
  Write('Значимая часть: ');
  for i := 1 to Byte(Arr[0]) do Write(Arr[i]);
  Writeln;
  Readln;
end.
1
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
21.02.2013, 19:04
Mawrat,спасибо,вообщем устанавливаем длину строки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2013, 19:04
Помогаю со студенческими работами здесь

Дана строка символов, удалить из неё все знаки препинания
uses crt; var s:string; i:integer; const z:string='.,;:!?()'; begin clrscr; writeln('введите строку'); readln(s); for ...

Дана строка символов разделенных пробелом. Удалить все символы стоящие на четных местах
Дана строка символов разделенных пробелом.удалить все символы стоящие на четных местах Помогите пожалуйста решить задачу в паскале!!! ...

Во введенном тексте удалить все пробелы, если пробелы присутствуют
Создать программу, которая спрашивает имя пользователя и здоровается с ним. Затем, предлагается ввести тест - во введенном тексте удалить...

Дана строка. Удалить все символы «а». Использовать рекурсивную процедуру
Дана строка. Удалить все символы «а». Использовать рекурсивную процедуру.

Дана строка S. Удалить из строки все пробелы , заменив их на '**' .
Дана строка S. Удалить из строки все пробелы , заменив их на '**' .


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru