
Program pro převod soustav C++
Program, který převede číslo z desítkové soustavy do binární.
Můj návrh:
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "");
double zbytek;
int zadane_cislo;
cout << "*************************************************************" << endl;
cout << "Program pro převod mezi soustavami." << endl;
cout << "*************************************************************" << endl << endl;
cout << "Zadej číslo:";
cin >> zadane_cislo;
cout << endl;
for (int i = zadane_cislo; i != 0; zbytek)
zbytek = i % 2;
if (zbytek == 1)
cout << "1" << endl;
else
cout << "2" << endl;
system("PAUSE");
cout << endl;
return 0;
}
Nefunguje.
Proč?
Proč to nefunguje by bylo na delší příspěvek. Ono je to totiž úplně špatně.
Jak by jste to tedy realizoval?
Jde to napsat asi na ctyri radky.
C++ nedělám, ale inspiraci najdeš třeba zde.
Pokud to je domácí úkol, tak to nedoporučuji opisovat.
stackoverflow.com
Ještě můžeš být rád, že nefunguje. Kdyby chodil příkaz for, podmínkou i != 0 bys měl zaděláno na nekonečný cyklus, což je stejná ostuda, jak ve fotbale dostat housle
.
Skús prosím popísať svojimi slovami čo robí toto:
Možno Ti pomôže troška teórie:
To je špatně, nemá tam být 2, ale 0.
A zbytek je buď 1, nebo 0, tudíž chci, aby ho to vypsalo.
Je to ale asi zbytečný krok a stačilo by cout << zbytek.
Výborne!
Ešte sa zamysli nad týmto: "Nebereme ale zbytky z vrchu, ale od spodu"
Hlavne to vsetci vypisujete naopak, t.j. blbo to mate vsetci
Za prve chybaju ti zatvorky { } na oznacenie obsahu toho cyklu for. Tym padom tam cyklujes len to jedno delenie. A az si tam tie zatvorky doplnis tak zistis ze vypisane cislo je naopak.
Ked to chces urobit bez ukladania cifier, tak si najprv zistis maximalnu mocninu dvoch, a zmenusjes to a odcitavas.
unsigned int i;
//edit: opravil som podmienku
//edit2: este som opravil tu podmienku vo while, snad to uz je ok
Mám to kratší!
67ps
Jo, rekurzia. Ano to je lepsie (mna to nikdy nenapadne aj ked som to uz 5x takto videl tak to furt zabudnem :)