50 cyfr prograM

arigo
Użytkownik
Użytkownik
Posty: 852
Rejestracja: 23 paź 2004, o 10:17
Płeć: Mężczyzna
Lokalizacja: Lublin
Pomógł: 28 razy

50 cyfr prograM

Post autor: arigo »

ech....
rozroznij typy staloprzecinkowe od zmiennoprzecinkowych
excumbed
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 1 maja 2005, o 22:10
Płeć: Mężczyzna
Lokalizacja: NFSU.PL

50 cyfr prograM

Post autor: excumbed »

Rozwiązanie dla php - umożliwia dodawanie dowolnej długości liczb, nie muszą mieć tej samej długości. Zmienne z liczba,mi są zadeklarowane na początku, ale można je równie dobrze przekazać przez GET albo POST. Skrypt napisany na poczekaniu, ale powinien działać :D

Kod: Zaznacz cały

<?php

$a = '55';
$b = '22';



if(strlen($a) == strlen($b)) {
$var1 = $a;
$var2 = $b;
} else {
$var1 = (strlen($a) > strlen($b)) ? $a : $b;
$var2 = (strlen($a) < strlen($b)) ? $a : $b;
}

$var2 = str_pad($var2, strlen($var1), '0', STR_PAD_LEFT);
$next = 0;

for($i=(strlen($var2)-1); $i>=0; $i--) {
$res = $var1[$i] + $var2[$i] + $next;
settype($res, 'string');
if($res>9) {
$add = $res[1];
$next = $res[0];
} else {
$add = $res;
$next = 0;
}
$total .= $add;
}

$total = ($next == 0) ? strrev($total) : $next . strrev($total);
echo $total;

?>
//EDIT: drobna poprawka w kodzie ...
Ostatnio zmieniony 3 maja 2005, o 21:48 przez excumbed, łącznie zmieniany 2 razy.
MakFly
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 24 kwie 2005, o 14:41
Płeć: Mężczyzna
Lokalizacja: Końskie

50 cyfr prograM

Post autor: MakFly »

A czy da się zrobić tak, żeby po wejściu na stronę kliknąć (np. na jakiś link) i rozpocząć oeracje na jakiś dużych liczbach, zamknąć stronę i następnego dnia po wejściu na stronę obejrzeć rezultat działania z poprzedniego dnia Troszki zagmatwałem . Jeżeli ktoś nie zrozumiał to spróbuje prościej: jak zrobić żeby po uruchomieniu skryptu i zamknięciu strony działania w skrypcie nadal się wykonywały, a po zakończeniu zapisały np. do pliku.
droopy
Użytkownik
Użytkownik
Posty: 335
Rejestracja: 21 sty 2005, o 13:51
Płeć: Mężczyzna
Lokalizacja: Wrocław / Suchedniów
Pomógł: 2 razy

50 cyfr prograM

Post autor: droopy »

MakFly, nie da się tak, musisz mieć otwarte okno przeglądarki żeby skrypt się wykonywał, jeśli skrypt ma się wykonywać ponad 60 sekund to nie zapomniej przestawić limitu czasowego, i po trzecie php jest małowydajny jeśli chcesz coś naprawdę dużego zrobić.... najlepiej to byłoby c++
MakFly
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 24 kwie 2005, o 14:41
Płeć: Mężczyzna
Lokalizacja: Końskie

50 cyfr prograM

Post autor: MakFly »

ok. chodziło mi czy coś takiego da się zrobić, bo kiedyś na jakiejś stronie widziałem coś takiego: wprowadzasz zaszyfrowane hasło (hash) i za kilka dni (ewentualnie kilka godzin) wchodzisz ponownie i masz hasło. Więc jak to działa Na pewno nie wykorzystuje kontrolki ActiveX (jeżeli za jej pomocą dałoby się to osiągnąć )
excumbed
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 1 maja 2005, o 22:10
Płeć: Mężczyzna
Lokalizacja: NFSU.PL

50 cyfr prograM

