Dezimal-Konvertierungen zu base-Nummern 2-16 (Binäre durch Hexadezimal)

Hey, ich Schreibe ein Programm, das konvertiert dezimal zahlen in jeder base unit von Binär zu hexadezimal (2,3,4,....,15,16). Dies ist, was ich habe, so weit, mit einer beliebigen Anzahl von 2 - 15 Ergebnisse in einer Endlosschleife. Ich Frage mich, ob Sie hatte einen Rat für den rest von meinem Projekt. Beim laufen, dieser wird Sie bitten, für zwei ganze zahlen, die erste sollte eine dezimale ganze Zahl > 0, die zweite sollte die Basis geben, die Sie wollen umgewandelt. Jede und alle Ratschläge für das ausfüllen dieser würde sehr geschätzt werden! Danke.

#include <stdio.h>
#include <stdlib.h>

int main(void){

  int x, y, z, c;

  printf("Please enter two integers: ");
  scanf("%d", &x);
  scanf("%d", &y);

  printf("%d\n", x);
  printf("%d\n", y);
  printf(" \n");

  if(y < 2 | y > 16){
    printf("You have entered incorrect information.\n");
           return 0;
  }
  else if(y > 1 && y < 16){

       while(z != 0){
       z = (x/y);
       c = (x%y);
       printf("%d\n", z);
       }
    printf("%d\n", z);
    printf("%d\n", c);
  }
      else if(y == 16){
        printf("%X\n", x);
      }

}

**********************Bearbeiten**********************

#include <stdio.h>
#include <stdlib.h>

int main(void){

  int x, y, z, c, i;

  printf("Please enter two integers: ");
  scanf("%d", &x);
  scanf("%d", &y);

  printf("%d\n", x);
  printf("%d\n", y);
  printf(" \n");

  if(y < 2 || y > 16){
    printf("You have entered incorrect information.\n");
           return 0;
  }
  else if(y > 1 && y < 17){

    while(x != 0){
       c = (x%y);
       x = (x/y);

       if( c > 1 && c < 10){
       printf("%d", c);

    }else if( c == 10){
        c = printf("A");
    }else if( c == 11){
        c = printf("B");
    }else if( c == 12){
        c = printf("C");
    }else if( c == 13){
        c = printf("D");
    }else if( c == 14){
        c = printf("E");
    }else if( c == 15){
        c = printf("F");
   }
  }
    printf("\n");
}

Dies ist der Fortschritt, den ich gemacht habe bisher. Meine Probleme sind: ich Schaffe es nicht, die Werte A-F, um die Ausgabe richtig zu stellen Nummern 10-15. Auch ich kann nicht die ganzen zahlen angezeigt werden, ist der richtige Weg. Ich denke, das ist eine einfache Lösung, sondern ein Befehl, den ich bin nicht verwendet, um noch. Danke Euch allen für Eure Hilfe, es ist schon sehr vorteilhaft.

*********Bearbeiten 2 ************

#include <stdio.h>
#include <stdlib.h>

int main(void){

  int x, y, z, c; //Sets up variables to be used in program

  printf("Please enter two integers: "); //Asks for user input
  scanf("%d", &x);
  scanf("%d", &y); //stores input

  printf("%d\n", x);
  printf("%d\n", y);
  printf(" \n");

  if(y < 2 || y > 16){
    printf("You have entered incorrect information.\n");
           return 0;
  } //bug checks

  else if(y > 1 && y < 17){

    while(x != 0){
       c = (x%y);
       x = (x/y); //Loops numbers until a 0 value is reached, can be used with
                  //any Base

     if( c == 10){
        c = printf("A");
    }else if( c == 11){
        c = printf("B");
    }else if( c == 12){
        c = printf("C");
    }else if( c == 13){
        c = printf("D");
    }else if( c == 14){
        c = printf("E");
    }else if( c == 15){
        c = printf("F");
    }else{
        printf("%d", c);
    }
     //Returns for each remainer option
    }
    printf("\n");
  }
}

OKay drittes mal ist der Charme. Das einzige problem habe ich mit meinem code jetzt ist, dass ich kann nicht herausfinden, wie machen es die Ausgabe in umgekehrter Reihenfolge, der richtigen Reihenfolge. Ignorieren ist mein zweiter edit, ich löste das Problem selbst. Jede Eingabe wäre toll. Ich weiß wirklich nicht, wie ich werde, um es zu bekommen zu kommen rückgängig gemacht. Vielen Dank an alle!

| sollte || ("oder sonst"). z ist nicht initialisiert und die Schleife ändert nicht den Zustand (endlos).
In Ihrem while (z != 0) Schleife, unter welchen Umständen z 0 werden? Passiert da was in der Schleife beeinflussen den Wert des z überhaupt?
Das ist Teil meines Problems. Ich will immer wieder teilen z, bis er 0 erreicht. Ich bin neu in C und ich bin verwirrt, wie ich generieren würde.
Ändern printf("%d\n", z) zu putchar("0123456789ABCDE"[z]). Machen while () - Schleife ein do ... while() drucken 0;
Dies wurde gerade gefragt. Siehe link: stackoverflow.com/questions/19072348/...

InformationsquelleAutor Ted Cost | 2013-10-02

Schreibe einen Kommentar