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

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

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

 
 Ответить  Открыть новую тему 
> Строка, файл, процедура(функция)
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Даша

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


Помогите пожалуйста!
1)Дана строка символов. Найти в строке самое длинное слово и вывести его на печать. Слова ограничены пробелами, запятыми и точками. Порядок ввода исходных данных: - исходная строка. Порядок вывода результатов: - длина и слово.
2)Преобразовать обработку строки в процедуру (или функцию). Созданную процедуру использовать для построчной обработки текстового файла (Text). Результат обработки записывается в новый файл того же типа.

вот код для того чтоб найти максимальную Длинну, но если я поставлю запятую и точку..то летит

 var
s: string;
i, start, len, max_len: byte;

begin
readln(s);

max_len := 0;
start := 0;
i := 2;

while (i < length(s)) do begin
len := 0;

while not (s[i] = ' ') do begin
inc(i); inc(len);
end;

if len > max_len then begin
max_len := len;
start := i - len;
end;

inc(i);
end;

writeln(copy(s, start, max_len));
end.


и можете помочь со 2ой частью задания
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Не учитываешь один момент:
Слова у тебя разделяются не только пробелами, а ведь klem4 предупреждал там, откуда ты скопировала код:
Цитата
Учти, в начале и конце обязательно должен стоять пробел, слова разделяются только одним пробелом. Если это не учесть, программа будет работать некорректно.


Внутренний цикл измени на:
    while not (s[i] in [' ', ',', '.']) do begin
inc(i); inc(len);
if i > length(s) then break;
end;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Даша

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


Эт-то я учла)
спасибо за цикл)...
эх..а со второй частью я совсем не дружу(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
а со второй частью я совсем не дружу(
Это, в смысле, не можешь преобразовать код в функцию? Так очень просто:

{ функция принимает строку и строку же возвращает }
function process(s: string): string;
{ здесь описываешь все нужные переменные }
var ...
begin

{ здесь - практически тот же самый код, что был приведен выше }

process := ... { не забываем возвращать значение }
end;

Попробуй, где не получится - подправим smile.gif
 К началу страницы 
+ Ответить 

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

 





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