To dotyczyli poprzedniej, słabo przemyślanej wersji. W tej możesz dać np. “PoleWyniku.innerHTML.length” i pójdzie. Ciekawe jest to że bardzo dziwnie ten skrypt reaguję na podanie: " x", wg mnie powinien być błąd, ale tak nie jest.
Mam pytanie dotyczące rozpoznawania znaków przez ten skrypt. Jak można przypisać danym znakom odpowiednie działanie i ew. podmieniać znaki. Tzn. skrypt ten nie obsługuje pierwiastków ani potegowania, nie reaguje na ^. Chciałbym przypisać znakowi
funkcję potegowania a
pierwiastek. Jest tylko problem. Nie wiem jak wyciągnąć z wartości pola input text jakikolwiek pojedyńczy znak i nadać mu matematyczne znaczenie. Dodatkowo jeśli udało by się wyciągnąć te znaki to czy wie ktoś jak można przypisać automatyczną zamianę znaku
powoduje to częste błedy jeśli ktoś uzywa klawiatury numerycznej.
Znalazłem kilka skryptów ale nie wiem za bardzo jak ich w tym przypadku użyć:
var t="aac";
var index= t.indexOf('a');
var out = "";
for(var i=0;i
out = out + t.charAt(i);
}
out = out + 'b';
for(var i=index+1;i
out = out + t.charAt(i);
}
Ten skrypt oblicza wyrażenie w javascript jeżeli i nic więcej z tym nie zrobisz. Pierwiastek jednak oblicza, użyj Math.sqrt(4) jeżeli chcesz aby obliczało się wyrażenie wg twoich zasad to musisz napisać kompilator wyrażeń arytmetycznych z prawdziwego zdarzenia, za pomocą odwrotnej polskiej notacji wbrew pozorom nie jest to trudne.
Co do zamiany:
while(true)
{
var p=param.indexOf(',');
if(p<0) break;
param=param.substring(0,p-1)+'.'+param.substring(p+1);
}
proktor86 , ciekawe jak by ty zapisałeś tą pętle wg swoich zasad
Niestety obydwa kody nie działają. wstawiałem go przed function() za przed var PoleWyniku i albo wynik wogóle się niechciał wyswietlić albo nadal w poprzedniej postaci. Przecinek nadal jest przecinkiem a znaki uwzgledniane w działaniu są tylko te za nim
P.S. Jesli chodzi o pisanie jakiegokolwiek kompilatora. Moze to i nie jest jakoś skomplikowane ale chyba jednak przekracza mozliwości ucznia II klasy gimnazjum Programowanie w czym innym niż php,htmla,js,css itp. to niestety jeszcze nie mój poziom :?
Piotrek_Fajny, powinieneś zacząć analizować to co podajemy, a nie czekać jak ktoś za ciebie to zrobi. Zresztą nie jestem pewien co do słuszności tego “udoskonalenia”, ponieważ już się pozbyłeś funkcji pow(). W poprzednim wariancie mogłeś dać Math.pow(2.5,3) wyszło by 15.625 a teraz będzie błąd. :?
Kombinowałem trochę z tymi operatorami i widzę,że są one jedynym sensownym wyjściem. Zrobiłem odpowiednią tabelkę i przyciski z opisem po wciśnięciu którego w polu wyrażenia pojawia się operator ze zmienną x. Chciałbym trochę ułatwić pracę mniej rozgarnietym uzytkownikom. Dodałem pprzed przyciskiem od zmiennej dwa pola tex do których mają być wpisywane zmienne. Nie wiem tylko jak ustawić wysyłanie tak aby po wysłaniu zmiennej z pola obok objaśnienia pojawiała się w polu wyrazenia nie kasując jego poprzedniej zawartości. Poniżej to co udało mi się jak narazie napisac:
Kalkulator
Wyrażenie matematyczne:
Jesli chcesz wykonywać działania matematyczne na tym kalkulatorze musisz skorzystać z operatorów.
Poniżej znajduje się kilka przykładów.
Pamietaj!
Jesli chcesz oddzielić jedności od części dziesiętnych użyj kropki, NIE przecinka.
| Odejmowanie : | | - |
| Dodawanie : | | + |
| Mnożenie : | | * |
| Dzielenie | | / |
| Potęgowanie x do potęgi y : | | |
| Pierwiastket kwadratowy z liczby x : | | |
| Zaokrąglanie liczby x do liczby całkowitej : | | |
| Zwraca mniejszą z liczb x i y : | | |
| Zwraca logarytm naturalny liczby x , podstawą logarytmu jest stała Eurela : | | |
| Zwraca sinus liczby x , aby obliczyć sinus z kata, podanego w stopniach należy użyc Math.sin(x*Math.PI/180) : | | |
| Zwraca cosinus liczby x , jeśli kąt podany jest w stopniach należy postapić tak jak wyżej : | | |
| Zwraca tangens liczby x , jeśli kąt podany jest w stopniach należy postapić tak jak wyżej : | | |
| | | |
[/code]
Druga rzecz.
Chodzi o to aby stworzyć historię obliczeń. Coś takiego jak w Symbianie. Ja zrobiłbym to tak. dotychczasowa zawartosć PoleWyniku.innerHTML