Jak získat zbylé možnosti z této funkce?

Od: Datum: 21.06.13 11:52 odpovědí: 12 změna: 21.06.13 23:37

Jedná se o funkci (cyklus) "Zbytek po dělení" (Remainder after division)

Potřebuji získat správné výsledky pro toto

  1. Input Output
  2. 7f6d ?
  3. b0e0 ?
  4. f66e ?
  5. 6c1a ?
  6. 06ec ?
  7. 3948 ?
  8. 9158 ?
  9. c7e9 ?
  10. ecb8 ?
  11. dbb5 ?
  12. de7b ?
  13. 3af6 ?
  14. c3eb ?
  15. ed4b ?
  16. 0ea9 ?
  17. a472 ?
Pomocí tohoto
  1. Input Output
  2. 0 0
  3. 1 1
  4. 2 2
  5. 3 3
  6. 4 4
  7. 5 5
  8. 6 6
  9. 7 7
  10. 8 8
  11. 9 9
  12. a a
  13. b b
  14. c c
  15. d d
  16. e 0
  17. f 1
  18. ff 2
  19. fff 3
  20. ffff 4
  1. Jde o cyklus podobný hodinám. Pokud je 0:00 a přidám 20 hodin, tak bude 20:00. Ale pokud bude 0:00 a já přidám 30 hodin, tak bude 6:00 a ne 30:00.Protože hodiny se po 24 hodinách "resetují" zpět na 0:00.
  1. total = 0;
  2. foreach characters as char {
  3. total = total + char[value];
  4. }
  5. output = total % intTohex(14);
  1. První tři jsou takto
  1. 7f6d d
  2. b0e0 b
  3. f66e d

Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 21.06.13 13:28
avatar

Však tam tu funkci máte, ne?

Zjevně se nejedná o běžná hexadecimální čísla, kde další číslo zleva je vyššího řádu, ale o skupinu číslic, kde jejich hodnota je jejich součtem. Tedy vícero různých čísel dá stejnou hodnotu. f = 1e = 2d = 78 = 87 = d2 = 555 = 1239 atd. ffff = 4 krát f = 60 (desítkových)

Máte to modulo 14, proto f dává 1, ff dává 2, fff 3 a ffff 4, vlastně každé f má zbytek 1 a tyto se sečtou.

U ukázkových výsledků u konce to pak je (7 + f + 6 + d) % e = d

(b + 0 + e + 0) % e = (b + e) % e = b % e = b

(f + 6 + 6 + e) % e = (f + 6 + 6) % e = d

Mno.. a jak tedy vlastně zní dotaz? :)

Ohodnoceno: 2x
 
Od: rainkan
Datum: 21.06.13 14:57

Dotaz zní jak zjistit tyto zbylé

  1. 6c1a ?
  2. 06ec ?
  3. 3948 ?
  4. 9158 ?
  5. c7e9 ?
  6. ecb8 ?
  7. dbb5 ?
  8. de7b ?
  9. 3af6 ?
  10. c3eb ?
  11. ed4b ?
  12. 0ea9 ?
  13. a472 ?

Nějak mi nejde do hlavy Vaše rada

(7 + f + 6 + d) % e = d

(b + 0 + e + 0) % e = (b + e) % e = b % e = b

(f + 6 + 6 + e) % e = (f + 6 + 6) % e = d

Datum: 21.06.13 16:22
avatar

Spusťte si kalkulačku windows a přepněte na vědeckou.

V úvodu jsem psal, jak se k tomu dojde. Tohle už je jen aplikací těch poznatků v praxi.

Číslo 7F6D není desítkových 32621 v hexa, ale 7+F+6+D = desítkových 41.

41(d) % 14(d) = 13(d) = D(h)

U čísla B0E0 si můžete pomoci, protože 0 nemusíte příčítat vůbec, stejně tak E % E bude nula, takže to můžete ignorovat. Na první pohled je tedy zbytek B, protože B E, takže zbytek bude 1.

doplněno 21.06.13 16:22:

