Ultraflip
Erfahrenes Mitglied
Hallo zusammen,
eine Bekannte bat mich für ihr Studium um Hilfe bei einer Aufgabe in C. Ich selbst bin allerdings eher in VBA zu Hause, habe aber bereits Erfahrung mit C++ gesammelt.
Die Aufgabenstellung scheint eigentlich nicht so schwierig:
Der Output soll wie folgt aussehen:
Die ersten Versuche dies darzustellen sehen wie folgt aus:
Allerdings bin ich mir sicher, dass die Aufgabe viiiieeel einfacher lösbar sein muss.
Der Umrechenteil ist leider noch komplett schleierhaft.
Ich hoffe jemand kann mir einen Tipp geben, wie (und mit welchen Funktionen) die Aufgabe gelöst wird!
Vielen Dank und LG
eine Bekannte bat mich für ihr Studium um Hilfe bei einer Aufgabe in C. Ich selbst bin allerdings eher in VBA zu Hause, habe aber bereits Erfahrung mit C++ gesammelt.
Die Aufgabenstellung scheint eigentlich nicht so schwierig:
- Frage eine postive Ganzzahl ab (unsigned int)
- Zur Konvertierung des Parameters soll die Funktion strtoul verwendet werden, wobei der zweite Parameter auf NULL und der dritte auf 0 gesetzt werden muss
- Umwandlung in Binärzahl bzw. BCD Code (siehe Output)
- Formatierte Ausgabe (siehe nachfolgend)
Der Output soll wie folgt aussehen:
Code:
Input: 101 - 0000 0000 | 0000 0000 | 0000 0000 | 0110 0101
BCD: 257 - 0000 0000 | 0000 0000 | 0000 0001 | 0000 0001
Die ersten Versuche dies darzustellen sehen wie folgt aus:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[50];
printf("Bitte geben Sie eine Zahl ein: ");
fgets(str, 50, stdin);
unsigned long int value;
value = strtoul( str, 0, 0 );
printf( "Wert des Strings %s : %u\n", str, value );
//mögliche Ausgabe Variante 1:
int i = 5;
printf("| %04d %04d | %04d %04d | %04d %04d | %04d %04d |\n\n",
i, i, i, i, i, i, i, i);
//mögliche Ausgabe Variante 2:
static const char string[] = "110000101";
int laenge = strlen(string);
int x = 1;
int y = 0;
int z = 0;
int j = 0;
int ausgabe[8];
//for(j = laenge-z*4; j > 0; j--)
//{
// ausgabe[i + x] = substring(j-4, 4,string);
// x++;
//}
printf("| %04d %04d | %04d %04d | %04d %04d | %04d %04d |\n\n",
ausgabe[8], ausgabe[7], ausgabe[6], ausgabe[5], ausgabe[4], ausgabe[3], ausgabe[2], ausgabe[1]);
system("PAUSE");
return 0;
}
Allerdings bin ich mir sicher, dass die Aufgabe viiiieeel einfacher lösbar sein muss.

Der Umrechenteil ist leider noch komplett schleierhaft.
Ich hoffe jemand kann mir einen Tipp geben, wie (und mit welchen Funktionen) die Aufgabe gelöst wird!
Vielen Dank und LG