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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 12:06   #1
_FENDER_
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 26
По умолчанию Код программы на Delphi...

Помогите подкорректировать код...Написал программу на Delphi..
Суть её:Дано натуральное число,отсортировать цифры этого числа по возрастанию и убыванию.
По возрастанию работает, по убыванию - нет..просмотрите пожалуйста код и исправьте..или напишите свой вариант решения задачи.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, XPMan;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Edit1: TEdit;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    XPManifest1: TXPManifest;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
x:longint;
y:longint;
z:longint;
begin
x := StrToInt(Edit1.Text);
y := x mod 10;
x := x div 10;

while x <> 0 do
begin
if RadioButton1.Checked = True and (x mod 10 >= y mod 10)
or RadioButton2.Checked = True and (x mod 10 <= y mod 10)
then
y := y*10+x mod 10
else
begin
z:=0;
while
      RadioButton1.Checked = True and (x mod 10 > y mod 10)
or    RadioButton2.Checked = True and (x mod 10 < y mod 10)
and (y < 0) do
begin
z:=z*10+y mod 10;
y:=y div 10;
end;
y := y*10+x mod 10;
while z <> 0 do
begin
y := y*10+z mod 10;
z:= z div 10;
end;
end;
x:= x div 10;
end;
x := y;

label3.Caption := IntToStr(x);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.

Последний раз редактировалось _FENDER_; 28.01.2011 в 12:07. Причина: Ошибся
_FENDER_ вне форума Ответить с цитированием
Старый 28.01.2011, 12:11   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Отсортировал цифры числа в порядке возрастания - хорошо. Перепиши их теперь в обратном порядке - вот тебе сортировка по убыванию.... А в принципе это та же самая сортировка, но с противоположным знаком сравнения...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 28.01.2011, 12:17   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

я вчера не смог ответить быстро, получилось только часа через 3, правда тему удалил, чтоб тему не удаляли нужно писать название которое соответствует задаче
вот что вчера наклепал
Код:
var
x,y,t,temp:Int64;
begin
x:=StrToInt64(Edit1.Text);
y:=1;
while x div y>0 do
begin
y:=y*10;
end;
 t:=y;
while t > 1 do
  begin
y:=10;
temp:=(x mod 10);
  while y<t do
  begin
y:=y * 10;
 if RadioButton1.Checked then
begin
       if temp > ((x div (y div 10)) mod 10) then
     temp:= ((x div (y div 10)) mod 10) else
     x:= (((x div y)*10 + temp)*10 + ((x div (y div 10)) mod 10))*(y div 100)+ x mod (y div 100);
end;
  if RadioButton2.Checked then
begin
       if temp < ((x div (y div 10)) mod 10) then
     temp:= ((x div (y div 10)) mod 10) else
     x:= (((x div y)*10 + temp)*10 + ((x div (y div 10)) mod 10))*(y div 100)+ x mod (y div 100);
end;
  end;
 t:=t div 10;
  end;
label3.Caption := IntToStr(x);
end;
работает, но надо дорабатывать, вчера уж очень спать хотелось набирал только потому что обещал.

PS со строкой легче было бы, ну по крайней мере читабельнее.

Последний раз редактировалось vovk; 28.01.2011 в 12:19.
vovk вне форума Ответить с цитированием
Старый 28.01.2011, 12:47   #4
_FENDER_
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 26
По умолчанию

Спасибо..разобрался во всем..программа работает...
_FENDER_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код программы Gamst Помощь студентам 1 25.05.2010 16:26
Код программы Gamst Общие вопросы Delphi 7 25.05.2010 14:58
Код программы sss-777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 14.05.2010 12:12
перевести не трудный код программы из Delphi на С++ Ilius Помощь студентам 2 16.12.2008 18:11