Êàëüêóëÿòîð. Ïðîáëåìà ñ òî÷êîé. - Flash Zone Forum

IPB

Çäðàâñòâóéòå, ãîñòü ( Âõîä | Ðåãèñòðàöèÿ )

 
Îòâåòèòü â ýòó òåìóÎòêðûòü íîâóþ òåìó
> Êàëüêóëÿòîð. Ïðîáëåìà ñ òî÷êîé.
VINegative
ñîîáùåíèå 16.06.2012 - 21:18
Ñîîáùåíèå #1


Íîâè÷îê
*

Ãðóïïà: Íîâè÷îê
Ñîîáùåíèé: 3
Ðåãèñòðàöèÿ: 16.06.2012
Ïîëüçîâàòåëü ¹: 11036



Ïðîãà íà ActionScript 2.0
Êàçàëîñü áû, ïðîñòåéøàÿ ïðîãðàììà. Âðîäå áû âñ¸ äîïèñàíî ïðàâèëüíî. Íå áóäåì áðàòü â ðàñ÷¸ò òî÷íîñòü âû÷èñëåíèÿ ìàòåìàòè÷åñêèõ ôóíêöèé cos, sin è ïð.
Âîçíèêàåò åäèíñòâåííàÿ ÏÐÎÁËÅÌÀ Ñ ÒÎ×ÊÎÉ! Ñðàáàòûâàåò ïî íåïîíÿòíîé ñõåìå.
Âîò ïðèìåð:
1 + 8.1 = 9.1 (âñ¸ ÎÊ)
8.1 + 1 = 8.11 (WTF?)
0.1 + 0.1 = 0.101 è ò.ä.
Ò.å. ïðè ââåäåíèè ñíà÷àëà äðîáíîãî ÷èñëà, à ïîòîì ëþáîãî äðóãîãî íå ðàáîòàåò. ×òî ñ ýòèì äåëàòü, ïîäñêàæèòå ïîæàëóéñòà!
Ìíå î÷åíü âàæíî êàê ìîæíî ñêîðåå äîâåñòè àëãîðèòì äî óìà è èñïîëüçîâàòü åãî â ÄÈÏËÎÌÅ! sad.gif
Êîä
// Îáúÿâëÿåì ïåðåìåííûå
var tablo = 0;
var num = 0;
var tochka = true;
var Numbers = 0;
var n = 1;
var Str = "";
var memory = null;
var operation = null;
// Îòêëþ÷àåì êíîïêó "ðàâíî"
But_RAVNO.enabled = false;
// Êîä äëÿ êíîïêè î÷èñòêè ýêðàíà
But_CLEAR.onPress = function() {
        tablo = 0;
        num = 0;
        tochka = true;
        Numbers = 0;
        n = 1;
        Str = "";
        But_RAVNO.enabled = false;
        block2(true);
        block(true);
        block3(true);
};
// Îáðàáîò÷èêè íàæàòèÿ êíîïîê ñ öèôðàìè
But_0.onPress = function() {
        num = 0;
        MyAdd();
};
But_1.onPress = function() {
        num = 1;
        MyAdd();
};
But_2.onPress = function() {
        num = 2;
        MyAdd();
};
But_3.onPress = function() {
        num = 3;
        MyAdd();
};
But_4.onPress = function() {
        num = 4;
        MyAdd();
};
But_5.onPress = function() {
        num = 5;
        MyAdd();
};
But_6.onPress = function() {
        num = 6;
        MyAdd();
};
But_7.onPress = function() {
        num = 7;
        MyAdd();
};
But_8.onPress = function() {
        num = 8;
        MyAdd();
};
But_9.onPress = function() {
        num = 9;
        MyAdd();
};
// Ôóíêöèÿ, îòâå÷àþùàÿ çà äîáàâëåíèå äåñÿòè÷íîé òî÷êè
But_TOCHKA.onPress = function() {
        if (tochka) {
                tochka = false;
                Str += ".";
        }
};
// Êîä äëÿ êíîïêè èçìåíåíèÿ çíàêà
But_ZNAK.onPress = function() {
        if (Str != 0 && Str != "") {
                Numbers *= -1;
                if (Str.substring(0, 1) != "-") {
                        Str = "-"+Str;
                } else {
                        Str = Str.substring(1);
                }
                if (Str.length<17) {
                        tablo = Str;
                } else {
                        tablo = Numbers;
                }
        }
};
// Ôóíêöèÿ, ôîðìèðóþùàÿ ïî íàæàòèÿì êíîïîê îïåðàíäû
function MyAdd() {
        if (tochka) {
                Numbers = Numbers*10+num;
        } else {
                Numbers += num/Math.pow(10, n);
                n++;
        }
        if (Str != 0) {
                Str = Str+num;
        } else {
                Str = String(num);
        }
        if (Str.length<17) {
                tablo = Str;
        } else {
                tablo = Numbers;
        }
}
// Îáðàáîò÷èêè ñîáûòèÿ íàæàòèÿ êíîïîê àðèôìåòè÷åñêèõ îïåðàöèé
But_PLUS.onPress = function() {
        calc("plus");
};
But_MINUS.onPress = function() {
        calc("minus");
};
But_UMN.onPress = function() {
        calc("umn");
};
But_DEL.onPress = function() {
        calc("del");
};
But_STEPEN.onPress = function() {
        calc("stepen");
};
// Ôóíêöèÿ, âûçûâàåìàÿ ïðè íàæàòèè êíîïêè àðèôìåòè÷åñêîé îïåðàöèè
function calc(operat) {
        memory = Numbers;
        Numbers = 0;
        Str = "";
        operation = operat;
        block(false);
        But_RAVNO.enabled = true;
        block2(true);
        block3(false);
}
// Êîä, ïðîèçâîäÿùèé âû÷èñëåíèÿ ïðè íàæàòèè êíîïêè "ðàâíî"
But_RAVNO.onPress = function() {
        var result = null;
        if (operation == "plus") {
                result = memory+Numbers;
        }
        if (operation == "minus") {
                result = memory-Numbers;
        }
        if (operation == "umn") {
                result = memory*Numbers;
        }
        if (operation == "del") {
                result = memory/Numbers;
        }
        if (operation == "stepen") {
                result = Math.pow(memory, Numbers);
        }
        Numbers = result;
        Str = result;
        tablo = result;
        block(true);
        block2(false);
        block3(true);
        But_ravno.enabled = false;
};
// Ôóíêöèÿ, âêëþ÷àþùàÿ èëè âûêëþ÷àþùàÿ êíîïêè îïåðàöèé
function block(par) {
        But_PLUS.enabled = par;
        But_UMN.enabled = par;
        But_MINUS.enabled = par;
        But_DEL.enabled = par;
        But_STEPEN.enabled = par;
}
// Ôóíêöèÿ, îòâå÷àþùàÿ çà àêòèâíîñòü êíîïîê ñ öèôðàìè
function block2(par) {
        for (var i = 0; i<=9; i++) {
                eval("But_"+i).enabled = par;
        }
        But_TOCHKA.enabled = par;
        But_E.enabled = par;
        But_PI.enabled = par;
}
// Îáðàáîò÷èêè íàæàòèÿ êíîïîê ìàòåìàòè÷åñêèõ ôóíêöèé
But_SIN.onPress = function() {
        func("sin");
};
But_COS.onRelease = function() {
        func("cos");
};
But_TAN.onPress = function() {
        func("tan");
};
But_LN.onPress = function() {
        func("ln");
};
But_ASIN.onPress = function() {
        func("asin");
};
But_ACOS.onPress = function() {
        func("acos");
};
But_SQRT.onPress = function() {
        func("sqrt");
};
But_ROUN.onPress = function() {
        func("roun");
};
// Ôóíêöèÿ, îòâå÷àþùàÿ çà âû÷èñëåíèÿ ïðè íàæàòèè êíîïêè ìàòåìàòè÷åñêîé ôóíêöèè
function func(par) {
        var result = null;
        if (par == "sin") {
                result = Math.sin(Numbers/180*Math.PI);
        }
        if (par == "cos") {
                result = Math.cos(Numbers/180*Math.PI);
        }
        if (par == "tan") {
                result = Math.tan(Numbers/180*Math.PI);
        }
        if (par == "ln") {
                result = Math.log(Numbers);
        }
        if (par == "asin") {
                result = Math.asin(Numbers)/Math.PI*180;
        }
        if (par == "acos") {
                result = Math.acos(Numbers)/Math.PI*180;
        }
        if (par == "sqrt") {
                result = Math.sqrt(Numbers);
        }
        if (par == "roun") {
                result = Math.round(Numbers);
        }
        tablo = result;
        Numbers = result;
        Str = String(result);
}
// Ôóíêöèÿ, îòâå÷àþùàÿ çà àêòèâíîñòü êíîïîê ìàòåìàòè÷åñêèõ ôóíêöèé
function block3(par) {
        But_SIN.enabled = par;
        But_COS.enabled = par;
        But_TAN.enabled = par;
        But_LN.enabled = par;
        But_ASIN.enabled = par;
        But_ACOS.enabled = par;
        But_SQRT.enabled = par;
        But_ROUN.enabled = par;
}
// Îáðàáîò÷èêè íàæàòèÿ êíîïîê ìàòåìàòè÷åñêèõ êîíñòàíò
But_PI.onPress = function() {
        Numbers = Math.PI;
        Str = String(Math.PI);
        block2(false);
        tablo = Math.PI;
};
But_E.onPress = function() {
        Numbers = Math.E;
        Str = String(Math.E);
        block2(false);
        tablo = Math.E;
};

