а не моглибы и мне помочь?))) условие:"вводится текст из нескольких предложений. нужно найти то предложение, в котором встречается больше всего различных букв" например: "я люблю музыку. она очень хорошая." в 1ом предложении ялюбмузык и того 9 разных букв. во 2ом оначеьхршая и того 11 букв.
в принципе у меня получается, но использовал кучу различных счетчиков у функцию "go to" но как недавно узнал этот способ не подходит, во 1х долго работает если больше 5и предложений, во 2х "go to" ламерский метод . когда доходит до точки виснет. и еще хотелось бы учесть различные символы ".!?" и если вдруг есть несколько предложений с одинаковым максимальным различных кол-вом букв
volvo
10.12.2008 21:57
Цитата
в принципе у меня получается, но использовал кучу различных счетчиков у функцию "go to"
Ух... А давай ты все-таки покажешь, КАК именно у тебя получалось (или не получалось)? А мы уже подправим, если что...
Кстати, зачем в чужой теме? Только потому, что она называется "Задача на строки"? (привет, Istari) Надо было свою тему создать...
Hikep
10.12.2008 22:50
Цитата(volvo @ 10.12.2008 17:57)
Ух... А давай ты все-таки покажешь, КАК именно у тебя получалось (или не получалось)? А мы уже подправим, если что...
Кстати, зачем в чужой теме? Только потому, что она называется "Задача на строки"? (привет, Istari) Надо было свою тему создать...
ну да. так как строки.
var
i,k,t,s,m,n:integer;
tekst,alf:string;
bukvy: array [1..33] of char;
alf:='абвгдеежзийклмнопрстуфхцчшщъыьэюя';
m:=0;
begin
readln(tekst);
t:=length(tekst);
1: for i:=1 to 33 do begin
for k:=1 to t do begin
if alf[i]=tekst[k] then begin
for s:=1 to 33 do begin
if tekst[i]<>bykvy[s] then m:=m+1;
else go to: 1 end;
if m=33 then bukvy[i]:=copy(tekst,i,1);
end;
.................
в общем то идея такая но тут такой бардак получается у меня была идея сделать вот так: проверяем каждую букву на наличие ее в алфавите(чтоб исключить различные не нужные символы) потом копируем ее в созданный массив (предварительно проверив нет ли такой уже) потом как только доходим до точки считаем сколько букв мы откопировали и присваиваем ее к какой нибудь переменной очищаем наш массив и начинаем все с нуля потом проверяем какое число различеых букв больше предыдущее или то что получилось при проверки следующего предложения. и так далее..........
короче получается полная бурда
знаю что есть более простые способы решения, и хотелось бы их узнать)))) процедурамми и функциями вроде П.С. я "Ломаносов"(самоучка); покажите пожалуйста пример решения этой задачи)))) а дальше я как нибудь сам)))
М
При публикации кода используй теги. Lapp
volvo
10.12.2008 23:30
Вот смотри, привожу пример решения задачи... Но ты обещал разобраться в нем... Разбирайся. Он прокомментирован, это будет легко сделать. Если будут какие-то вопросы, что-то непонятно - спрашивай. Не копируй бездумно...
const s: string = 'music is my love. i very very like it.';
var max_st, st: string; { Здесь будем хранить макс. строку и текущую строку } i, count, max: integer; letters: set of char; { разные буквы в текущем предложении }
begin max_st := ''; st := ''; { Начальные установки - все обнуляем } max := 0; count := 0; letters := [];
i := 1; { идем по строке, и проверяем каждый символ: } while i <= length(s) do begin if (s[i] = '.') and (count > max) then begin { конец продложения и счетчик разных символов в этом предложении больше, чем был во всех предыдущих? } { обновим максимум и само предложение } max := count; max_st := st;
{ и подготовимся к обработке след. предложения } st := ''; count := 0; letters := []; end { if } else begin { не конец предложения, обычный символ? проверим, присутствует ли он уже в Letters, надо ли его считать "разным" } if not (s[i] in letters) then begin { не присутствует, добавляем и увеличиваем счетчик "разных" символов } letters := letters + [ s[i] ]; inc(count); end; { и составляем текущее предложение, оно может пригодиться, когда дойдем до символа '.' } st := st + s[i]; end; { else } inc(i); { Все, переходим к следующему символу } end; { while } { строка закончилась - печатаем самое длинное предложение } writeln(max_st); end.
Цитата
у меня была идея сделать вот так:
Ну, фактически это и есть то, что сделано у меня. За одним исключением: я не вижу, где здесь полная бурда...
Hikep
11.12.2008 0:24
Цитата(volvo @ 10.12.2008 19:30)
Ну, фактически это и есть то, что сделано у меня. За одним исключением: я не вижу, где здесь полная бурда...
про бурду я имел в виду свое творение но сейчас посмотрел и все больше убеждаюсь. Все гениальное - просто, и наоборот все простое - гениально! Спасибо большее осталось еще полистать литературу разобраться и для закрепления че нить сделать на подобии, но с другими условиями а может есть еще какие варианты решения??? Если есть напишите пожалуйста. Охотн знать куда больше чем знаю сейчас. да и соображалка будет лучше работать
Lapp
11.12.2008 9:36
М
Большая просьба не флудить своими вопросами в чужих темах. Разделено. Дальше буду удалять.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.