Kezdőoldal » Számítástechnika » Programozás » Hogy kell a legközelebbi...

Hogy kell a legközelebbi ötösre kerekíteni C nyelven?

Figyelt kérdés

Egész számokat kell kerekíteni a legközelebbi öttel osztható számra a következő szabály szerint.

1;2-->alsó tízes

3;4;6;7-->5

8;9-->felső tízes

Néztem interneten ilyeneket, hogy "round", "ceil" meg "floor", de még nem tudtam kibogozni, hogy egyáltalán ezekkel kell-e, és ha igen, akkor hogyan.



2014. máj. 8. 11:13
1 2
 11/17 anonim ***** válasza:

"akkor most képzeld el, hogy i 16. 16 & 15 == 0. 16 + 0 == 16"


Akkor most nézd meg jobban, mit adok mihez.

Amúgy ez egy lehetőség a sok közül. Biztos nem tökéletes, de nem is akarom rátukmálni senkire, csak te akarsz belekötni. Csak nem sikerült. Egyetlen helyes észrevétel, hogy negatív számokkal nem foglalkoztam.


"Miért akarod nekem elmagyarázni, hogy mit csinál és mennyire gyors? Miért nézed hülyének a másikat ahelyett, hogy elgondolkondál az kritikán?"


Már észrevettem, hogy néha elszakad nálad a cérna, de azért próbáld moderálni magad kicsit! Egyrészt a "kritikád" arra alapult, hogy félreértetted a működését. Másrészt én pont oda szoktam figyelni a valódi kritikákra. Személyeskedéssel nem tudom mit akarsz megoldani.

2014. máj. 8. 16:27
Hasznos számodra ez a válasz?
 12/17 anonim ***** válasza:

...A tömböt tényleg elszúrtam.

Ettől függetlenül nem díjazom fröcsögést és a személyeskedő beszólásokat. Ha segíteni akarsz, akkor írj normális, civilizált választ, ha csak kötekedni akarsz, akkor inkább sétálj egyet.

Belőlem is a legrosszabbat hozod ki. Na léptem...

2014. máj. 8. 16:30
Hasznos számodra ez a válasz?
 13/17 iostream ***** válasza:

"int aKerek[] = {0,-1,-2,2,1,0,-1,-2,2,1,0,-1,-2,2,1,0}

unsigned int kerek(unsigned int i) {return i+aKerek[i&15];}"


i = 16:

i + aKerek[i&15] --> 16 + aKerek[0] --> 16


Nem a tömböt rontottad el, csak simán rossz volt a logikád. A kerekítés tizes számrendszerre működik (igazából ötös, de tizessel egyszerűbb látni), kettő hatványok sosem lesznek tizes számrendszerre esők, tehát ilyen egyszerű & kifejezéssel nem megoldható a probléma.


Nem személyeskedtem, rámutattam egy problémára, majd amikor arrogánsan visszafostál valamit, megkérdeztem, hogy ugyan miért nem nézed meg a kódot, ha már kritikát kaptál rá egy hozzáértőtől, HÁTHA nincs igazad. Na, EZ már kezd személyeskedés lenni, de lássuk be, rászolgáltál.

2014. máj. 8. 16:43
Hasznos számodra ez a válasz?
 14/17 anonim ***** válasza:

vagy csak sima maradékos osztással? oké fapados, de ez is egy megoldás:


a számot osztod 5-tel, 0, 1, 2 maradék esetén kivonod a maradékot. 3, 4 maradék esetén meg hozzáadsz 1-et vagy kettőt

2014. máj. 8. 18:49
Hasznos számodra ez a válasz?
 15/17 anonim ***** válasza:

#5 vagyok.


kerek = ((szam + 2)/5)*5;


Aki ettől gyorsabbat ír jelentkezzen.

2014. máj. 9. 13:18
Hasznos számodra ez a válasz?
 16/17 iostream ***** válasza:

Ha gép elé érek, leteszteljük ;)

Amúgy ugyanezt írtam én is.

2014. máj. 9. 13:38
Hasznos számodra ez a válasz?
 17/17 iostream ***** válasza:
Na, az osztós módszer rövidebb kódot generál, de lényegi különbség nincs sebességben, O3-mal főleg, nehéz egyáltalán olyan feladatot találni, ahol a kioptimalizálás megakadályozásának az overheadje nem jelentősen nagyobb magánál a feladatnál.
2014. máj. 9. 14:20
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!