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

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

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

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Задача на строки!, Помогите написать!
сообщение
Сообщение #1


Пионер
**

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

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


Условие: Дана непустая последовательность слов из строчных латинских букв; слова разделяются запятыми или пробелами (без разницы). Среди всех пар Ai, Bi, где Ai - первая, Bi - последняя буква i-го слова пос-ти, определить наиболее часто встречающуюся пару!

Пример: abcd abd adc bcd Чаще всего встречается пара a и d!

Заранее ОГРОМНОЕ спасибо! А то я в строках не очень разбираюсь!

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


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

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

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


Цитата(Akella @ 9.11.2008 14:00) *
А то я в строках не очень разбираюсь!

А чего в них разбираться?
Чтобы слова выделить, вот тут почитай: Разбиение на слова. Все способы.
А потом сделай двумерный массив целых:
n: array['a'..'z','a'..'z']of integer;
Заполни его нулями. А потом пройдись по всем словам (допустим, s[i]) и делай вот такую операцию:
Inc(n[s[i][1],s[i][Length(s[i])]]);

В результате в массиве n будут лежать количества всех пар. Найди в нем максимум, его координаты и будут нужной парой.


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


Пионер
**

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

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


эээээ.....не очень понятно... wacko.gif и какие-то длинные способы разбивки на слова...

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


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

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

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


Цитата(Akella @ 9.11.2008 14:29) *
эээээ.....не очень понятно...

ыыыыы... совсем непонятно, что именно тебе не очень понятно..


Добавлено через 1 мин.
Цитата(Akella @ 9.11.2008 14:29) *
какие-то длинные способы разбивки на слова...

Ага - уже лучше! smile.gif
ну, вот этот не очень длинный: Разбиение на слова. Все способы.


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


Пионер
**

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

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


можно сказать что все...

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


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

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

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


Цитата(Akella @ 9.11.2008 14:33) *
можно сказать что все...

И тем не менее, давай конкретные вопросы. В способе klem4 разбивки на слова что неясно?


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


Пионер
**

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

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


так что такое inc ?? мы этого не проходили вроде... что он делает? и что такое copy?

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


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

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

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


Цитата(Akella @ 9.11.2008 14:40) *
что такое inc ??

В данном случае - прибавляет единицу к аргументу. От английского increase, увеличивать.


Добавлено через 1 мин.
Цитата(Akella @ 9.11.2008 14:40) *
что такое copy?

Цитата
Function Copy(S: String; Index, Count: Integer): String
Возвращает подстроку из строки S, начиная с позиции Index и длиной Count символов.


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


Пионер
**

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

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


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


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

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

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


Цитата(Akella @ 9.11.2008 14:53) *
теперь собственно сама прога....

Если ты разобрался с функцией, "собственно сама прога" будет состоять из:
а. описания массива n;
б. заполнения его нулями;
с. разбиения на слова;
д. цикла по всем словам с упомянутым мной оператором в теле;
е. поиска макимума по массиву n.

Собственно, все то, что я уже сказал выше..


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


Пионер
**

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

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


как перевести из string в char из строковой переменной в символьную т.е ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


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

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

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


Цитата(Akella @ 9.11.2008 16:13) *
как перевести из string в char из строковой переменной в символьную т.е ?

Что значит перевести? Как ты собираешься засунуть строку в один символ?? blink.gif
С другой стороны, i-й символ строки s - это символьная переменная, s[i]
Я использовал это в своем первом сообщении. Разбери его внимательно. По косточкам smile.gif


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


Пионер
**

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

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


у меня тут несростаются типы и переменные - ошибки.... например когда я массив n заполняю нулями...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


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

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

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


покажи, как ты это делаешь. Желательно, со всеми объявлениями переменных. Короче, покажи всю прогу.


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


Пионер
**

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

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


в принципе я еще мало сделал, потому, что мне тут объясняли что к чему.... так что воть

program lab_3_16;

const

limits = [#0..#32,'.',',',':',';','!','?','"'];
type

TWords = array[1..40] of string;

var
text : string;
words : TWords;
n:array['a'..'z','a'..'z'] of integer;
i,j : integer;


function GetWords(s : string; var w : TWords) : byte;
var
i,back,n : byte;
begin
i := 1;
n := 0;
while(i<=length(s)) do begin
while(i<=length(s)) and (s[i] in limits) do
inc(i);
if i<=length(s) then begin
back := i;
while(i<=length(s)) and not(s[i] in limits) do
inc(i);
inc(n);
w[n] := copy(s, back, i-back);
end;
end;

GetWords := n;
end;
begin
for i:=1 to 60 do
for j:=1 to 60 do
n[i,j]=0;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


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

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

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


не так:
  for i:=1 to 60 do
for j:=1 to 60 do
n[i,j]=0;

а вот так:
  for c:='a' to 'z' do
for d:='a' to 'z' do
n[c,d]:=0;

- где c и d - переменные типа char


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


Пионер
**

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

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


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


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

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

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


Цитата(Akella @ 9.11.2008 17:13) *
что-то у меня цикл не получается, не могли бы вы мне его написать поподробнее...


Вот так:
  m:=GetWords(text,Words);
for i:=1 to m do Inc(n[Words[i][1],Words[i][Length(Words[i])]]);

Только я оччень не советую называть переменную text, так как text - это зарезервированное слово Паскаля.

Все, я пошел спать, скоро не жди. Сам думай. Все сказано уже.
smile.gif


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


Пионер
**

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

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


я не понимаю почему кампилтору не нравится тип переменной text вот тут wacko.gif
m:=GetWords(text,Words);

вроде бы все должно быть окей!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


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

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

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


Цитата(Akella @ 10.11.2008 3:43) *
кампилтору не нравится тип переменной text вот тут wacko.gif
m:=GetWords(text,Words);

вроде бы все должно быть окей!

Я не знаю, что не нравится твоему "кампилтору", моему компилятору все нравится.
Приводи полную и точную информацию об ошибке, а не свою интерпретацию.


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

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

 





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