Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 22:46   #1
Кнопик
 
Регистрация: 18.05.2009
Сообщений: 4
По умолчанию подскажите по программе на делфи

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

Вот написала программу, которая разбивает строку на слова и определяет начало и конец слова. Можно ли тут сделать так, чтобы слова ставились в нужном порядке?или программа вообще неправильная?
подскажите пжл(
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  function read_word(const s:string;var i:byte):string;
var w:string;
     l:byte;
begin
   l:=length(s);
 while (i<=l) and (s[i]<=' ') do
  i:=i+1;
 w:='';
 while (i<=l) and (s[i]>' ') do
  begin
   w:=w+s[i];
   i:=i+1;
  end;
 read_word:=w;
end;
procedure get_end_word(s:string; var w:string);
var i,l,n:integer;
    h:byte;

begin
 l:=length(s);
 h:=1;
  while h<=l do
    w:=read_word(s,h);
end;
procedure get_start_word(s:string; var w:string);
var i,l,n:integer;
    k:byte;

begin
 l:=length(s);
 k:=1;
  while k=l do
    w:=read_word(s,k);
end;

Последний раз редактировалось MaTBeu; 01.06.2009 в 00:05.
Кнопик вне форума Ответить с цитированием
Старый 31.05.2009, 23:58   #2
svyd
Новичок
Джуниор
 
Аватар для svyd
 
Регистрация: 31.05.2009
Сообщений: 1
По умолчанию

Это вроде работает)
Извиняюсь за плохой код)
Код:
program new;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
words:array[1..100] of string;
used:array[1..100] of boolean;
n_words:integer;
i,j:integer;

procedure read_words;
var
i,j:integer;
buff:string;
begin
  readln(buff);
  j:=1;
  for i:=1 to length(buff) do
  begin
      if (buff[i]=' ') then
      begin
        if (i<>length(buff))and(buff[i+1]<>' ') then
        begin
          j:=j+1;
        end;
      end
      else begin
        words[j]:=words[j]+buff[i];
      end;
  end;
  n_words:=j;
end;

procedure generate(ans:string;n:integer);
var
i:integer;
begin
  if (n=n_words) then
  begin
    writeln(ans);
    exit;
  end;
  for i:=1 to n_words do
  begin
    if (n=0) then
    begin
      used[i]:=true;
      generate(words[i],1);
      used[i]:=false;
    end else
    begin
      if (used[i]=false) then
      begin
        if (words[i][1]=ans[length(ans)]) then
        begin
          used[i]:=true;
          generate(ans+' '+words[i],n+1);
          used[i]:=false;
        end;
      end;
    end;
  end;
end;

begin
    read_words;
    for i:=1 to n_words do
    begin
      used[i]:=false;
    end;
    generate('',0);
    readln;
end.

Последний раз редактировалось Stilet; 01.06.2009 в 09:19.
svyd вне форума Ответить с цитированием
Старый 02.06.2009, 21:49   #3
Кнопик
 
Регистрация: 18.05.2009
Сообщений: 4
По умолчанию

спасибо огромное
Кнопик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите плиз с DBGrid в делфи))) PUSHkiN Помощь студентам 4 24.01.2009 01:19
Подскажите что не так в программе? Toxass Общие вопросы Delphi 9 20.12.2008 10:11
Подскажите, где в программе ошибка gamer123 Паскаль, Turbo Pascal, PascalABC.NET 3 25.02.2008 03:09
Помогите, ошибка в программе. делфи Absent Помощь студентам 5 18.12.2007 17:36
Подскажите по делфи Сергей07 Помощь студентам 2 25.10.2007 15:30