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

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

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

 
 Ответить  Открыть новую тему 
> строки
RIDDICK
сообщение 11.05.2005 23:45
Сообщение #1


Пионер
**

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

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


Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – запятая или не менее одного пробела, за последним словом - точка.

Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству:
- буквы слова упорядочены по алфавиту;
Напечатать те слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
- перенести последнюю букву в начало слова.

помогите решить... горю... стринги еще не прошли ((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 11.05.2005 23:54
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


разбиваем тест на слова.
FAQ: разбиение строки на слова
затем проходим массив и печатаемнужные элементы.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RIDDICK
сообщение 12.05.2005 7:02
Сообщение #3


Пионер
**

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

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


это понятно... а как определить, что буквы в слове по алфав. порядку ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 12.05.2005 8:23
Сообщение #4


Профи
****

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

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


Попробуй нечто вроде этого:
var i: integer;
s: string;
boy: boolean;

. . . . . .

i:=2;
if length(s)>1 then boy:=(ord(s[i])=(ord(s[i-1])+1))
else boy:=true;
while (i<length(s)) and boy do
begin
inc(i);
boy:=(ord(s[i])=(ord(s[i-1])+1));
end;
if boy then writeln('Буквы в слове расположены по алфавиту! ');


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RIDDICK
сообщение 12.05.2005 8:56
Сообщение #5


Пионер
**

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

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


это нечто дает тру только если слово типа "абв"... но никак не "абг" )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RIDDICK
сообщение 12.05.2005 9:12
Сообщение #6


Пионер
**

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

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


далее, я не совсем понял про PChar, без которого тут никак имхо .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 12.05.2005 9:23
Сообщение #7


Профи
****

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

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


Чтобы учесть
Цитата
это нечто дает тру только если слово типа "абв"... но никак не "абг"

Тогда замени это:
if length(s)>1 then boy:=(ord(s[i])=(ord(s[i-1])+1))

на вот это:
if length(s)>1 then boy:=(ord(s[i])>ord(s[i-1]))


А чтобы проблем не было с верхним и нижним регистрами, переведи всю строку в один регистр перед вычислениями.

Сообщение отредактировано: hiv - 12.05.2005 9:27


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.05.2005 11:18
Сообщение #8


Гость






Цитата(RIDDICK @ 12.05.05 9:12)
я не совсем понял про PChar, без которого тут никак имхо.

Можно пояснить, с какой стороны тут никак не обойтись без PChar?
 К началу страницы 
+ Ответить 
RIDDICK
сообщение 12.05.2005 15:05
Сообщение #9


Пионер
**

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

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


2volvo

вводимая строка иметь будет длину около 400 символов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.05.2005 15:13
Сообщение #10


Гость






Ну и что? Обязятельно прикручивать PChar? А у тебя где-то в условии сказано, что дана СТРОКА содержащая ... ? У тебя речь идет о ПОСЛЕДОВАТЕЛЬНОСТИ, не так ли? Вот и используй
Var
sequence: array[1 .. 400] of char;

И не нужен тебе PChar, если вы еще даже String не проходили, то о чем-то более серьезном вообще разговора нет. Ну, а если речь о том, что символы ВВОДЯТСЯ с клавиатуры, то почему бы не вводить их сразу в массив слов (минуя буферную переменную)?
 К началу страницы 
+ Ответить 
RIDDICK
сообщение 12.05.2005 15:17
Сообщение #11


Пионер
**

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

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


как бы объяснить... лектор отстает на пару лекций от учебной практики )

" между соседними словами – запятая или не менее одного пробела, за последним словом - точка." - поэтому надо одной строкой (((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 13.05.2005 9:39
Сообщение #12


Профи
****

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

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


Цитата
Дана последовательность, содержащая от 2 до 50 слов...

Как собираетесь ее задавать? Читать из файла или с клавиатуры вводить?


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RIDDICK
сообщение 13.05.2005 14:37
Сообщение #13


Пионер
**

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

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


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


Профи
****

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

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


Ввод строки:
uses Crt;

var q :char;
count :integer; {количество вводимых символов}
s :array[1..400] of char; {обходимся без PChar}

begin
count:=0;
repeat
q:=readkey;
if ord(q)<>13 then
begin
inc(count);
ss[count]:=q;
end;
until ord(q)=13;

. . . . . .
end.


Имей в виду, при вводе редактировать нельзя!!!


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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