Archief - [PROG]C++ Omzetten van binair naar decimaal

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

VergeX

Legacy Member
Hi all,

Om mijn kennis van C++ terug op te frissen (ik ben er ooit mee begonnen, maar veel te snel afgehaakt) heb ik zonet een programma gemaakt om decimale getallen om te zetten naar binaire getallen.

Dit programma werkt goed genoeg, maar nu wil ik net het omgekeerde doen.
Volgende code heb ik reeds:

Code:
#include <iostream>
using namespace std;

/* functie */
int binnaardec(int decimaal);

int main()
{
    int decimaal;
    
    cout << "Voor een binair getal in: ";
    cin >> decimaal;
    cout << "Omgezet naar een decimaal getal is dit: ";
    binnaardec(decimaal);
    cout << endl;
    cin.get();
}   

/* functie */
int binnaardec(int decimaal)
{
     int totaal = 0;
     int macht = 1;
     

     
     while( decimaal > 0)
     {
          totaal += decimaal % 10 * macht;
          decimaal = decimaal / 10;
          macht = macht * 2;
          }

     return totaal;
     cin.get();
}

Het probleem is dat het venster gewoon verdwijnt wanneer ik mijn binair getal heb opgegeven. Iemand een idee waaraan dit ligt?

Bavo aka Joske

Legacy Member
return totaal;
cin.get();

probeer om te wisselen alvast

Cycloon

Legacy Member
Code:
     return totaal;
     cin.get();

Deze cin.get() zal alvast niks meer doen na je return, wegdoen dus.
cin.get() gebruiken om je programma open te houden is eigelijk niet zo'n echt propere manier. Beter kan je gewoon via DOS naar je map met het bestand gaan en dan gewoon zo starten, dan zal het kadertje niet sluiten. Wil je het toch met een stukje code doen dan lijkt mij system("pause"); op het einde van je programma een betere keuze.

Een int main() sluit je trouwens af met "return 0", daarvoor staat die int voor main().

VergeX

Legacy Member
Bedankt! met die system("pause") heb ik het kunnen oplossen.

Volgende code doet het dus zonder problemen (voor zij die het interessant vinden).

Code:
#include <iostream>
using namespace std;

int binnaardec(int decimaal);
int main()
{
    int decimaal;
    
    cout << "Voor een binair getal in: ";
    cin >> decimaal;
    cout << "Omgezet naar een decimaal getal is dit: ";
    cout << binnaardec(decimaal);
    cout << endl;
    system("pause");
}   

/* functie */
int binnaardec(int decimaal)
{
     int totaal = 0;
     int macht = 1;
     

     
     while( decimaal > 0)
     {
          totaal += decimaal % 10 * macht;
          decimaal = decimaal / 10;
          macht = macht * 2;
          }

     return totaal;
}

Bavo aka Joske

Legacy Member
Niet zo geweldig interessant, nee :) Lol. Het is een begin, wel.

Cycloon

Legacy Member
Je "return 0;" staat er nog steeds niet, voor het besturingssysteem wordt het programma dus fout afgesloten.

Tyfius

Legacy Member
Cyc1oon zei:
Je "return 0;" staat er nog steeds niet, voor het besturingssysteem wordt het programma dus fout afgesloten.
Main is een uitzondering. De standaard specificeert hier niet de noodzaak van een return waarde en standaard zal die normaal 0 zijn.

Desondanks is het wel aangeraden om een degelijke return waarde terug te geven aan het OS.

killgore

Legacy Member
Tyfius zei:
Main is een uitzondering. De standaard specificeert hier niet de noodzaak van een return waarde en standaard zal die normaal 0 zijn.

Desondanks is het wel aangeraden om een degelijke return waarde terug te geven aan het OS.

is dat niet enkel in C zo dat de standaard default int en default return 0 oplegt?

Ik dacht dat het in pure C++ foute code was.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan