Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2009, 21:46   #1
JayDe
Пользователь
 
Регистрация: 23.01.2009
Сообщений: 16
По умолчанию Работа со строками. Turbo Pascal

Составить программу, которая:

• вводит три слова в разные строковые переменные;

• объединяет введенные строки с учетом разделения слов точкой с запятой и пробелом;

• определяет длину полученного предложения;

• выводит четвертый с начала и с конца символ предложения;

• удалить букву «b» в предложении.

Буду очень признателен Вам за помощь!!!
JayDe вне форума Ответить с цитированием
Старый 25.03.2009, 08:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вводит три слова в разные строковые переменные;
Например так:
Код:
s:='Я знаю три слова';
i:=1;while (i<=length(s)and(s[i]<>' ') do s1:=s1+s[i];inc(i);
while (i<=length(s)and(s[i]<>' ') do s2:=s2+s[i];inc(i);
while (i<=length(s)and(s[i]<>' ') do s3:=s3+s[i];
По остальным ждем твоих наработок
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2009, 09:01   #3
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

2
Код:
s11:='; ';
st:= s1+s11+s2+s11+s3;
3
Код:
len:=length(st);
5
Код:
for i:=1 to len do
if st[i]='b' then
begin
 delete(st,i,1);
end;
4
Код:
 writeln(st[4]);//4 сначала
writeln(st[len-4]); //4 с конца
собирайте сами в кучу!а вообще вам сюда
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 25.03.2009, 09:11   #4
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

Цитата:
Сообщение от maladoy Посмотреть сообщение
5
Код:
for i:=1 to len do
if st[i]='b' then
begin
 delete(st,i,1);
end;
не сработает, т.к. удаляя символ у тебя уменьшится длина строки и случится какой-нить AV. Лучше так:
Код:
while pos('b', st) <>0 do
  delete(st, pos('b', st), 1);
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Старый 25.03.2009, 09:22   #5
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Цитата:
не сработает, т.к. удаляя символ у тебя уменьшится длина строки и случится какой-нить AV.
а вы в этом уверены молодой человек?
все работает!!! Проверьте
Код:
program st1;
var i,len:integer;
st:string;
begin
st:='sddsgdbsdsdbsdsdsbdss';
len:=length(st);
for i:=1 to len do
if st[i]='b' then
begin
 delete(st,i,1);
end;
writeln(st);
readln;
end.
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 25.03.2009, 09:35   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
maladoy
Вот так и получаются дыры в прогах...
while надежнее, тут я с Хитрым согласен, хотя твой код не критикую.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2009, 09:40   #7
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

если топикстартеру по барабану как она будет решена через while через for мне то уж подавно! а чем надежнее то?
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 25.03.2009, 09:43   #8
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

Не могу теперь не согласиться... но всё равно зачем выполнять лишнии итерации
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Старый 25.03.2009, 09:52   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а чем надежнее то?
А тем что в While можно много условий сразу проверить а в for только одно.

While вообще лучший из циклов
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2009, 10:10   #10
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

maladoy
в твоём примере саму строку то ты порежешь, и она правильной длины будет, а вот когда ты вылазишь за ее границу ты можешь убить "чужие" данные и если там попадется "b" то ты испортишь не относящуюся к этой переменной область памяти
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача со строками (Pascal) XaMeJleoH Паскаль, Turbo Pascal, PascalABC.NET 4 15.12.2008 01:00
Help со строками Pascal ANARHIST Помощь студентам 4 03.07.2008 17:41
Turbo Pascal работа с файлами 34P434 Помощь студентам 2 24.01.2007 13:12