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

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

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

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Вывести на экран слова,содержащие три буквы
сообщение
Сообщение #1


Новичок
*

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

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


помогите пожалуйста,оч плохо соображаю в паскале
....Дана строка содержащая текст , заканчивающиеся точкой. Вывести на экран слова,содержащие три буквы,Напишите программу для ее решения

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


Гость






 ! 
Цитата(Правила Раздела)
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
Исправляй, иначе через час тема будет закрыта.

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


Я.
****

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

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


var s:string;
begin
s:='На заборе тоже три буквы написано: *** .';
writeln('три ***');
end.

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


Новичок
*

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

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


sheka,правда?

Добавлено через 13 мин.
а если через
write ('введите текст');readln (s);
а дальше.....что бы только на три буквы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

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

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


1. Разделить строку на отдельные слова.
2. Вывести только те, длина которых равна 3.
Примечание: можно делать в единственном цикле.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


andriano,можешь показать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

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

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


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


Новичок
*

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

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


andriano,ну пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


напишите кто нибудь,,,,,мне срочно......пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


mea culpa
*****

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

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


Разбиение на слова, все способы
Получить длину строки можно функцией length(s);, она возвращает целое значеие, равное длине строки.

Надо будет, думаю, завести отдельный массив для слов.

Добавлено через 15 мин.
const
limits = [#0..#32,'.',',',':',';','!','?','"'];

type
TWords = array[1..40] of string;

var
s:string;
words:TWords;
i,n: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
writeln('Vvedite stroku');
readln(s);
n:=getwords(s,words);
for i:=1 to n do if length(words[i])=3 then writeln(words[i]);
readln;
end.


Способ разбиения на слова позаимствовал у klem4'а, по ссылке в предыдущем посте.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


Unconnected,спасиб

Добавлено через 1 мин.
а попроще способа нет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


mea culpa
*****

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

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


А чем тебе этот сложный? Спрашивай.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гуру
*****

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

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


Цитата(lansel @ 17.12.2009 17:47) *
а попроще способа нет?
Можно обойтись без массива, если выводить слова в процессе разбора.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


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

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

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


Цитата(andriano @ 17.12.2009 22:11) *
Можно обойтись без массива, если выводить слова в процессе разбора.
Совершенно согласен.
Unconnected, зачем такой наворот?
Можно попроще, конечно.

const
limits = [#0..#32,'.',',',':',';','!','?','"'];

var
s,t: string;
i: integer;

begin
Write('Vvedite stroku: ');
ReadLn(s);
t:='';
for i:=1 to Length(s)+1 do
if (i>Length(s))or(s[i] in Limits) then begin
if Length(t)=3 then WriteLn(t);
t:=''
end
else t:=t+s[i];
ReadLn
end.


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


Новичок
*

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

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


Lapp,огромное спасибо!!)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

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

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


а без Limits можно обойтись?

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


mea culpa
*****

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

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


Можно, в принципе, если знаешь, что в твоей строке из разделителей будут только пробелы.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

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

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


Unconnected,прост мы такое еще не проходили....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


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

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

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


Цитата(lansel @ 20.12.2009 11:08) *
Unconnected,прост мы такое еще не проходили....
Ты бы лучше на вопрос ответил. Годится использовать ТОЛЬКО пробел в качестве разделителя? Какие символы МЕЖДУ словами могут быть?


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


Новичок
*

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

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


давай с пробелом
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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