Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 480

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!Помогите,пожалуйста, составить программу для перевода
из 2-ой в 10-ую систему счисления в оконном приложении.
Смысл в том,что числа будут задаваться случайным образом,а пользователь будет вводить свой ответ. Моя программа должна показать правильный ли ответ и дать верный ответ. Причем число может быть и не целым. Спасибо заранее,премного благодарна.

Альбина Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Альбина (статус: Посетитель)
Вопрос отправлен: 2 декабря 2009, 22:11
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Жикльор

Здравствуйте, Альбина!

Вот код который все это делает (полный проект):

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Label1: TLabel;
  12. Edit1: TEdit;
  13. Button1: TButton;
  14. Button2: TButton;
  15. procedure Button1Click(Sender: TObject);
  16. function Decode(NumberDEC: integer):string;
  17. procedure Button2Click(Sender: TObject);
  18. private
  19. { Private declarations }
  20. public
  21. { Public declarations }
  22. end;
  23.  
  24. var
  25. Form1: TForm1;
  26. Number: integer;
  27.  
  28. implementation
  29.  
  30. {$R *.dfm}
  31.  
  32. procedure TForm1.Button1Click(Sender: TObject);
  33. var
  34. s: string;
  35. begin
  36. Randomize;
  37. Number:=Random(255);
  38. s:=Decode(Number);
  39. if Length(s) < 8 then
  40. while Length(s) <> 8 do
  41. s:='0' + s;
  42. Label1.Caption:=s;
  43. end;
  44.  
  45. function TForm1.Decode(NumberDEC: integer): string;
  46. begin
  47. repeat
  48. case (NumberDEC mod 2) of
  49. 0: Result:='0' + Result;
  50. 1: Result:='1' + Result;
  51. end;
  52. NumberDEC:=NumberDEC div 2;
  53. until NumberDEC = 0;
  54. end;
  55.  
  56. procedure TForm1.Button2Click(Sender: TObject);
  57. begin
  58. if Form1.Edit1.Text = IntToStr(Number) then
  59.  
  60.  
  61. end;
  62.  
  63. end.


Ответ отправил: Жикльор (статус: 5-ый класс)
Время отправки: 2 декабря 2009, 22:22
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 7 декабря 2009, 20:36; участников в обсуждении: 1.
Жикльор

Жикльор (статус: 5-ый класс), 2 декабря 2009, 22:24 [#1]:

Процедура Button1Click генерирует любое число и выводит в Label. Процедура Decode переводит десятичное число в двоичное. А процедура Button2Click проверяет ответ.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Жикльор

Жикльор (статус: 5-ый класс), 7 декабря 2009, 20:36 [#2]:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
function Decode(NumberDEC: integer):string;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Number: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
Randomize;
Number:=Random(255); //Генерируем любое число от 0 до 255
s:=Decode(Number); //Вызываем функцию Decode и передаем в качестве параметра число
if Length(s) < 8 then //если длина результата функции меньше 8
while Length(s) <> 8 do //пока не станет длина 8
s:='0' + s; //приписывать слева 0
Label1.Caption:=s; //и на метку кинуть результат всех действий
end;

function TForm1.Decode(NumberDEC: integer): string; //функция Decode
begin
repeat //повторять
case (NumberDEC mod 2) of //если остаток от деления на 2
0: Result:='0' + Result; //0, то результат 0 + бывший результат
1: Result:='1' + Result; //1, то результат 1 + бывший результат
end;
NumberDEC:=NumberDEC div 2; //Число над каким оперируем делим нацело на 2
until NumberDEC = 0; //до тех пор, пока при делении нацело числа на 2 не станет равна нулю
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Form1.Edit1.Text = IntToStr(Number) then //если введенное число равно изначальному значению нашего числа
ShowMessage('Ответ верен!') else //то верно, иначе
ShowMessage('Ответ неверен!' + #13 + 'Правильный ответ: ' + IntToStr(Number)); //неверно, и показать правильный ответ
end;

end.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.03 сек.