Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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č?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Za prve chybaju ti zatvorky { } na oznacenie obsahu toho cyklu for. Tym padom tam cyklujes len to je…
MM.. 18.11.2015 17:00
MM..
Mám to kratší! :-) 67ps
MaSo 18.11.2015 17:10
MaSo
Jo, rekurzia. Ano to je lepsie (mna to nikdy nenapadne aj ked som to uz 5x takto videl tak to furt z… poslední
MM.. 18.11.2015 17:13
MM..

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;

for(i=1; i<(UINT_MAX/2); i*=2)
  if(i>=zadane_cislo)
    break;

if(i>zadane_cislo && i!=1) i/=2;  // len na zrusenie zbytocnej nuly na zaciatku za urcitych okolnosti

while(i != 0)
{
  if(zadane_cislo >= i)
  {
    cout << "1";
    zadane_cislo -= i;
  }
  else 
    cout << "0";
  i/=2;
}

//edit: opravil som podmienku
//edit2: este som opravil tu podmienku vo while, snad to uz je ok :-)

Zpět do poradny Odpovědět na původní otázku Nahoru