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

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

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

 
 Ответить  Открыть новую тему 
> Вводится строка символов. Задача.
сообщение
Сообщение #1


голодный(
*

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

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


Помогите пожалуйста с задачкой
Задача
Вводится строка символов. Определить число вхождений в нее группы букв вида “abc”.
Мое решение
program PR_3_28;
uses crt;
var
k,n,m:char;
x:integer;
begin
clrscr;
Write('Введите строку символов в конце поставьте точку!');
Read(k,n,m);
While (k<>'.')and(n<>'.')and(m<>'.') do
begin
if (k='a')and(n='b')and(m='c')
then x:=x+1
else if (n='a')and(m='b')and(k='c')
then x:=x+1
else if (m='a')and(k='b')and(n='c')
then x:=x+1;
read(k,n,m);
end;
Writeln('Число групп символов abc=',x);
readkey;
end.


Вообщем программа работает не совсем правильно определяет только если (abc) попадается через 3 символа, например так (abcfgtabc), а вот такое её не под силу (adabcas)
Только начал учить паскаль. Не пинайте сильно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Я.
****

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

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


Попробуй использовать функции Pos и Copy.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


голодный(
*

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

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


да чуть не забыл, ненадо использовать тип массив
Цитата

Попробуй использовать функции Pos и Copy.

только начинаю еще) не знаю как их использовать(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Я.
****

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

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


mega_chok.gif Хм...Погугли! http://www.google.com.ua/search?hl=ru&sour...os+pas&gs_rfai=
Решение (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


голодный(
*

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

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


sheka
спасибо конечно), но нам еще не давали структурированные типы данных(массивы строки и др), я так понял что функции Pos и Copy это к ним можно применять, там нужно решить не используя это.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Sum42, посмотри, как работает следующий вариант:
  Read(k,n,m);
While (m <> '.') do
begin
if (k='a') and (n='b') and (m='c') then x:=x+1;
k := n;
n := m;
read(m);
end;

И постарайся в нем разобраться. Что непонятно - спрашивай.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


голодный(
*

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

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


volvo
спасибо большое, все работает! good.gif
Я так понял что в результате этого
   
k := n;
n := m;

и (k)и(n)присваивается значение (m)?
И дальше мы вводим уже только m?
Спасибо еще раз, мне бы самому так не додуматься...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Не совсем. Все "сдвигается на 1 символ", то, что было в N переходит в K, а то, что было в M - переходит в N. Таким образом тебе необходимо каждый раз считывать только один символ, M. И у тебя каждый раз в KNM будет тройка символов, которая как бы "сдвигается" к концу предложения. Проверяешь ее на abc и всё smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


голодный(
*

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

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


volvo
долго до меня "доходило", даже на листочке пытался записывать как это все в программе происходит(почти полчаса сидел), теперь понял, спасибо большое) good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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