Kezdőoldal » Számítástechnika » Programozás » Alakítsunk át egy 10-es...

Alakítsunk át egy 10-es számrendszerben megadott számot 2-es számrendszerbe?

Figyelt kérdés

Ez a feladat C++-ban.


A fejemben megvan az algoritmus,csak nem tudom átültetni C++-ra.


Szóval:


Bekérem az adott számot,és amíg nem 0 osztogatom 2-vel.az eredményt feltöltöm 1 tömbbe,majd a tömb tartalmát kiíratom visszafelé.


Valószínűsítem hogy while ciklussal kell,bár az általam írt kód kifagy.



Tudna valaki segíteni?



2013. okt. 30. 19:49
1 2
 1/11 anonim ***** válasza:
Másold be az általad írt kódot és segítek.
2013. okt. 30. 19:55
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

#include <cstdlib>

#include <iostream>


using namespace std;


int main(int argc, char *argv[])


{

int szam,x,y,i,tomb[i];


cout<<"Szam: ";

cin>>szam;


x=0;

i=0;


do

{

i++;

x=(szam%2);

x=tomb[i]; }

while(szam>0);



system("PAUSE");

return EXIT_SUCCESS;

}

2013. okt. 30. 19:56
 3/11 anonim ***** válasza:
100%

Uhha, már korábban elvesztél a programozásban úgylátom.


A hibák:

* változó méretű tömböt nem lehet így létehozni. Fix méretű kell.

* a 'szam' változót nem csökkented sehol. Végtelen ciklusban marad.

* x = tomb[i] véletlen megfordult.

* a tömböt 1-től kezded feltölteni. Mi a baj a tomb[0]-val?



Alapvetően (legalább) 2 módszerrel lehet ezt megoldani, szerintem szebb tömb nélkül. (Addig hatványozol amíg több nem lesz a számnál, onnantól pedig a szam/hatvany értékét írod ki sorban. Így nem akad el nagyobb számokkal sem.

2013. okt. 30. 20:03
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:
Közben már átírtam a a tömböt...De amit írtál azt fullra nem értem sajnos...Mit hatványozok mivel?
2013. okt. 30. 20:05
 5/11 anonim ***** válasza:

int hatvany = 1;

while (hatvany*2 <= szam) hatvany*=2;

while (szam > 0) {

cout>>(szam/hatvany);

szam %= hatvany;

hatvany /= 2;

}


Így gondoltam, nem teszteltem.

2013. okt. 30. 20:11
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
Köszönöm,de 1 bekért 10-es számrendszerbeli számból kellene átalakítani.
2013. okt. 30. 20:14
 7/11 anonim ***** válasza:
Csak a lényeges részét írtam le. Ennyi sehogy sem futna le, de pótold ki az inicializálással, bekéréssel, lezárással...
2013. okt. 30. 20:17
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:

Bekérés:


cout << "Átváltás 10-es számrendszerből 2-esbe." << endl;

cout << "Adjon meg egy számot, és átváltom." << endl;

cout << "Kérem a számot:" << endl;

int n;

cin >> n;

2013. okt. 30. 20:33
Hasznos számodra ez a válasz?
 9/11 iostream ***** válasza:

Vaaaaagy... mivel tudjuk, hogy a gép kettes komplemensű bináris számként tárolja, simán kihasználhatjuk ezt és rámehetünk a bitműveletekre.


int szam = 123456789;


if (szam > 0)

{

bool hit = false;

int mask = 1 << 30;

//itt megkeressük a legnagyobb bitet. erre vannak egyszerű, platformfüggű műveletek, de azokat most ne használjuk ki

while (!hit)

{

hit = szam & mask;

mask >>= 1;

}

std::cout << '1';

while (mask > 0)

{

std::cout << int(bool(szam & mask));

mask >>= 1;

}

}

else

{

std::cout << '0';

}



Természetesen nem teszteltem, de tetszik.

2013. okt. 30. 23:12
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

Nekem is tetszik a megoldásod!

Leteszteltem, működik.


Egyébként kérdezőnek: sikerült valahogy (csinálhatod a "hagyományos" módszerrel, ha az könnyebben érthető. )

2013. okt. 31. 10:51
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!