Казахстанские технические форумы
Программное обеспечение => Языки программирования => Тема начата: ClasSiC от 18 Января 2007, 23:03:05
-
Насколько я вижу - топик по программированию здесь практически не используется никем!.
Сколько вопросов здесь было - ответы были практически единицы!.ПОРА БЫ БЫТЬ ПОАКТИВНЕЕ ГОСПОДА ПРОГРАММИСТЫ!.НАЧИНАЙТЕ ПОМОГАТЬ ДРУГ ДРУГУ!.
-
НАЧИНАЙТЕ ПОМОГАТЬ ДРУГ ДРУГУ!.
А где твое начало???
Вноси свои две лепты...
Поддержим!!!
-
По прогромированию вопрос вобще тяжелый, помоч разобратся мало кто хочит , программисты заняты другими более важными делами
-
По прогромированию вопрос вобще тяжелый, помоч разобратся мало кто хочит , программисты заняты другими более важными делами
Вот по существу вопросы и просим , будут интересные и тема вырастет...
-
Ну хорошо!.В общем есть такая задача: Нужно сделать калькулятор на Дельфях, но только чтобы он выводил результат "Римскими цифрами!."Ну что? Какие есть предложения?.
P/S/ I,II,III,IV,V... римские цифры!.
-
Ну хорошо!.В общем есть такая задача: Нужно сделать калькулятор на Дельфях, но только чтобы он выводил результат "Римскими цифрами!."Ну что? Какие есть предложения?.
P/S/ I,II,III,IV,V... римские цифры!.
Отлично , задача есть . Давай на обозрение свои наработки...
-
Отлично , задача есть . Давай на обозрение свои наработки...
unit calc_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
ButtonPlus: TButton;
ButtonMinus: TButton;
ButtonEnter: TButton;
ButtonC: TButton;
Button0: TButton;
ButtonZ: TButton;
procedure Edit1Change(Sender: TObject; var Key:Char);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button0Click(Sender: TObject);
procedure ButtonZClick(Sender: TObject);
procedure ButtonCClick(Sender: TObject);
procedure ButtonPlusClick(Sender: TObject);
procedure ButtonMinusClick(Sender: TObject);
procedure ButtonEnterClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
accum: real; // аккумулятор
oper: integer; // операция: 1 - '+' ; 2 - '-';
// 0 - "выполнить" (кнопка "=")
f: integer;
{ f = 0 ждем первую цифру нового числа, например,
после выполнения операции, когда на
индикаторе результат.
f = 1 ждем остальные цифры. }
// кнопка 0
procedure TForm1.Button0Click(Sender: TObject);
begin
if f = 0 // первая цифра числа
then begin
Edit1.Text := '0';
f := 1; // ждем остальные цифры
end
else
if Edit1.Text <> '0'
// чтобы на индикаторе не было
// нескольких нулей в начале числа
then Edit1.Text := Edit1.Text + '0';
end;
// кнопка 1
procedure TForm1.Button1Click(Sender: TObject);
begin
if f = 0 // первая цифра числа
then begin
Edit1.Text := '1';
f := 1; // ждем остальные цифры
end
else Edit1.Text := Edit1.Text + '1';
end;
// кнопка 2
procedure TForm1.Button2Click(Sender: TObject);
begin
if (f = 0) // первая цифра числа
then begin
Edit1.Text := '2';
f := 1; // ждем остальные цифры
end
else Edit1.Text := Edit1.Text + '2';
end;
// кнопка 3
procedure TForm1.Button3Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '3';
f := 1;
end
else Edit1.Text := Edit1.Text + '3';
end;
// кнопка 4
procedure TForm1.Button4Click(Sender: TObject);
begin
if f = 0 then
begin
Edit1.Text := '4';
f := 1;
end
else Edit1.Text := Edit1.Text + '4';
end;
// кнопка 5
procedure TForm1.Button5Click(Sender: TObject);
begin
if (f = 0)
then begin
Edit1.Text := '5';
f := 1;
end
else Edit1.Text := Edit1.Text + '5';
end;
// кнопка 6
procedure TForm1.Button6Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '6';
f := 1;
end
else Edit1.Text := Edit1.Text + '6';
end;
// кнопка 7
procedure TForm1.Button7Click(Sender: TObject);
begin
if f = 0
then begin
// первая цифра числа
Edit1.Text := '7';
f := 1;
end
else Edit1.Text := Edit1.Text + '7';
end;
// кнопка 8
procedure TForm1.Button8Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text := '8';
f := 1;
end
else Edit1.Text := Edit1.Text + '8';
end;
// кнопка 9
procedure TForm1.Button9Click(Sender: TObject);
begin
if f = 0 // первая цифра числа
then begin
Edit1.Text := '9';
f := 1; // ждем остальные цифры
end
else Edit1.Text := Edit1.Text + '9';
end;
// десятичная точка
procedure TForm1.ButtonZClick(Sender: TObject);
begin
if Edit1.Text = '0' then
begin
Edit1.Text := '0,';
f := 1;
end;
if Pos(',',Edit1.Text) = 0 then
Edit1.Text := Edit1.Text + ',';
end;
// выполнение операции
procedure DoOper;
var
numb: real; // число на индикаторе
begin
// accum содержит результат предыдущей
// операции, oper - код операции, которую
// надо выполнить. Операнд находится
// на индикаторе.
numb := StrToFloat(Form1.Edit1.Text);
case oper of
0: accum := numb;
1: accum := accum + numb;
2: accum := accum - numb;
end;
Form1.Edit1.Text := FloatToStr(accum);
end;
// Кнопка "+".
procedure TForm1.ButtonPlusClick(Sender: TObject);
{ Надо выполнить предыдущую операцию,
вывести результат на индикатор,
запомнить текущую операцию и
установить режим ожидания первой
цифры нового числа. }
begin
if f = 0 // ждем первую цифру, но пользователь
// щелкнул на кнопке операции
then oper := 1 // запомним операцию
else begin
DoOper; // выполнить предыдущую операцию
oper :=1; // запомнить текущую операцию
f:=0; // ждем первую цифру нового числа
end;
end;
// кнопка "-"
procedure TForm1.ButtonMinusClick(Sender: TObject);
// см. комментарий к проц. обработки OnClick на "+"
begin
if f = 0 // ждем первую цифру
then oper := 2
else begin
DoOper; // выполнить предыдущую операцию
oper :=2; // запомнить текущую операцию
f:=0; // ждем первую цифру нового числа
end;
end;
// кнопка "="
procedure TForm1.ButtonEnterClick(Sender: TObject);
begin
if f = 0 // ждем первую цифру
then oper := 0
else begin
DoOper; // выполнить предыдущую операцию
oper :=0; // запомнить текущую операцию
f:=0; // ждем первую цифру нового числа
end;
end;
// кнопка "с" - очистка
procedure TForm1.ButtonCClick(Sender: TObject);
begin
Edit1.Text := '0';
accum := 0;
oper := 0;
f := 0; // ждем первую цифру числа
end;
// нажатие клавиши в поле Edit1
procedure TForm1.Edit1Change(Sender: TObject; var Key:Char);
begin
Key := Chr(0); // не отображать символы
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
oper := 0;
end;
end.
Вот впринципе просто калькулятор, а мне надо чтобы он работал как с простыми цифрами так и с римкими
-
он работал как с простыми цифрами так и с римкими
Да это полный изврат конечно, так как такой калькулятор останется навряд ли востребованым - расцвет Римской империи уже давно миновал...
Реализовать все можно элементарно: кидаешь на свою форму - заготовку калькулятора ещё одну пимпу ,например радио-буттон или же просто кнопку, далее к этой кнопке привязываешь функцию по переводу калькулятора из обычного состояния в "Римское" - тоесть чтоб циферки выводил Римские, пример тому как в Виндовском калькуляторе из обычного десятиричного состояния переключаешь калькулятор в шестнацатиричный , двоичный или восьмеричный режим .Далее если обратится к стандартным таблицам символов кодировок , как Юникод ,Дос или Виндовс
содержащим основные наборы символов , то конечно же Римского обозначения там не будет и вот тебе надо его реализовать , например в С++ для этого я бы создал инклюдник в котором описал бы используемые клавиши клавиатуры и соответствующие им Римские обозначения , ну а для Паскаля наверно можно это реализовать , как обычный Виндовый файл шрифта TrueType - используемые системой и расположенные по адресу : WINNT\Fonts ,- именно в нем сделать свое "Римское" видение символов ну а далее заюзать этот файл в исходном коде для использования твоим калькулятором. И конечно же тебе понадобится своя функция которая бы умела работать как с простым так и с Римским обозначением символов...
Лирическое отступление: этот калькулятор будет очень тормознутым в скорости выполнения операций - по причине того что помимо вычислений ему надо будет ещё дополнительно конвертировать вычисления из обычной в Римскую систему счисления , которая согласно истории и испытанию временем не выжила в борьбе за существование и на сагодняшний день просто мертва, на малых значениях вычислений это может быть будет и не заметно , но при работе с двенадцатью или пятьнадцатью разрядными числами скорей всего будет 100% загрузка процессора , какой бы модели он ни был , а с отрицательными числами вообще будет ступор...
И стоит ли тратить свое время на эту утопическую затею ???
Если и другие твои затеи подобны этой , то не обессудь за не внимание...
-
дело в том что это дело нужно не мне!. и потом - пока простой кальулятор, а дальше больше...
-
Народ! Нужно помогать друг другу,хотя уговаривать не буду.... Кто хочет тот поможет:)
-
Я бы и рад помощь, но только по определенным языкам (новичкам). Дельфи, Турбо паскаль и т.д.
Если что пишите.
Как будет время отвечу