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

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

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

 
 Ответить  Открыть новую тему 
> Определить слова первого предложения, которые встречаются во втором, Нужна Ваша помощь
сообщение
Сообщение #1





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

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


Даны два предложения. Определить слова первого предложения, которые встречаются во втором, причем неважно, на каком регистре набраны эти слова (т.е. одинаковыми считаются слова ГОД и год).

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


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

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

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


Цитата(artem66rus @ 25.04.2011 11:27) *
Даны два предложения. Определить слова первого предложения, которые встречаются во втором, причем неважно, на каком регистре набраны эти слова (т.е. одинаковыми считаются слова ГОД и год).

Помогите кто чем может! Заранее спасибо!

Поставь задачу почетче. Чем разделены слова? предложения в строках?

И скажи, с чем именно у тебя затруднения. Что сделал, и что не получается.


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


Злостный любитель
*****

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

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


1. Привести обе строки к верхнему регистру.
2. Разбить на слова.
3. Перебором найти общие элементы разбиений. Просто я не знаю, как правильно находить пересечение множеств, поэтому предлагаю перебрать. Если бы я делал для себя, я бы с хешами замутил чего.


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





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

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


Цитата(Lapp @ 25.04.2011 14:00) *

Поставь задачу почетче. Чем разделены слова? предложения в строках?

И скажи, с чем именно у тебя затруднения. Что сделал, и что не получается.


Ну введите первое предложение, введите второе предложение. ну а вто дальше я встал... Я считаю сравниваются 2 строки, вот тока как это сделать не соображу

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


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

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

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


Цитата(TarasBer @ 25.04.2011 12:03) *
1. Привести обе строки к верхнему регистру.
2. Разбить на слова.
3. Перебором найти общие элементы разбиений. Просто я не знаю, как правильно находить пересечение множеств, поэтому предлагаю перебрать. Если бы я делал для себя, я бы с хешами замутил чего.
Можно схитрить. Разбить на слова одно, потом использовать фукцию Pos для поиска их во втором )). Хотя это только усложнит дело)). Полагаю, тут речь пока не об эффективности, а о принципиальной возможности.

Цитата(artem66rus @ 25.04.2011 12:05) *
Ну введите первое предложение, введите второе предложение. ну а вто дальше я встал... Я считаю сравниваются 2 строки, вот тока как это сделать не соображу
Ну покажи хотя бы, что есть..
И ты забыл ответить про разделители.


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





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

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


Цитата(Lapp @ 25.04.2011 14:14) *

Можно схитрить. Разбить на слова одно, потом использовать фукцию Pos для поиска их во втором )). Хотя это только усложнит дело)). Полагаю, тут речь пока не об эффективности, а о принципиальной возможности.

Ну покажи хотя бы, что есть..
И ты забыл ответить про разделители.



program predlog;
Uses Crt;
var
stroka : string;

begin
ClrScr;
WriteLn('Введите 2 предложения разделих их точкой ');
TextColor(Cyan);
ReadLn(stroka);
stroka:=stroka + '.';




Может точкой разделить? или как лучше я даж не знаю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

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

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


Цитата(artem66rus @ 25.04.2011 12:22) *
Может точкой разделить? или как лучше я даж не знаю

Зачем точкой? Просто сделай два разных ввода

  write('введите первое предложение: ');
readln(s1);
write('введите второе предложение: ');
readln(s2);




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





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

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


Добавлено через
Вот вроде, дотумкал!!!



uses crt;
type str=array[1..100] of string;

Procedure Split(var s:string; var output:str; var index:integer);
var i:integer;
Begin
index:=1;
For i:=1 to length(s) do
if (s[i] = ' ') then inc(index)
else output[index]:=output[index]+s[i];

End;
//------------------------------------------------------------------------------
var s1,s2,equals:string;
i,j,size1,size2:integer;
A,B:str;
begin
Write('Enter s1: ');
ReadLn(s1);
Write('Enter s2:');
ReadLn(s2);

Split(s1,A,size1);
Split(s2,B,size2);
WriteLn;

For i:=1 to size1 do
For j:=1 to size2 do
if (A[i] = B[j]) then WriteLn(A[i]);

Readln;
end.




