Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Последовательность слов в обратном поряд 
V
    Опции темы
GEK
Дата 17.5.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.5.2008

Репутация: -1
Всего: нет



Получить последовательность слов строки в обратном порядке
Помогите пожалуйста с текстом программы!
Спасибо!
PM MAIL   Вверх
Albinos_x
Дата 17.5.2008, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 2
Всего: 108



у тебя чего-то не получается или вообще ничего не знаешь?)


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
GEK
Дата 18.5.2008, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.5.2008

Репутация: -1
Всего: нет



Вот вывести слово наоборот знаю как там вс просто а как со словами быть ума не приложу в понедельник уж сдавать надо помогите пожалуйста smile 
PM MAIL   Вверх
almagnit
Дата 18.5.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: 1
Всего: 7



А между словами пробелы должны быть или что угодно ?

Вообще посмотри мой пост в этой теме, если знаешь как буквы переставить то думаю разберешься.
PM MAIL ICQ   Вверх
GEK
Дата 18.5.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.5.2008

Репутация: -1
Всего: нет



Да пробелы должны быть!almagnit на счет поста не понял ссылка на мою же тему выкидывает
PM MAIL   Вверх
GEK
Дата 18.5.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.5.2008

Репутация: -1
Всего: нет



HEEEEEEEELp! smile 
PM MAIL   Вверх
almagnit
Дата 18.5.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: 1
Всего: 7



Цитата(GEK @  18.5.2008,  11:10 Найти цитируемый пост)
на мою же тему выкидывает

наверное поспешил smile

Если в предложении кроме пробелов ничего нет, тогда нужно посчитать количество мест в которых

предложение прерывается пробелами, а количество слов будет на один больше.

Для этого нужно проверить посимвольно всю строку и в месте пробела увеличивать счетчик числа слов.

ЗЫ:
Не здавайтесь  smile , все получиться smile .
PM MAIL ICQ   Вверх
mr.Anderson
Дата 18.5.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Ну, чего мучаемся.

Смотри.
Код

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var
 words : Array of String;
 input : String;
 i     : Integer;

begin
 setLength( words, 1 );

 readln( input );

 for i:=1 to Length(input) do
  if( input[i] = ' ' ) then
   setLength( words, High(words)+2 )
  else words[ High(words) ] := words[ High(words) ] + input[i];

 for i:=High(words) downto Low(words) do
  if( i = Low(words) ) then
   write( words[i] )
  else write( words[i], ' ' );
end.


Добавлено через 1 минуту и 19 секунд
Наиболее короткое решение, которое пришло в голову.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
almagnit
Дата 18.5.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: 1
Всего: 7



mr.Anderson, не ругайтесь на счет авторства. Я подправил ваш код на случай нескольких пробелов

Код

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var
 words : Array of String;
 input : String;
 i     : Integer;

begin
 setLength( words, 1 );

 readln( input );

 for i:=1 to Length(input)-1 do
  if( input[i] = ' '  and input[i+1]<>' ') then 
  begin
   setLength( words, High(words)+2 )
   if(i=Length(input)-1)then
   setLength( words, High(words)+2 )
  end;
  else words[ High(words) ] := words[ High(words) ] + input[i];

 for i:=High(words) downto Low(words) do
  if( i = Low(words) ) then
   write( words[i] )
  else write( words[i], ' ' );
end.

PM MAIL ICQ   Вверх
mr.Anderson
Дата 18.5.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



almagnit, по условию, между ними один пробел. smile Я просто четко выполнил задачу. Если уж на то пошло, там еще тьму проверок можно устроить, доводя программу до универсальности...

Добавлено через 57 секунд
Кстати, мне ваш код не особо нравится. Что-то там нагромождено в цикле... Плюс вы учли только один дополнительный пробел, а не все сразу. Если уж модифицировать, то не так.

Если нужно - напишу модификацию.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
GEK
Дата 18.5.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.5.2008

Репутация: -1
Всего: нет



А как его подформу оформить? smile 
PM MAIL   Вверх
mr.Anderson
Дата 18.5.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



GEK, блин, ты сразу не мог сказать?

Добавлено @ 15:34
В общем. Создаешь новый проект. Кидаешь на форму два компонента TEdit. У первого делаешь имя EInput, у второго - EResult.
Кидаешь компонент TButton, делаешь имя BProcess, надпись "Перевернуть" (без кавычек).
Дважды левой кнопкой мышки тыкаешь на кнопку. Там, куда тебя перебросило, код будет таким:
Код

procedure TForm1.BProcessClick(Sender: TObject);
begin
end;

Поменяй его на такой:
Код

procedure TForm1.BProcessClick(Sender: TObject);
var
 words : Array of String;
 input : String;
 i     : Integer;
begin
 setLength( words, 1 );

 input := Trim(EInput.Text);
 
 for i:=1 to Length(input) do
  if( input[i] = ' ' ) then
   setLength( words, High(words)+2 )
  else words[ High(words) ] := words[ High(words) ] + input[i];

 EResult.Clear();

 for i:=High(words) downto Low(words) do
  EResult.Text := EResult.Text + words[i] + ' ';

 EResult.Text := Trim(EResult.Text);
end.


Это сообщение отредактировал(а) mr.Anderson - 18.5.2008, 15:35


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
GEK
Дата 19.5.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.5.2008

Репутация: -1
Всего: нет



Спасибо большое ребят! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.