Problem mit Umrechnungspogram

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit Umrechnungspogram

    Hey ho ich bin neu hier im Forum,

    also erstmal hallo!!

    Ich muss meinem Kumpel helfen seine Hausaufgaben zu machen. Der hat noch weniger Plan von C als ich. Naja er muss ein Programm schreiben das von Dezimal in Binär, Oktal und Hexadezimal umrechnet. Für die Umrechnung von Dezimal in Oktal und Hexadezimal gibt es in C ja Bibliotheksfunktionen. Das Umrechnen von Dezimal in Binärzahlen gibs aber wohl nicht.

    Und genau da liegt auch das Problen. Den Rest des Programms haben wir uns selbst zusammengebastelt und der funktioniert so weit auch aber der Teil mit den Binärzahlen ist aus irgendnem Programm kopiert. Da ich wie gesagt selber kaum Plan von C habe ist wahrscheinlich nur eine ganz kleine Sache falsch die ich ständig übersehe zudem Blick ich durch den Code von der Funktion überhaupt nicht durch.

    Naja wär super wenn ihr mir/uns da weiterhelfen könntent und mal in den Code reinschaut:(es geht um die Funktion Dez_Dual)

    Quellcode

    1. #include <stdio.h>
    2. #include <math.h>
    3. int main ()
    4. {
    5. char auswahl,ergebnis[33], a[33],b[33],dual[33],Hex[33],Okt[33],ant='j';
    6. long dez,dezi;
    7. void Dez_Dual(long,char *);
    8. void Dez_Hex();
    9. void Dez_Okt();
    10. while (ant=='j')
    11. {
    12. printf(" ---------------------------------------------------------------\n");
    13. printf(" Umwandlungen von Dezimal in Dual, Hexadezimal oder Oktalzahlen\n");
    14. printf(" maximale Eingabe der Dezimalzahl von 2147483647\n ");
    15. printf(" ---------------------------------------------------------------\n\n");
    16. printf(" Umwandlung von einer natuerlichen Zahl ... \n\n");
    17. printf(" (1) ... in eine Dualzahl\n");
    18. printf(" (2) ... in eine Hexadezimalzahl\n");
    19. printf(" (3) ... in eine Oktalzahl\n");
    20. do
    21. {
    22. printf(" Bitte entsprechende Wahl (1/2/3) eingeben: ");
    23. scanf ("%c",&auswahl);
    24. if (auswahl!='1' && auswahl!='2' && auswahl!='3');
    25. printf("\n Falsche Eingabe! Entweder 1, 2 oder 3!\n\n");
    26. }
    27. while ( auswahl=='1'|| auswahl=='2' || auswahl=='3');
    28. if(auswahl=='1')
    29. { printf(" ------------------------------------\n");
    30. printf(" Umrechnung Dezimalzahl in Dualzahl\n");
    31. printf(" ------------------------------------\n\n");
    32. printf(" Ergebnis mit maximal 32 Stellen!\n\n");
    33. printf(" Dezimalzahl: ");
    34. scanf (" %c",&dez);
    35. Dez_Dual(dez,b);
    36. printf("%d" " Dualzahl: ", &b);
    37. }
    38. if(auswahl=='2')
    39. {
    40. Dez_Hex();
    41. }
    42. if(auswahl=='3')
    43. {
    44. Dez_Okt();
    45. }
    46. printf("\n\n\n Noch einmal (j/n)? ");
    47. scanf("%c",& ant);
    48. printf("\n\n");
    49. }
    50. return 0;
    51. }
    52. void Dez_Dual(long dez,char b[])
    53. {
    54. int i,k,ergebnis;
    55. while (b!=0)
    56. {
    57. ergebnis[i]=b%2;
    58. b=b/2;
    59. i=i+1;
    60. for(k=i-1;k>=0;k=k-1)
    61. { /*Ausgabe der Binärzahl*/
    62. printf(" %d ",ergebnis[k]);
    63. printf (" \n\n");
    64. }
    65. }
    66. }
    67. void Dez_Hex()
    68. {
    69. long dezi;
    70. printf(" Ergebnis mit maximal 32 Stellen!\n\n");
    71. printf(" Dezimalzahl: ");
    72. Scanf("%c",&dezi);
    73. printf(" Hexadezimalzahl: %X\n",dezi);
    74. }
    75. void Dez_Okt()
    76. {
    77. long dezim;
    78. printf(" Ergebnis mit maximal 32 Stellen!\n\n");
    79. printf(" Dezimalzahl: ");
    80. Scanf("%c",&dezim);
    81. printf(" Oktalzahl: %o\n",dezim);
    82. }
    Alles anzeigen
  • hi,

    ob die standardbibliotheken wirklich gewollt waren??
    hier hast du ne andere methode, die du dir auch so anpassen kannst, dass die andere zahlensystem berechnet:

    Quellcode

    1. char hex[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    2. int zahl=100, basis=2, rest;
    3. String ergebnis="";
    4. do
    5. {
    6. printf("%d / %d", zahl, basis);
    7. rest = zahl;
    8. zahl = zahl / basis;
    9. rest = rest - (zahl * basis);
    10. printf(" = %d Rest: %d\n", zahl, rest);
    11. ergebnis = hex[rest]+""+ergebnis;
    12. } while(zahl > 0);
    13. printf("%s", ergebnis);
    Alles anzeigen
  • @ d0nUt

    der weg mit den standardbibliotheken ist wohl der einfachste und kürzeste, wie gesagt so viel ahnung hab ich nicht mit c, damit funktionierts aber.

    die umrechnung von dezimal in hexal funktioniert ja bereits wenn du jetzt noch ne lösung für die umrechnung von dezimal in binär hast wäre das super

    also wie ich dasseh ist das ne umrechnung von dezimal in hexal oder nicht? keine ahnung!