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

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

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

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


Новичок
*

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

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


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

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


Гость






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

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


Я.
****

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

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


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

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


Новичок
*

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

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


sheka,правда?

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


Гуру
*****

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

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


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


Новичок
*

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

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


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


Гуру
*****

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

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


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


Новичок
*

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

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


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


Новичок
*

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

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


напишите кто нибудь,,,,,мне срочно......пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 17.12.2009 16:11
Сообщение #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 
 К началу страницы 
+ Ответить 
lansel
сообщение 17.12.2009 17:47
Сообщение #11


Новичок
*

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

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


Unconnected,спасиб

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


mea culpa
*****

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

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


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


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


Гуру
*****

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

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


Цитата(lansel @ 17.12.2009 17:47) *
а попроще способа нет?
Можно обойтись без массива, если выводить слова в процессе разбора.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 18.12.2009 4:21
Сообщение #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 
 К началу страницы 
+ Ответить 
lansel
сообщение 18.12.2009 15:52
Сообщение #15


Новичок
*

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

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


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


Новичок
*

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

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


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

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


mea culpa
*****

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

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


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


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


Новичок
*

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

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


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


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

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

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


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


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


Новичок
*

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

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


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

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

 



- Текстовая версия 22.07.2025 0:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"