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

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

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

> Хочу разобраться в символьном типе
сообщение
Сообщение #1


Новичок
*

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

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


Как использовать символьный тип для решения задач?
Например:
есть текст в котором есть хотябы 1 двоеточие(":"). Получить символы, которые располагаются между 1-ым и 2-ым
двоеточиями, если 2-го нет - то до конца текста.
И вот не могу понять, задаю символьный тип и как ему присвоить значение?

s1:array[1..N] of char, как ето использовать для определения ":" в вышенаписаной задаче?

Сообщение отредактировано: CormiX -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


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

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

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


Цитата(CormiX @ 27.12.2009 11:09) *
Как использовать символьный тип для решения задач?
Например:
есть текст в котором есть хотябы 1 двоеточие(":"). Получить символы, которые располагаются между 1-ым и 2-ым
двоеточиями, если 2-го нет - то до конца текста.
И вот не могу понять, задаю символьный тип и как ему присвоить значение?

s1:array[1..N] of char, как ето использовать для определения ":" в вышенаписаной задаче?
Вообще-то, для таких задач есть типа String, который поддерживается рядом процедур и функций. Но он, правда, имеет существенное ограничение в 255 символов..

Если хочешь работать с массивом символьного типа, то это будет примерно так:

...
var
s1:array[1..N] of char;
flag: boolean;
i: integer;
...

begin
...
flag:=false;
for i:=1 to N do begin
if s1[i]=':' then flag:=not flag else if flag then Write(s1[i])
end;
...


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Lapp @ 27.12.2009 12:02) *

...
flag:=false;
for i:=1 to N do begin
if s1[i]=':' then flag:=not flag else if flag then Write(s1[i])
end;
...

По условию количество двоеточий в тексте ничем не ограничено, а выводить нужно только фрагмент между первым и вторым.


Добавлено через 4 мин.
Цитата(CormiX @ 27.12.2009 13:46) *

Тогда использовалась бы только 1 строка правильно?

Да.
Это, естественно, относится к варианту со строками.
В варианте с массивами нужно либо писать для них собственные варианта pos и delete, либо искать индексы первого и второго (если есть) двоеточий, либо, как предлагает Lapp, отслеживать состояние. Но я бы в качестве индикатора состояния ввел не логическую, а целую переменную, т.к. количество состояний больше двух:
1. До первого двоеточия,
2. Псле первого но до второго,
3. После второго.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
CormiX   Хочу разобраться в символьном типе   27.12.2009 15:09
andriano   var c : char; begin c := ':';   27.12.2009 15:58
Lapp   Как использовать символьный тип для решения задач?…   27.12.2009 16:02
andriano   [code=pas] ... flag:=false; for i:=1 to N do…   27.12.2009 17:46
CormiX   А после begin писать: write('Flag:=',…   27.12.2009 16:12
Lapp   Так? Только есл я глупость написал то не смейтесь,…   27.12.2009 17:24
andriano   1. Ладно, Паскаль начал учить вчера, а какие языки…   27.12.2009 16:47
CormiX   Других языков к сожалению не знаю((( Алгоритм дум…   27.12.2009 16:52
andriano   Твой алгоритм, мягко говоря, недостаточно подробны…   27.12.2009 16:57
CormiX   Ага тоесть нужно выделить ети символы и копировать…   27.12.2009 17:10
Lapp   во я разобрался, правда не массивом...) Ну, разобр…   27.12.2009 17:27
andriano   во я разобрался, правда не массивом...) Ну, вообщ…   27.12.2009 17:38
CormiX   Только я там удалил ту строку, что идет перед перв…   27.12.2009 17:33
Lapp   так?) Нет. С самим выводом ничего менять не нужно.…   27.12.2009 17:37
CormiX   Тогда использовалась бы только 1 строка правильно?   27.12.2009 17:46
CormiX   Тоесть результат таков: program xxx_1; uses crt; …   27.12.2009 17:52
Lapp   Тоесть результат таков: Что это там за массив a? О…   27.12.2009 18:07
CormiX   А что не так?( ета прога почемуто не работает(((   27.12.2009 18:16
Lapp   ета прога почемуто не работает(((Ты запутался немн…   27.12.2009 19:48
CormiX   Огромное спасибо!!!   27.12.2009 19:58
andriano   n=10 s1[1]=a s1[2]=: s1[3…   27.12.2009 20:56


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

 





- Текстовая версия 10.09.2025 5:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name