Dezimal in Dual - Verkettung zweier Quellcodes!
-
Hallo,
wir müssen für unseren Unterricht in der FH ein Programm aufstellen,
was Dezimal in Dualzahlen umrechnen kann, allerdings sollen negative Werte vorher übersprungen werden.
Unser Quelltext ist folgender:/* Hauptprogramm */ void main() { int fall, eins, zwei, drei, dezimal; printf ("(1) Dezimalzahl -> Dualzahl\n", &eins); printf ("(2) Dezimalzahl -> Oktalzahl\n", &zwei); printf ("(3) Dezimalzahl -> Hexadezimalzahl\n", &drei); printf ("Bitte geben Soe (1), (2) oder (3) ein: \n"); scanf ("%lf", &fall); printf ("=======================================================================\n"); if (fall == 1); /*Fall 1 Dezimalzahl in Dualzahl*/ while(1) { /* Endlosschleife, weil: 1 ist immer wahr */ printf("Bitte geben Sie eine positive Zahl ein: \n"); scanf("%d", &dezimal); if(dezimal > 0) /* Positive Zahl? */ break; /* ... dann raus aus der Schleife */ } }
und die umrechnung der dezimal in eine dualzahl:
#include <stdio.h> void dez_bin(int z); void main() { int dezimal, z; printf("Geben Sie die dezimale Zahl ein:\n\n"); scanf("%d",&dezimal); printf("\n================================================\n "); printf("\nDualzahl:\n\n"); dez_bin(dezimal); printf("\n"); } void dez_bin(int z) { if (z>0) { dez_bin(z/2); printf("%d",z%2); } }
wie verketten wir die beiden??
vielen danke
-
Du Compilierst beide Dateien zu einem Program. Dazu musst Du ein bisschen korrigieren
greetz, Swordfish
-
und wie macht man das???
-
Indem Du dir gedanken über Aufgabenteilung und Funktionen machst und im Hinterkopf hast: Nur eine Funktion in einem C Programm darf den namen 'main' haben.
Solltest Du auf konkrete Probleme stoßen und auch mindestens 2 Websites/FAQs/sonstwas dazu konsultiert haben, kannst du gerne eine Konkrete Frage stellen vgl. Eric Raymond - "Wie man Fragen richtig stellt".greetz, Swordfish
-
int fall, eins, zwei, drei, dezimal; printf ("(1) Dezimalzahl -> Dualzahl\n", &eins); printf ("(2) Dezimalzahl -> Oktalzahl\n", &zwei); printf ("(3) Dezimalzahl -> Hexadezimalzahl\n", &drei); printf ("Bitte geben Soe (1), (2) oder (3) ein: \n"); scanf ("%lf", &fall);
Den ganzen Block solltest du nochmal überdenken. "&eins, &zwei, &drei" ist vollkommener Quatsch und mit %lf ließt man keine ints ein.
-
bin anfänger,
also dann so
#include <stdio.h> /* Hauptprogramm */ void main() { int fall, dezimal; printf ("(1) Dezimalzahl -> Dualzahl\n"); printf ("(2) Dezimalzahl -> Oktalzahl\n"); printf ("(3) Dezimalzahl -> Hexadezimalzahl\n"); printf ("Bitte geben Sie (1), (2) oder (3) ein: \n"); scanf ("%d", &fall); printf ("=======================================================================\n"); if (fall == 1); /*Fall 1 Dezimalzahl in Dualzahl*/ while(1) { /* Endlosschleife, weil: 1 ist immer wahr */ printf("Bitte geben Sie eine positive Zahl ein: \n"); scanf("%d", &dezimal); if(dezimal > 0) /* Positive Zahl? */ break; /* ... dann raus aus der Schleife */ } }
-
Erstens: Was für einen Sinn soll denn die Endlosschleife haben? Wenn du sicherstellen willst, daß nur gültige Eingaben gemacht werden, stell die Gültigkeitsbedingung lieber als Abbruchkriterium hin (
do{...}while(dezimal>0);
).Zweitens: Jetzt mußt du in diesen if-Block natürlich noch den Aufruf der Funktion dez_bin() einbauen
Drittens: Es heißt immer noch "int main()".
-
CStoll schrieb:
...noch den Aufruf der Funktion dez_bin() einbauen
die man übrigens mit ein wenig modifikation auch für die anderen konvertierungen benutzen kann...