1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Текст, строки. Анализ буквенного состава предложения.
а не моглибы и мне помочь?))) условие:"вводится текст из нескольких предложений. нужно найти то предложение, в котором встречается больше всего различных букв" например: "я люблю музыку. она очень хорошая." в 1ом предложении ялюбмузык и того 9 разных букв. во 2ом оначеьхршая и того 11 букв.
в принципе у меня получается, но использовал кучу различных счетчиков у функцию "go to" но как недавно узнал этот способ не подходит, во 1х долго работает если больше 5и предложений, во 2х "go to" ламерский метод . когда доходит до точки виснет. и еще хотелось бы учесть различные символы ".!?" и если вдруг есть несколько предложений с одинаковым максимальным различных кол-вом букв
Вот смотри, привожу пример решения задачи... Но ты обещал разобраться в нем... Разбирайся. Он прокомментирован, это будет легко сделать. Если будут какие-то вопросы, что-то непонятно - спрашивай. Не копируй бездумно...
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.
Цитата
у меня была идея сделать вот так:
Ну, фактически это и есть то, что сделано у меня. За одним исключением: я не вижу, где здесь полная бурда...
Ну, фактически это и есть то, что сделано у меня. За одним исключением: я не вижу, где здесь полная бурда...
про бурду я имел в виду свое творение но сейчас посмотрел и все больше убеждаюсь. Все гениальное - просто, и наоборот все простое - гениально! Спасибо большее осталось еще полистать литературу разобраться и для закрепления че нить сделать на подобии, но с другими условиями а может есть еще какие варианты решения??? Если есть напишите пожалуйста. Охотн знать куда больше чем знаю сейчас. да и соображалка будет лучше работать