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...
    🙂


Anmelden zum Antworten