Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Reszta z dzielenia, Bez uzycia operatora modulo
ksiadz
post 27.12.2005, 13:16:18
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 24.11.2003

Ostrzeżenie: (0%)
-----


Witam

Mam problem z zadaniem ktorego tresc jest nastepujaca: nalezy obliczyc reszte z dzielenia BEZ uzycia operatora modulo przez 97 z zalozeniem ze skrypt operuje na liczbach nie wiekszych niz 16 bitow. Celem zadania jest obliczenie wartosci IBAN czyli liczba dzielona bedzie miala 26 cyfr jezeli dobrze sie orjetuje. Problem polega w tym ze nie wiem jak sobie poradzic bez operatora... moze ktos podac wskazowke?


--------------------
If you can't find a program that does what you want it to do, then write your own.
Go to the top of the page
+Quote Post
bela
post 27.12.2005, 13:27:12
Post #2


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function modulo($dzielna, $dzielnik) {
  3. $suma = 0;
  4. while($suma < $dzielna) {
  5. suma += $dzielnik;
  6. }
  7. return $dzielna - $suma;
  8. }
  9. ?>

Tak napisane w minutę. Sprawdź czy działa.


--------------------
Go to the top of the page
+Quote Post
tsharek
post 27.12.2005, 13:30:05
Post #3





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

Ostrzeżenie: (0%)
-----


Witam,

Nie wiem czy dokładnie o to chodzi, ale resztę można obliczyć poprostu:

x/y=z+r

r=x-floor(x/y)*y

(chyba - mogłem się walnąć ale na prostym przykładzie działa:P)

Może to coś Ci pomoże, chociaż pewnie już dawno na to wpadłeśtongue.gif

Pozdrawiam,
Tsharek


--------------------
Go to the top of the page
+Quote Post
konradk2
post 28.12.2005, 22:57:50
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2005

Ostrzeżenie: (0%)
-----


ja bym polecał:
  1. <?php
  2.  
  3. function modulo($dzielna, $dzielnik){
  4. while($dzielna >= $dzielnik){
  5. $dzielna -= $dzielnik;
  6. }
  7. return $dzielna;
  8. }
  9.  
  10. ?>


funkcja poprzednika może nie dziłać prawidłowo monieważ pentla while wykona się raz za dużo dla tego sposobu lepiej by było użyć składni do... while
Go to the top of the page
+Quote Post
UDAT
post 29.12.2005, 15:19:28
Post #5





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

Ostrzeżenie: (0%)
-----


Cytat(tsharek @ 2005-12-27 12:30:05)
r=x-floor(x/y)*y


Ten sposób jest dużo szybszy od pętli gdyż ile ta pętla będzie się wykonoywała dla danych np.
97*10^25 ( liczba dzielona bedzie miala 26 cyfr) modulo 2 wykona 10^25 przebiegów i wyjdzie mu zero.

Odradzam pętle.

I jak w 16 bitach zapiszesz 26 cyfr questionmark.gif bo ja nie wiem biggrin.gif --> 2^16=~65536
Go to the top of the page
+Quote Post
konradk2
post 30.12.2005, 18:51:35
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2005

Ostrzeżenie: (0%)
-----


oczywiście to rozwiązanie jest naleprze im krutszy kod tym lepiej tongue.gif
pod warunkiem że łatwo go potem(potem znaczy po np 6miesiącach) przeczytać
Go to the top of the page
+Quote Post
tiraeth
post 30.12.2005, 19:22:35
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


bcmod" title="Zobacz w manualu php" target="_manual nie działa?
Go to the top of the page
+Quote Post
ksiadz
post 30.12.2005, 19:48:18
Post #8





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 24.11.2003

Ostrzeżenie: (0%)
-----


Cytat
bcmod nie działa?

Zadanie polega na NIE uzywaniu takich funkcji
Cytat
I jak w 16 bitach zapiszesz 26 cyfr questionmark.gif

Dziele cala liczbe na kilka mniejszych wyrazow. Poradzilem sobie dzieki wskazowce tsharek.


--------------------
If you can't find a program that does what you want it to do, then write your own.
Go to the top of the page
+Quote Post
ActivePlayer
post 30.12.2005, 21:10:36
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


ksiadz:
Cytat
jezeli dobrze sie orjetuje

konradk2:
Cytat
krutszy


sory za ot.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 01:30