ПРОВЕРТЕ ПЛЗ!! Че то с регистром у меня никак не выходит

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


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

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

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


Цитата(artem66rus @ 25.04.2011 13:30) *
Че то с регистром у меня никак не выходит
А тебе надо русский текст обрабатывать? В какой кодировке?


Добавлено через 14 мин.
Вот примерно так можно сравнивать независимо от регистра. Но это только для английских букв. Для русских надо переписывать функцию UpCase.
function Eq(s,t: string): boolean;
var
i: integer;
e: boolean;
begin
e:= Length(s)=Length(t);
i:= 1;
while e and (i<=Length(s)) and (UpCase(s[i])=UpCase(t[i]) do Inc(i);
Eq:= e and (i>Length(s))
end;


Еще: я бы советовал перед главным циклом пройтись по обоим массвам, A и B, и убрать повторения.


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





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

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


Цитата(Lapp @ 25.04.2011 16:15) *

А тебе надо русский текст обрабатывать? В какой кодировке?
Добавлено через 14 мин.
Вот примерно так можно сравнивать независимо от регистра. Но это только для английских букв. Для русских надо переписывать функцию UpCase.
function Eq(s,t: string): boolean;
var
i: integer;
e: boolean;
begin
e:= Length(s)=Length(t);
i:= 1;
while e and (i<=Length(s)) and (UpCase(s[i])=UpCase(t[i]) do Inc(i);
Eq:= e and (i>Length(s))
end;


Еще: я бы советовал перед главным циклом пройтись по обоим массвам, A и B, и убрать повторения.


Кодировка русскими буквами нужна, это я уже тоже нашел...

Перевод в верхний регистр:


procedure UpCaseRus(var s:string);{приведение к верхнему регистру русских букв}
{русские в верхний регистр}
var i:integer;
begin
for i:=1 to length(s) do
if s[i] in ['а'..'п'] then s[i]:=chr(ord(s[i])-32)
else if s[i] in ['р'..'я'] then s[i]:=chr(ord(s[i])-80)
else if s[i]='ё' then s[i]:='Ё';
end;



еще


function UpCase(s:string):string;{приведение к верхнему регистру всей строки}
{UpCase}
var i,k:byte;
st:string;
begin
st:=s;
for i:=1 to length(s) do
if st[i] in ['a'..'z'] then st[i]:=UpCase(st[i])
else if st[i] in [' '..'Ї'] then st[i]:=chr(ord(st[i])-32)
else if st[i] in ['а'..'п'] then st[i]:=chr(ord(st[i])-80)
else if st[i]='с' then st[i]:='р';
while st[1]=' 'do delete(st,1,1);
while st[length(st)]=' ' do delete(st,length(st),1);
UpCase:=st;
end;



и


procedure LowCase(var s:string);{приведение к нижнему регистру}
var i:byte;
begin
for i:=1 to length(s) do
if s[i] in ['A'..'Z','А'..'П'] then s[i]:=chr(ord(s[i])+32)
else if s[i] in ['Р'..'Я'] then s[i]:=chr(ord(s[i])+80)
else if s[i]='Ё'then s[i]:='ё';
end;



Как теперь это все объеденить без ошибки???

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


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

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

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


Цитата(artem66rus @ 25.04.2011 15:00) *
Как теперь это все объеденить без ошибки???

мм.. Знаешь, Артем, я бы советовал тебе бросать эту практику - дергать всякие фрагменты из кодов, найденных в Инете. Вот, ты привел три функции неизвестно откуда, все они имеют смысл, но ни одна точно не подходит к тому, что я сказал выше. И теперь я должен менять, подстраивать (хотя лично мне было бы НАМНОГО проще написать все сразу и самому за пять минут). Ну, хорошо, допустим, я сделаю (я сегодня добрый). Но ТЕБЕ-ТО какой от этого смысл?.. blink.gif Мне в некоторый момент показалось, что ты хочешь чему-то научиться. Но как только я пойму, что тебя беспокоит только сдача - мой интерес к твоей персоне резко упадет.

Без ошибки, гришь? Без ошибок даже ложку мимо рта не проносить не научишься.. Учатся как раз именно на ошибках. Ты сделай ошибку и исправь - вот тогда будет тебе польза и щастье..


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

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

 





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