Hoi allemaal,
ik ben voor school bezig, met de volgende opdracht:
Ik dacht dat het algoritme hiervan niet zo moeilijk is, namelijk:
nDecimal = 2 * nDecimal + nBinair
Hierbij is nBinair het binaire getal cijfer voor cijfer ingevoerd. En op deze manier krijg je bij 100101 netjes 37 eruit.
Maar nu moet ik het in C programmeren, en dat ging me nog niet helemaal goed. Nu heb ik woensdag weer les, en kan ik het dan vragen. Maar als ik het dan in dat uurtje les niet afkrijg, dan ben ik weer een week later met inleveren en is m'n cijfer weer lager..
De code die ik al heb is als volgt:
[CPP]
/* INCLUDES: */
#include <stdio.h>
#include <math.h>
#include <conio.h>
/* MAINPROGRAM: */
int main()
{
char chAgain = 'y';
printf("Welkom,\n");
while(chAgain == 'y')
{
int nDecimal = 0, nBinair = 0;
printf("\nGeef een binair getal: ");
while(nBinair == 0 || nBinair == 1)
{
nDecimal = 2 * nDecimal + nBinair;
nBinair = getche();
}
printf("\nHet decimale getal is: %d", nDecimal);
printf("\nDo you want to run this program again? [y/n]: ");
chAgain = getche();
printf("\n");
}
return(0);
}
[/CPP]
Ik heb geprobeerd om aanhalingstekens om de 1 en 0 te zetten van nBinair. Maar dat gaat dan ook niet goed. Want dat had ik ook bij "int nDecimal = 0" staan. En dan werd nDecimal 48??
Hoe kan het dat dat niet goed gaat? En wat kan ik eraan doen?
ik ben voor school bezig, met de volgende opdracht:
Code:
Een binair getal kan omgezet worden naar een decimale waarde, door tijdens de invoer hiervan telkens met 2 te
vermenigvuldigen en er eventueel een 1 bij op te tellen.
Bijvoorbeeld: 100101 > 37 als volgt:
Invoer Decimaal
1 > 2 * 0 + 1 = 1
0 > 2 * 1 + 0 = 2
0 > 2 * 2 + 0 = 4
1 > 2 * 4 + 1 = 9
0 > 2 * 9 + 0 = 18
1 > 2 * 18 + 1 = 37
Schrijf een programma, waarbij het binaire getal karakter na karakter wordt ingevoerd [gebruik de functie: getche() ]
en waarbij in een while() lus de decimale waarde wordt berekend, tot een ander karakter dan een ‘0’ of een ‘1’ wordt
ingevoerd, waarna het decimale getal op het scherm wordt getoond.
Ik dacht dat het algoritme hiervan niet zo moeilijk is, namelijk:
nDecimal = 2 * nDecimal + nBinair
Hierbij is nBinair het binaire getal cijfer voor cijfer ingevoerd. En op deze manier krijg je bij 100101 netjes 37 eruit.
Maar nu moet ik het in C programmeren, en dat ging me nog niet helemaal goed. Nu heb ik woensdag weer les, en kan ik het dan vragen. Maar als ik het dan in dat uurtje les niet afkrijg, dan ben ik weer een week later met inleveren en is m'n cijfer weer lager..
De code die ik al heb is als volgt:
[CPP]
/* INCLUDES: */
#include <stdio.h>
#include <math.h>
#include <conio.h>
/* MAINPROGRAM: */
int main()
{
char chAgain = 'y';
printf("Welkom,\n");
while(chAgain == 'y')
{
int nDecimal = 0, nBinair = 0;
printf("\nGeef een binair getal: ");
while(nBinair == 0 || nBinair == 1)
{
nDecimal = 2 * nDecimal + nBinair;
nBinair = getche();
}
printf("\nHet decimale getal is: %d", nDecimal);
printf("\nDo you want to run this program again? [y/n]: ");
chAgain = getche();
printf("\n");
}
return(0);
}
[/CPP]
Ik heb geprobeerd om aanhalingstekens om de 1 en 0 te zetten van nBinair. Maar dat gaat dan ook niet goed. Want dat had ik ook bij "int nDecimal = 0" staan. En dan werd nDecimal 48??
Hoe kan het dat dat niet goed gaat? En wat kan ik eraan doen?