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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 02:41   #1
Сержuk
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 21
Сообщение Строки в TurboPascal 7.0

Задана строка S='Win 3.1 12345 Turbo Pascal 7.0 Delphi 2.0 3.0 4.0'
Найти порядковые номера всех цифр, встречающихся в строке и их общее количество.
Сформировать новую строку путем добавления к каждой строчной латинской букве в S
соответствующей ей заглавной буквы и удаления цифры 2. Разработать программу с выводом в выходной файл.

Главная проблема что не знаю как использовать команду удаления и добавления в строку.

Последний раз редактировалось Сержuk; 09.03.2011 в 02:51.
Сержuk вне форума Ответить с цитированием
Старый 09.03.2011, 06:06   #2
Lelya-perinya
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 12
По умолчанию

удаление
delete(str,i,n) - удаление из str n символов начиная с позиции i
добавление
вставка insert(str1,str2,i) - вставляет str2 в str1 начиная с позиции i

#:
delete(s,15,6);
после этого s: S='Win 3.1 12345 Pascal 7.0 Delphi 2.0 3.0 4.0'
insert(s,' Borland',14);
после этого s: S='Win 3.1 12345 Borland Pascal 7.0 Delphi 2.0 3.0 4.0'

Последний раз редактировалось Lelya-perinya; 09.03.2011 в 06:30.
Lelya-perinya вне форума Ответить с цитированием
Старый 09.03.2011, 08:05   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

к правильным словам Lelya-perinya добавлю.

чтобы пройтись (перебрать) все символы строки s обычно используют такой код
Код:
for i:=1 to Length(s) do 
  ... тут можно писать обращение к очередному символу строки
  if s[i] ....
для того, чтобы проверить, является ли очердной элемент строки цифрой:
Код:
if s[i] in ['0'..'9'] then ...Это Цифра в позиции i
или можно так:
Код:
if (s[i]>='0') and (s[i]<='9') then ...Это Цифра в позиции i
ну и последнее, найти определённый символ в строке можно через функцию Pos( )


и всё. этого (и плюс то, что описала Lelya-perinya ) вполне достаточно, чтобы решить Вашу задачу.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.03.2011, 11:30   #4
Сержuk
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 21
По умолчанию

А как сделать чтобы к каждой строчной латинской букве добавлялась ей соответствующая заглавная буква?

insert'ом надо пользоваться?



_____________________________
Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Правка"
и дописывайте в своё сообщение, что Вы хотели добавить!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.03.2011 в 15:02.
Сержuk вне форума Ответить с цитированием
Старый 09.03.2011, 12:04   #5
Сержuk
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 21
По умолчанию

У меня не выводит новую строку в файл.

Код:
VAR S,S1,S2:STRING; OUT:TEXT;
P1,i,X1:BYTE;
BEGIN
S:='Win 3.1 12345 Turbo Pascal 7.0 Delphi 2.0 3.0 4.0';

ASSIGN(OUT,'C:\OUTPUT.TXT');
REWRITE(OUT);
FOR i:=1 TO LENGTH(S) do
BEGIN
X1:=POS('2',S);
DELETE(S,X1,1);
IF S[i] IN ['a'..'z'] THEN
INSERT('A'..'Z',S,1)
END;
WRITE(OUT,S1);
CLOSE(OUT)
END.
Сержuk вне форума Ответить с цитированием
Старый 09.03.2011, 12:28   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
WRITE(OUT,S1);
А что такое S1? Ты же везде работаешь со строкой S. Вот ее и пиши в файл
Код:
Write(Out,S)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 09.03.2011, 12:33   #7
Сержuk
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 21
По умолчанию

все равно неработает

ошибку выдает в строке INSERT('A'..'Z',S,1)
Сержuk вне форума Ответить с цитированием
Старый 09.03.2011, 13:00   #8
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
Сообщение от Сержuk Посмотреть сообщение
все равно неработает

ошибку выдает в строке INSERT('A'..'Z',S,1)
1. вставляется строка , а не множество
2. нужно вставлять соответсвующий Заглавный символ после строчного, а не все заглавные после каждой строчной...
Код:
INSERT(chr(ord(a[i])-32,S,i)

Последний раз редактировалось Летучий_СкилетиК; 09.03.2011 в 13:07.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 09.03.2011, 13:01   #9
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Так ничего удивительного. Ты пытаешься все множество засунуть в строку. А это не возможно. Вот подправил твою работу. Разбирайся.
Код:
i:=1;
While i <= LENGTH(S) do
BEGIN
X1:=POS('2',S);
DELETE(S,X1,1);
IF S[i] IN ['a'..'z'] THEN
Begin
 Insert(UpCase(S[i]),S,i);
 Inc(i)
End;
 Inc(i)
END;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681

Последний раз редактировалось GetMax; 09.03.2011 в 13:04.
GetMax вне форума Ответить с цитированием
Старый 09.03.2011, 13:21   #10
Сержuk
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 21
По умолчанию

А почему пропускается целое слово? И почему не ко всем символам приписывается заглавная буква?

Результат такой: asScaAl 7.0 DeElpPhiI .0 3.0 4.0
А должен быть такой: WiInN 3.1 1345 TuUrRbBoO PaAsScCaAlL 7.0 DeElLpPhHiI .0 3.0 4.0

Или же я ошибаюсь?

Последний раз редактировалось Сержuk; 09.03.2011 в 13:31.
Сержuk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Програма на TurboPascal bignick Паскаль, Turbo Pascal, PascalABC.NET 5 25.09.2010 12:30
Аннаграммы (TurboPascal) beemoto Помощь студентам 9 24.12.2009 21:31
Delphi--> TurboPascal Анюта) Помощь студентам 3 17.12.2009 09:11
TurboPascal - help! Lexone Помощь студентам 5 29.03.2009 15:38