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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 22:47   #1
Slava_Voronezh
Новичок
Джуниор
 
Регистрация: 07.06.2010
Сообщений: 4
По умолчанию Программа, сортирующая символы, введенные в Text1

Всем привет! Очень надо составить программу на Delphi, сортирующую символы, введенные в Text1 и выводящие число букв, цифр и спецсимволов.
Я создал массив, к примеру, с цифрами:
var
Form1: TForm1;
Tsifri: set of Char=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
Но вот как все отсортировать по буквам, цифрам и спецсимволам, что-то не соображу...
Спасибо всем, кто откликнется!

Последний раз редактировалось Slava_Voronezh; 07.06.2010 в 22:50.
Slava_Voronezh вне форума Ответить с цитированием
Старый 07.06.2010, 23:02   #2
Vikenty
Заслуженный флудер
Участник клуба
 
Аватар для Vikenty
 
Регистрация: 31.03.2010
Сообщений: 1,473
По умолчанию

Вот сортирует символы в поле
Код:
procedure StringSort(var data: string);
var
lo, hi, i, j: Integer;
t: char;
begin
lo := 1;
hi := Length(data);
for i := lo to hi do
   for j := hi downto i + 1 do
     if data[i] > data[j] then
     begin
       t := data[i];
       data[i] := data[j];
       data[j] := t;
     end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s:=Edit1.Text;
StringSort(s);
Edit1.Text:=s;
end;

Последний раз редактировалось Vikenty; 07.06.2010 в 23:06.
Vikenty вне форума Ответить с цитированием
Старый 08.06.2010, 07:02   #3
Slava_Voronezh
Новичок
Джуниор
 
Регистрация: 07.06.2010
Сообщений: 4
По умолчанию

Да вот надо по условию еще, чтобы в три Label.Caption выводилось чилсло букв, цифр и спецсимволов. Что надо написать, чтобы сортировалось и выводилось в Label.Caption?
Заранее ОГРОМНОЕ спасибо!
Slava_Voronezh вне форума Ответить с цитированием
Старый 08.06.2010, 11:23   #4
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Я создал массив, к примеру, с цифрами:
var
Form1: TForm1;
Tsifri: set of Char=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];

если я не ошибаюсь, ты создал множество, а не массив, что, в общем правильно. У тебя получится три множества (цифры, буквы, символы), ты каждый символ ch в поле text1 проверяешь на вхождение в каждое из множеств
if (ch in Tcifri) then count_cifri:=count_cifri+1 else
if (ch in Tbukvi) then count_bukvi:=count_bukvi+1 else
count_spec:=count_spec+1;
count_cifri, count_bukvi,count_spec-счетчики цифр, букв и спец. символов.

Цитата:
Что надо написать, чтобы сортировалось и выводилось в Label.Caption?
котлеты-отдельно, мухи-отдельно. В смысле, отдельно сортировка, отдельно подсчет числа цифр, символов, букв, а только потом вывод. Вывод как обычно
Form1.Label1.Caption:=IntToStr(coun t_cifri);

ЗЫ: Есть еще вариант реализовать все без множеств, если рассматривать числовой код каждого символа.
48-57 - цифры
65-90 -заглавные буквы латинского алфавита
97-122-строчные буквы латинского алфавита
остальное - спец. символы

Ord(ch: char): byte; - функция возвращает числовое значение кода символа ch
Snejnaya вне форума Ответить с цитированием
Старый 08.06.2010, 14:43   #5
Slava_Voronezh
Новичок
Джуниор
 
Регистрация: 07.06.2010
Сообщений: 4
По умолчанию

Snejnaya, а какого типа переменная ch? Мне же надо проверять на вхождение содержимое Edit1.Text, значит, надо перебирать последовательно каждые символы в окне Edit1.Text, как реализовать этот перебор?
Спасибо!
Slava_Voronezh вне форума Ответить с цитированием
Старый 08.06.2010, 14:56   #6
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Цитата:
а какого типа переменная ch
char, конечно

Цитата:
значит, надо перебирать последовательно каждые символы в окне Edit1.Text, как реализовать этот перебор
Строка - это массив символов. Соответственно доступ к любому элементу строки осуществляется, как к элементу массива, str[i]

str:=Form1.Edit1.Text;
for i:=0 to length(str) do
begin
ch:=str[i];
....
end;
Snejnaya вне форума Ответить с цитированием
Старый 08.06.2010, 16:23   #7
Slava_Voronezh
Новичок
Джуниор
 
Регистрация: 07.06.2010
Сообщений: 4
По умолчанию

А str-типа string, верно? Спасибо, буду пробовать!

Последний раз редактировалось Slava_Voronezh; 08.06.2010 в 16:26.
Slava_Voronezh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Введенные данные в DBGridEh не сохраняются prorock БД в Delphi 11 21.04.2011 14:35
Ввести в поле text1 и text2 любые символы и отправить мне на мыло (e-mail)? CodSharp Общие вопросы .NET 27 20.03.2010 21:59
Программа работает, но на выходе выдаёт в строке никому не нужные символы anybkarnak Общие вопросы C/C++ 1 04.03.2010 08:07
программа считывает символы не полностью, причём произвольное количество. Написано на Си Crasty Помощь студентам 2 25.02.2009 14:53
СИМВОЛЫ - помогите решить задачу на символы kiko Паскаль, Turbo Pascal, PascalABC.NET 5 30.11.2008 16:09