![]() |
|
|
#1
|
|||
|
|||
|
Доброе время суток.
Помогите, в написании программы, задали по учебе, а я не силен. Вводится последовательность из семи чисел или букв. Программа определяет, является ли последовательность возрастающей? Вариант ввода меняется контекстным меню. С помощью линейки прокрутки меняется размер шрифта в окнах (10-15). Очистка ввода - соответствующей клавишей. Запуск анализа - ввод последнего символа. Заранее Спасибо! |
|
#2
|
||||
|
||||
|
Что значит
Цитата:
Код:
Procedure EditonKeyPress;//В событиях поля для ввода выбрать onKeyPress
begin
Edit.Text := String;//Содержимое эдит в переменую
if Length(String)=7 then begin//если символов 7 то запуск анализа
if
((Ord(String[0])>Ord(String[1])) and//если нулевой символ больше первого
(Ord(String[1])>Ord(String[2])) and
(Ord(String[2])>Ord(String[3])) and
(Ord(String[3])>Ord(String[4])) and
(Ord(String[4])>Ord(String[5])) and
(Ord(String[5])>Ord(String[6])) and
(Ord(String[6])>Ord(String[7])))
then //то показать ссобщение
ShowMessage('Последовательность вознастающая');
end;
end; |
|
#3
|
||||
|
||||
|
NIch, отличный пример кода...
Особенно если строка будет длиной в 150 символов.... 5 по информатике в кармане. |
|
#4
|
||||
|
||||
|
Почитай лучше задание...
Цитата:
Код:
var
i : integer;
Bool : boolean;
String : String;
begin
...
for i :=1 to Length(String) do begin//от единицы до конца строки
if Ord(String[i-1])>Ord(String[i]) then begin//если предыдущий меньше текущего
Bool := true;//Дополнительная переменная Да
end
else begin//если предыдущий не меньше текущего
Bool := false;// Нет
Break;//выйти из цикла
end;
if Bool = true then//в конце цикла если да то
ShowMessage('Последовательнось возрастающая'); |
|
#5
|
||||
|
||||
|
А мне вот тупо интересно как последовательности из "букв и цифр" определить "возростание-убывание"?
|
|
#6
|
||||
|
||||
|
ну видимо по коду символа...
|
|
#7
|
|||
|
|||
|
Цитата:
Код:
Procedure EditonKeyPress(Sender:TObject);
var
bool:Boolean;
begin
bool:=true;
with (Sender as TEdit).Edit do
if Length(Text)=7 then
for i:=2 to Length(Text) do //!! именно от второго символа
if not Ord(Text[i-1])>Ord(Text[i]) then begin
bool:=false;
break;
end;
if bool then
ShowMessage('Последовательнось возрастающая');
end;Последний раз редактировалось Admin, 30.10.2009 в 21:55. |
|
#8
|
|||
|
|||
|
Цитата:
Код:
Procedure EditonKeyPress(Sender:TObject);
var
bool:Boolean;
begin
bool:=true;
with (Sender as TEdit) do
if Length(Text)=7 then
for i:=2 to Length(Text) do
if not Ord(Text[i-1])>Ord(Text[i]) then begin
bool:=false;
break;
end;
if bool then
ShowMessage('Последовательнось возрастающая');
end;for i:=2 to Length(Text) do - !! именно от второго символа, иначе будет ошибка) Последний раз редактировалось Asinkrit, 30.10.2009 в 21:39. |
|
#9
|
||||
|
||||
|
Цитата:
|
|
#10
|
|||
|
|||
|
Цитата:
В моем случае код более оптимизироавнный ![]() |
|
#11
|
||||
|
||||
|
Где же он более оптимизирован??? Тот же хрен только вид сбоку))) ИМХО
Я не претендовал на звание максимального оптимизатора, а лишь хотел показать Mougogblp в каком направлении двигаться... |
|
#12
|
|||
|
|||
|
Цитата:
Незначительно оптимизирован) Из цикла убраны, jump(с точки зрения ассемблера) (... else ...) и ненужное присваивание (Bool := true , замененное на одно в начале) |
|
#13
|
||||
|
||||
|
Спасибо за уточнения)))
|
|
#14
|
|||
|
|||
|
Был бы очень признателен, если кто нибудь скинул на почту сам проэкт не компилированный в exe файл..
А то я совсем не понимаю в delphi... |