Post autor: excumbed »

Jeżeli masz shella lub hosting z jakimś panelem (DA/cpanel) to możesz ustawić cron'a aby skrypt sam się odpalił i wykonał o danej godzinie. Ale imho jak już masz shella to lepiej to napisać w jakimś "normalnym" do tego języku ;]
MakFly
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 24 kwie 2005, o 14:41
Płeć: Mężczyzna
Lokalizacja: Końskie

50 cyfr prograM

Post autor: MakFly »

znasz jakiś DARMOWY hosting, który oferuje cron'a :?: Co masz na myśli pisząc normalnym języku :?: Chodzi Ci o C++ :?: Jak uruchomić program napisany w C++ na jakimś koncie WWW, żeby zrobił to co pisałem wcześniej.
droopy
Użytkownik
Użytkownik
Posty: 335
Rejestracja: 21 sty 2005, o 13:51
Płeć: Mężczyzna
Lokalizacja: Wrocław / Suchedniów
Pomógł: 2 razy

50 cyfr prograM

Post autor: droopy »

a nia możesz tego na swoim kompie puścić??
Gambit
Użytkownik
Użytkownik
Posty: 123
Rejestracja: 8 wrz 2004, o 22:17
Płeć: Mężczyzna
Lokalizacja: Łowicz
Podziękował: 2 razy

50 cyfr prograM

Post autor: Gambit »

W Javie z działaniem na dużych liczbach nie ma problemu, ponieważ w standardowej biblitece są klasy: BigInteger i BigDecimal, odpowiednio do działań na dowolnie dużych liczbach całkowitych i zmienno pozycyjnych. Dzięki temu dodawanie liczb zajmuje tylko linijkę :

Kod: Zaznacz cały

String s = "23423453454234521345458475845945454312";
String s2 = "23127667865486463424525784900434252452452";
BigInteger result = new BigInteger(s).add(new BigInteger(s2));
Wniosek: Uczcie się Javy
MakFly
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 24 kwie 2005, o 14:41
Płeć: Mężczyzna
Lokalizacja: Końskie

50 cyfr prograM

Post autor: MakFly »

droopy problem właśnie w tym że nie moge na swoim kompie zarzucić ani serera, ani samego programu. Proszę o pomoc w tym co podałem.

Gambit ale w Javie są też funkcje do mnożenia, dzielenia, dzielenia modulo itd. I napisz jak szybko działałby taki skrypt, na pewno o wiele wolniej niż np. w C++ operując na stringach
droopy
Użytkownik
Użytkownik
Posty: 335
Rejestracja: 21 sty 2005, o 13:51
Płeć: Mężczyzna
Lokalizacja: Wrocław / Suchedniów
Pomógł: 2 razy

50 cyfr prograM

Post autor: droopy »

a jaki ty program chcesz zrobić?

bo jeśli chodzi o darmowe konta, to wcale bym się nie zdziwił, gdyby nie dało się np. przedłużyć czasu wykonywania skryptu, albo gdyby cie wywalili za takie długie zajmowanie serwera....
Gambit
Użytkownik
Użytkownik
Posty: 123
Rejestracja: 8 wrz 2004, o 22:17
Płeć: Mężczyzna
Lokalizacja: Łowicz
Podziękował: 2 razy

50 cyfr prograM

Post autor: Gambit »

MakFly pisze: Gambit ale w Javie są też funkcje do mnożenia, dzielenia, dzielenia modulo itd. :?:
Jasne.
MakFly pisze: I napisz jak szybko działałby taki skrypt, na pewno o wiele wolniej niż np. w C++ operując na stringach :!:
Program, a nie skrypt - Java to nie język skryptowy. Klasy matematyczne i same działania matematyczne są w Javie b. zoptymalizowane (klasy np. wykorzystują natywne biblioteki napisane w C), a więc poślizg wynosi nie więcej niż 1,5-2x. A poza tym klasy BigInteger i BigDecimal wewnętrznie nie operują na String'ach.
ODPOWIEDZ