|
Вопрос # 3 480/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!Помогите,пожалуйста, составить программу для перевода
из 2-ой в 10-ую систему счисления в оконном приложении.
Смысл в том,что числа будут задаваться случайным образом,а пользователь будет вводить свой ответ. Моя программа должна показать правильный ли ответ и дать верный ответ. Причем число может быть и не целым. Спасибо заранее,премного благодарна.
 |
Вопрос задала: Альбина (статус: Посетитель)
Вопрос отправлен: 2 декабря 2009, 22:11
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Жикльор
Здравствуйте, Альбина!
Вот код который все это делает (полный проект):
Приложение: Переключить в обычный режим- 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);
- s:=Decode(Number);
- if Length(s) < 8 then
- while Length(s) <> 8 do
- s:='0' + s;
- Label1.Caption:=s;
- end;
-
- function TForm1.Decode(NumberDEC: integer): string;
- begin
- repeat
- case (NumberDEC mod 2) of
- 0: Result:='0' + Result;
- 1: Result:='1' + Result;
- end;
- NumberDEC:=NumberDEC div 2;
- until NumberDEC = 0;
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- if Form1.Edit1.Text = IntToStr(Number) then
-
-
- end;
-
- 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.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|