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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2009, 02:40   #1
ClassicV
 
Регистрация: 30.11.2009
Сообщений: 3
По умолчанию Задача на Символы и строки в Delphi.

Вот такая задачка:Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран слова этого текста в порядке, соответствующем латинскому алфавиту.
Смог решить такую: Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран количество слов.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
procedure FormActivate(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
ComboBox1.SetFocus;
end;

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
Combobox1.Items.Add(Combobox1.Text) ;
Combobox1.Text:=' ';
end;
end;



procedure TForm1.ComboBox1Click(Sender: TObject);
var
st:string;
n,i,nst,ind:integer;
begin
n:=0;
ind:=0;
nst:=Combobox1.ItemIndex;
st:=Combobox1.Items[nst];
for i:=1 to length(st) do begin
case ind of
0: if st[i]<>' ' then begin
ind:=1;
n:=n+1;
end;
1:if st[i]=' ' then ind:=0;

end;
end;
Label3.Caption:=Inttostr(n);
end;

end.

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

Последний раз редактировалось ClassicV; 30.11.2009 в 16:11. Причина: добавления решения второй задачи
ClassicV вне форума Ответить с цитированием
Старый 30.11.2009, 04:53   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
var s,sub:string;
    i,j,n:integer;
    a:array[1..100] of string;
    q:set of char;
begin
clrscr;
writeln('Input str');
readln(s);
i:=0;n:=0;
q:=[' ',',' , '-', '!', '?', ';',':','.'];
repeat
inc(i);
if s[i] in q then begin
                   inc(n);
                   a[n]:=sub;
                   sub:='';
                   end
else if not (s[i] in q) then sub:=sub+s[i];
until (i=length(s))or(s[i]='.');
if sub<>'' then begin
inc(n);
a[n]:=sub;
end;
writeln;
for i:=1 to n-1 do
 for j:=n-1 downto i do
  if a[j]>a[j+1] then
  begin
  sub:=a[j+1];
  a[j+1]:=a[j];
  a[j]:=sub;
  end;
 for i:=1 to n do
  writeln(a[i]);
end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 30.11.2009, 11:40   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю вариант попроще:
Код:
 var s:string; k:integer;   i:char; a:array['A'..'z'] of char;
begin
 s:='hello world;';
 for k:=1 to length(s) do begin
  a[s[k]]:=s[k];
 end;
 for i:=low(a) to high(a) do begin
  if a[i]<>#0 then write(a[i]);
 end;
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Смысл идеи понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
строки и символы AlinAA Фриланс 3 17.05.2018 14:08
Строки и символы 111111 Общие вопросы C/C++ 2 16.12.2008 18:18
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27