IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> В командной строке вводится 1 параметр:, pascal функции
snapper
сообщение 17.10.2010 21:32
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Виталий

Репутация: -  0  +


В командной строке вводится 1 параметр: из него удаляются
все символы, не являющиеся буквами. БУквы переводятся в строчные.
РЕЗультаты записываются в файл.

вот кусок проги..
program fff;
procedure removalLetter(var Row:String; Letter: Char);
var j: Byte;
begin
j:=1;
while j<=Length(row) Do
if Row[j]=letter Then Delete (Row,j,1) Else j:=j+1
end;
эта прога удаляет символы(те которые ты хочешь) из написанной фразы..
например: баран.. ты делаешь удалить все: А.. и выходит брн
но ток непашет
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 18.10.2010 4:54
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(snapper @ 17.10.2010 22:32) *
эта прога удаляет символы(те которые ты хочешь) из написанной фразы..
например: баран.. ты делаешь удалить все: А.. и выходит брн
Нет, не так. Процедура написала верно, но только она делает не совсем то, что ты написал. Она регистрозависима. То есть, если ты вторым параметром передашь "а" - то да, получишь "брн". А если "А" - то получишь "баран".

Только непонятно, зачем поставленную задачу делать именно так. Это что же, идти в цикле по всему алфавиту?.. Проще работать с множествами.

var
Letters,Upper: set of char;
...

Letters:=['A'..'Z'];
...
for i:=Length(s) downto 1 do
if s[i] in Letters then
Inc(s[i],32)
else
if not (UpCase(s[i]) in Letters) then Delete(s,i,1);

Это для английского алфавита, для русского потребуется переделка..
Если не хочется множеств, то можно заменить проверку на пару неравенств.

М
Замечания по оформлению темы:
1. программные коды просьба обрамлять тегами;
2. название темы не соответствует содержанию, просьба исправить.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 18.10.2010 9:16
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Процедура мне не нравится, она работает за O(n^2)
Тут это не важно, командная строка не может превысить некоторый предел, но вообще при обработке массивов следует использовать алгоритмы не такие дубовые


j := Low(A);
for i := Low(A) to High(A) do begin
if NotMustDel(A[i]) then begin
A[j] := A[i];
Inc(j);
end;
end;



Обработанный массив на лету составляется внутри исходного.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 1:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"