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

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

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

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


Пионер
**

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

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


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

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

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

Сообщение отредактировано: Akella - 9.11.2008 14:01
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.11.2008 14:15
Сообщение #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 
 К началу страницы 
+ Ответить 
Akella
сообщение 9.11.2008 14:29
Сообщение #3


Пионер
**

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

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


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

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


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

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

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


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

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


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

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


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


Пионер
**

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

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


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

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


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

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

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


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

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


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


Пионер
**

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

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


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

Сообщение отредактировано: Akella - 9.11.2008 14:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.11.2008 14:42
Сообщение #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 
 К началу страницы 
+ Ответить 
Akella
сообщение 9.11.2008 14:53
Сообщение #9


Пионер
**

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

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


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


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

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

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


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

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

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


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


Пионер
**

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

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


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


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

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

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


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

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


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


Пионер
**

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

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


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


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

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

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


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Akella
сообщение 9.11.2008 16:44
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.11.2008 16:51
Сообщение #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 
 К началу страницы 
+ Ответить 
Akella
сообщение 9.11.2008 17:13
Сообщение #17


Пионер
**

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

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


что-то у меня цикл не получается, не могли бы вы мне его написать поподробнее...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.11.2008 17:19
Сообщение #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 
 К началу страницы 
+ Ответить 
Akella
сообщение 10.11.2008 3:43
Сообщение #19


Пионер
**

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

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


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

вроде бы все должно быть окей!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 10.11.2008 4:43
Сообщение #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

 



- Текстовая версия 25.09.2024 3:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"