Ta uvedená funkce s total a foreach dělá přesně tohle, tedy je řešením té úlohy. Proto mi nebylo jasné, na co se ptáte, když tam řešení je :)

Ohodnoceno: 2x
 
Od: rainkan
Datum: 21.06.13 16:59

No já se v tom vůbec nevyznám, takže nemohu vědět že je to to řešení.

Otevřel jsem si kalkulačku a přepnul na vědeckou, ale nevím jak zapsat do příkladu ta písmena.

Datum: 21.06.13 21:26
avatar

Jsou nalevo od čísel, normálně na ně klikněte jako na cokoli jiného.

Také jdou psát na klávesnici.

doplněno 21.06.13 22:03:

No jo, omlouvám se, ona se jmenuje programátorská, ne vědecká.

Takhle, jak to napíšete a přepnete, si převedete běžné hexadecimální číslo na desítkové.

Tohle v zadání ale nejsou běžná hexadecimální čísla, jednotlivé řády se mezi sebou nenásobí, ale sčítají. Není to A3*16^3 + A2*16^2 + A1*16^1 + A0*16^0, ale A3*16^0 + A2*16^0 + A1*16^0 + A0*16^0.

Ohodnoceno: 2x
 
Od: rainkan
Datum: 21.06.13 21:44

Pokud na té kalkulačce zadám (7 + f + 6 + d) % e

tak mi to samo změní na ((7+6) Mod 13) Mod

a výsledek to neukáže žádný. Dělám to určitě špatně.

Od: rainkan
Datum: 21.06.13 21:47

Aha, měl jsem to přepnuté na vědeckou jak jste říkal, ale musím to mít na programátorské. Dostanu se k tomu že napíšu 7f6d a v Dec mi to ukáže 32621, ale co s tím dál?

Od: rainkan
Datum: 21.06.13 22:06

To jsem z toho naprostý blázen.

Od: rainkan
Datum: 21.06.13 22:09

Naprosto jsem se do toho zamotal.

Vepíšu do kalkulačy (programátorská, HEX) - 7F6D

Poté přepnu na DEC a získám - 32621

Ale co s tím dál?

Datum: 21.06.13 23:28
avatar

Napíšete do kalkulačky 7 + F + 6 + D =

Pak zmáčknete Mod a napíšete E (tj 14)

A dostanete výsledek.

Koukněte se znovu na to zadání a vyzkoušejte si, jak by vycházely ty zbytky (zejména poslední řádky s FF, FFF, FFFF). Opravdu to nejsou normální hexadecimální čísla a nelze k nim tak přistupovat.

doplněno 21.06.13 23:36:

Ne, napište: 7, plus, F, plus, 6, plus, D, rovnáse

---

Snad pro úplné pochopení (všechno následující je desítkově):

Běžně budete modulo 7 počítat tak, že

5 % 7 = 5

15 % 7 = 1

25 % 7 = 4

456 % 7 = 1

Potud snad jasné.

Ve vašem příkladě čísla ale fungují jinak. 456 není 4x100 + 5x10 + 6x1, ale 4x1 + 5x1 + 6x1 = 15.

Tedy výsledky s vašimi čísly budou takto:

5 % 7 = 5

15 % 7 = 6 (protože 1 + 5 = 6, 6 % 7 = 6)

25 % 7 = 0 (protože 2 + 5 = 7, 7 % 7 = 0)

456 % 7 = 1 (protože 4 + 5 + 6 = 15, 15 % 7 = 1)

Už nevím, jak líp to popsat, když ani ty mocniny šestnácti nahoře nepomohly :)

Ohodnoceno: 2x
 
Od: rainkan
Datum: 21.06.13 23:31

Napsal jsem 7F6D, zmáčknul MOD, vepsal E a stisknul =

Dostal jsem číslo 1.

Od: rainkan
Datum: 21.06.13 23:37

Už jsem na to přišel! Já blbec jsem psal to celé dohromady, místo abych to sčítal! Už to vidím! Proboha :D

Mockrát vám děkuji za Vaší trpělivost a snahu mi pomoci! Mnohokrát díky!

 

 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.