Èñõîäíèê òóò http://rghost.ru/38702893
Âåðíóòüñÿ â íà÷àëî ñòðàíèöû
 
+Îòâåòèòü ñ öèòèðîâàíèåì äàííîãî ñîîáùåíèÿ
MustLive
ñîîáùåíèå 17.06.2012 - 00:01
Ñîîáùåíèå #2


Âåòåðàí êîíôåðåíöèè
*****

Ãðóïïà: Flash Zone Team
Ñîîáùåíèé: 4739
Ðåãèñòðàöèÿ: 10.03.2005
Èç: Êèåâ
Ïîëüçîâàòåëü ¹: 5



Öèòàòà
Ò.å. ïðè ââåäåíèè ñíà÷àëà äðîáíîãî ÷èñëà, à ïîòîì ëþáîãî äðóãîãî íå ðàáîòàåò. ×òî ñ ýòèì äåëàòü, ïîäñêàæèòå ïîæàëóéñòà!

VINegative

Ýòî ó òåáÿ â êîäå ñðàáàòûâàåò "ïðåîáðàçîâàíèå îïåðàöèè". Ò.å. ïîñëå äðîáíîãî ÷èñëà âìåñòî äîáàâëåíèÿ ñðàáàòûâàåò êîíêàòåíàöèÿ. Ñêîëüêî ÿ ñîçäàâàë êàëüêóëÿòîðîâ, òàêîãî ó ìåíÿ íå ñëó÷àëîñü. Òàê ÷òî óëó÷øàòü ñâîé êîä wink.gif.

Ïîìèìî îïåðàöèè äîáàâëåíèÿ áîëåå íèãäå òàêèõ ãëþêîâ íåò?  îïåðàöèè óäàëåíèÿ è ò.ä. (îáÿçàòåëüíî äåòàëüíî ïðîòåñòèðóé âñå îïåðàöèè). Åñëè íåò, òî çíà÷èò òîëüêî êîä äîáàâëåíèÿ óëó÷øàé.


--------------------
Best wishes & regards,
MustLive
Àäìèíèñòðàòîð ñàéòà
http://mlfun.org.ua
Âåðíóòüñÿ â íà÷àëî ñòðàíèöû
 
+Îòâåòèòü ñ öèòèðîâàíèåì äàííîãî ñîîáùåíèÿ

Îòâåòèòü â ýòó òåìóÎòêðûòü íîâóþ òåìó
1 ÷åë. ÷èòàþò ýòó òåìó (ãîñòåé: 1, ñêðûòûõ ïîëüçîâàòåëåé: 0)
Ïîëüçîâàòåëåé: 0

 



- Òåêñòîâàÿ âåðñèÿ Ñåé÷àñ: 19.01.2013 - 01:09