Gast
#4582521
Hallo,
ich bin mit einer Aufgabe am verzweifeln, ich soll eine max. 16stellige
Dualzahl per getchar einlesen und als Dezimalzahl ausgeben, ich habe
auch schon ein Proramm nur läüft es noch nicht so richtig, vllt kann mir
ja einer helfen:
void main (void) // Start des Hauptprogramms
{
unsigned char Binaer[16]; // fuer 16-stellige Binarzahlen
unsigned int Zahl; // fuer Dezimalzahl
/***********************************************************************
*****************/
/* Initialisierung der seriellen Schnittstelle 0 des CC03ers
*/
/* Schnittstellenparameter: 9600Baud, 8 Datenbit, 1 Stopp-Bit
asynchroner Betrieb */
/***********************************************************************
*****************/
SCON=0x52;
TMOD |=0x20;
TH1=0xfd;
TR1=1;
TI=1;
/* Bildschirm löschen */
printf("\x1b\x48\x1b\x4a");
/* Begrueßungstext */
printf("Binaerzahlenumrechnung in eine Dezimalzahl \n\n");
printf("\n\nBitte eine max. 16 stellige Binaerzahl eingeben mit
der Endung b: ");
do {
Binaer[16] = getchar(); //Dualzahleingabe per
getchar
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[1] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Binaer[16] = getchar();
putchar(Binaer[16]);
Binaer[0] = Binaer[16] - 0x30;
Zahl = Binaer[0] * 32768 +
//Umrechnung
Binaer[1] * 16384 +
Binaer[2] * 8192 +
Binaer[3] * 4096 +
Binaer[4] * 2048 +
Binaer[5] * 1024 +
Binaer[6] * 512 +
Binaer[7] * 256 +
Binaer[8] * 128 +
Binaer[9] * 64 +
Binaer[10] * 32 +
Binaer[11] * 16 +
Binaer[12] * 8 +
Binaer[13] * 4 +
Binaer[14] * 2 +
Binaer[15] * 1;
}
while(!(Binaer[16]=='b'));
// Hier geht´s weiter nach der Schleife
printf("\n\n Die Dezimalzahl lautet: %u !",Zahl);
while (1); // Endlosschleife zum ordnungsgemäßen
Abschluß des Programms
} // Ende des Hauptprogramms, d.h. Ende
des gesamten Programms