Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 19.10.2011, 16:58   #1 (permalink)
Astal
Member
 
Регистрация: 05.11.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Процедура удаления пробелов в строке

Дана задача написать программу для простого вычисления числа. Из особенностей: "В первой строке входного файла записано арифметическое выражение в виде <число> <операция> <число> =. Операция - это один из знаков +, - или *. В начале строки, в конце строки, а также между числами и знаком операции, числом и = может быть любое число пробелов. Гарантируется, что длина строки не превышает 200 символов."
Сама программа написана, но работает только при условии отсутствия пробелов (в противном случае выходной файл остается пустым). Мне нужна помощь в написании процедуры, которая будет удалять пробелы из строки. Например чтобы входная строка " 567 " преобразывалась в строку "567". Буду благодарен за любые мысли и помощь.
Astal вне форума   Ответить с цитированием

Старый 19.10.2011, 16:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, прочтите аналогичные топики на нашем форуме

Процедура, Паскаль
Напишите функцию, преобразующую символы табуляции в последовательность из n пробелов
Ошибка в элементарной программе, поменять местами буквы в строке
Как переходить из папки в папку в командной строке?

Старый 19.10.2011, 17:07   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Как-то не вижу большой проблемы.
1. Открываем 2 файла - один исходный f1 (на чтение) другой f2 - без пробелов (на запись).
2. Считываем содержимое f1 построчно. Пусть, например, мы считали строку S.
3. Записываем посимвольно очередную строку в файл f2 по следующему алгоритму:
Код:
For i:=1 to Length(S) do
  If S[i]<>' ' then write(f2,S[i]);
writeln(f2);
И в чем загвоздка?
Vladimir_S вне форума   Ответить с цитированием
Старый 20.10.2011, 07:47   #3 (permalink)
Astal
Member
 
Регистрация: 05.11.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Загвоздка в том, что во второй файл нужно записать результат вычислений. Но за подсказку спасибо, буду копать в этом направлении.
З.Ы. А не получится ли, что символы во второй строке будут располагаться в той же позиции, что и в первой, ведь i в цикле у них будет одинаков - и не получу ли я все то же самое, что и первой? Это так, для ознакомления...
Astal вне форума   Ответить с цитированием
Старый 20.10.2011, 08:01   #4 (permalink)
Rossomaxa
Лесник
 
Аватар для Rossomaxa
 
Регистрация: 11.10.2011
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 771
По умолчанию

i сдесь используется толлько для обращения к символу в строке S. команда write последовательно пишет в файл символы строки, причем все кроме пробелов - то что вам и надо
Rossomaxa вне форума   Ответить с цитированием
Старый 20.10.2011, 08:16   #5 (permalink)
Astal
Member
 
Регистрация: 05.11.2010
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Все, проверил метод, все работает. Еще раз всем огромное спасибо.
Astal вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
удаление пробелов


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:07.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.