![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Нужно написать подпрограмму которая обеспечивает вывод в Мемо, в возрастающем порядке всех трехзначных целых чисел, в десятичной записи которых нет одинаковых цифр. Рекомендуется преобразовывать числа в строки и анализировать отдельные символы.
|
#2
|
|||
|
|||
![]() Нужна помощь в реализации этого задания
|
#3
|
||||
|
||||
![]() Переделайте вывод под Мемо:
Код:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; Var i,n: Integer; s: String; begin n := 1; for i := 100 to 999 do begin s := IntToStr(i); if (s[1] in [s[2],s[3]]) or (s[2] in [s[1],s[3]]) or (s[3] in [s[2],s[1]]) then Continue; Write(s:4); if n mod 18 = 0 then WriteLn; Inc(n); end; ReadLn; end. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
![]() А вот с этим кодом?
Код:
procedure TfrmIntNumber.Button1Click(Sender: TObject); var min,max,a:integer; s:string; begin Memo1.Clear; max:=999; a:=100; for min:=100 to max do begin s:=inttostr(a); a:=min+1; if ord(s[1])=ord(s[2]) and ord(s[2])=ord(s[3]) and ord(s[1])=ord(s[3]) then break else s:=s[1]+s[2]+s[3]; Memo1.Lines.Add(s); end; end; Цитата:
|
#5
|
||||
|
||||
![]() Всегда or или and (в условии) надо заключать в скобки:
Код:
procedure TfrmIntNumber.Button1Click(Sender: TObject); var min,max,a:integer; s:string; begin Memo1.Clear; max:=999; a:=100; for min:=100 to max do begin s:=inttostr(a); a:=min+1; if (ord(s[1])=ord(s[2])) and (ord(s[2])=ord(s[3])) and (ord(s[1])=ord(s[3])) then break else s:=s[1]+s[2]+s[3]; Memo1.Lines.Add(s); end; end; Помогаю за Спасибо ![]() |
#6
|
|||
|
|||
![]() v1s2222, Спасибо за помощь в такой мелкой ошибке.
Что нужно дописать что б выводило только числа по условию задания? Страдалецъ, Спасибо за старания. |
#7
|
||||
|
||||
![]() То что я вам дал, несколько отличается от вашего примера. Подумайте почему я использовал Continue а не Break.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
![]() а если вместо = в моем коде использовать <> и поменять местами содержимое между then и else?
|
#9
|
|||
|
|||
![]() Правильно ли я написал процедуру leftstr или это функция?
Код:
procedure TfrmLeftStr.Button1Click(Sender: TObject); var s,s1,s2:string; cnt:integer; begin cnt:=strtoint(Edit2.Text); s:=Edit1.Text; s1:=Copy(s,1,cnt); Memo1.Lines.Add(s1); end; procedure TfrmLeftStr.FormCreate(Sender: TObject); begin Edit1.Text:=''; Edit2.Text:=''; Memo1.Clear; end; |
#10
|
||||
|
||||
![]() Написание программы имеет мало общего с произвольной перестановкой строк и знаков. Если есть изменения в коде, приложит его к сообщению.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#11
|
||||
|
||||
![]() Зачем так?
Код:
procedure TfrmLeftStr.Button1Click(Sender: TObject); var s,s1,s2:string; cnt:integer; begin cnt:=strtoint(Edit2.Text); s:=Edit1.Text; s1:=Copy(s,1,cnt); Memo1.Lines.Add(s1); end; Код:
procedure TfrmLeftStr.Button1Click(Sender: TObject); begin Memo1.Lines.Add(Copy(Edit1.Text, 1, StrToInt(Edit2.Text))); end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
![]() Ну вообщем-то я код поменял немного, но от этого лучше не стало
Код:
procedure TfrmIntNumber.Button1Click(Sender: TObject); var min,max,a:integer; s:string; begin Memo1.Clear; max:=999; a:=100; s:=inttostr(a); for min:=100 to max do begin if (ord(s[1])=ord(s[2])) and (ord(s[2])=ord(s[3])) and (ord(s[1])=ord(s[3])) then break else a:=min+1; s:=inttostr(a); if (ord(s[1])=ord(s[2])) and (ord(s[2])=ord(s[3])) and (ord(s[1])=ord(s[3])) then break else s:=s[1]+s[2]+s[3]; Memo1.Lines.Add(s); end; end; Последний раз редактировалось flips, 06.11.2010 в 21:16. |
#13
|
|||
|
|||
![]() Можете сказать почему сдесь не выполняются услови с if одновременно, а только первое?
Код:
procedure TfrmIntNumber.Button1Click(Sender: TObject); var min,max,a:integer; s:string; begin Memo1.Clear; max:=999; for min:=100 to max do begin a:=100; s:=inttostr(a); if (ord(s[1])=ord(s[2])) and (ord(s[2])=ord(s[3])) and (ord(s[1])=ord(s[3])) then break else a:=min+1; s:=inttostr(a); if (ord(s[1])=ord(s[2])) and (ord(s[2])=ord(s[3])) and (ord(s[1])=ord(s[3])) then break else s:=s[1]+s[2]+s[3]; Memo1.Lines.Add(s); end; end; |
#14
|
|||
|
|||
![]() Код:
var I : Integer; Buf : String; begin Memo1.Lines.Clear; For I := 100 To 999 Do Begin Buf := IntToStr(I); If (Buf[1] <> Buf[2]) And (Buf[1] <> Buf[3]) And (Buf[2] <> Buf[3]) Then Memo1.Lines.Add(Buf); End; end; И все. Непонятно из-за чего ломаются копья. Конечно, это вариант с хардкодом - только трехзначные числа. |
#15
|
|||
|
|||
![]() lmikle, Спасибо большое, все оказалось намного проще, а я сидел ломал голову, ввел много переменных.
Страдалецъ, v1s2222, Вам большое спасибо за помощь и поддержку. |