Konvertierung zwischen Zahlensystemen



  • Hallo,

    ich möchte bzw soll ein Programm programmieren welches Zahlen zwischen verschiedener Zahlensysteme kovertieren soll.

    Folgendes habe ich schon:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    using namespace std;
    
    char dezimalBeliebig(unsigned long originalDecimal, int resultBase, int i)
    {
         double hilfe=1.0;
         char result;
    
         result='0';
         if(originalDecimal/i>1.0)result='1';
         if(resultBase>2)if(originalDecimal/i>2.0)result='2';
         if(resultBase>3)if(originalDecimal/i>3.0)result='3';
         if(resultBase>4)if(originalDecimal/i>4.0)result='4';
         if(resultBase>5)if(originalDecimal/i>5.0)result='5';
         if(resultBase>6)if(originalDecimal/i>6.0)result='6';
         if(resultBase>7)if(originalDecimal/i>7.0)result='7';
         if(resultBase>8)if(originalDecimal/i>8.0)result='8';
         if(resultBase>9)if(originalDecimal/i>9.0)result='9';
         if(resultBase>10)if(originalDecimal/i>10.0)result='A';
         if(resultBase>11)if(originalDecimal/i>11.0)result='B';
         if(resultBase>12)if(originalDecimal/i>12.0)result='C';
         if(resultBase>13)if(originalDecimal/i>13.0)result='D';
         if(resultBase>14)if(originalDecimal/i>14.0)result='E';
         if(resultBase>15)if(originalDecimal/i>15.0)result='F';
         return result;
    }
    
    unsigned long beliebigDezimal(char original, int originalBase)
    {
       int dWert;
       if(original=='0')return 0;
       if(original=='1')return 1; 
       if(original=='2')return 2; 
       if(original=='3')return 3; 
       if(original=='4')return 4; 
       if(original=='5')return 5; 
       if(original=='6')return 6; 
       if(original=='7')return 7; 
       if(original=='8')return 8; 
       if(original=='9')return 9; 
       if(original=='A')return 10; 
       if(original=='B')return 11; 
       if(original=='C')return 12; 
       if(original=='D')return 13; 
       if(original=='E')return 14; 
       if(original=='F')return 15;
    }
    
    int main(int argc, char *argv[])
    {
        int auswahl;
        int originalBase, resultBase;
        char original[33], result[33];
        unsigned long originalDecimal, resultDecimal;
    
        printf("Konvertierung ganzer positiver Zahlen zwischen verschiedenen Zahlensystemen\n");
        printf("1 dezimal -------------------------> beliebiges Basis (2-16\n");
        printf("2 beliebiges Basis (2-16) ---------> dezimal\n");
        printf("3 beliebiges Ausgangsbasis (2-16)--> beliebige Zielbasis (2-16)\n");
        scanf("%d", &auswahl);
        printf("\n");
    
        if(auswahl==2 || auswahl==3)
        {
           printf("Ausgangsbasis:     ");
           scanf("%d",&originalBase);
        }
        if(auswahl==1 || auswahl==3)
        {
           printf("Zielbasis:     ");
           scanf("%d",&resultBase);
        } 
    
        printf("Ausgangszahl:   ");
        if (auswahl==1)
        {
           scanf("%u",&originalDecimal);
        }
        else
        {
           scanf("%s",&original); 
        }
        printf("\n");
    
        if(auswahl==1)
        {
           double h=originalDecimal;
           for(int i=0; i<33; i++)
           {
              result[i]=dezimalBeliebig(originalDecimal, resultBase, i);
              originalDecimal=originalDecimal-result[i];
              printf("%c\n",result[i]);
              if(originalDecimal%resultBase=0)break;
           }
           printf("Der Wert der Basis %d betraegt %s\n", resultBase, result);       
        }
    
        if(auswahl==2)
        {
           int n=strlen(&original[1]);
           unsigned long h;
           resultDecimal = beliebigDezimal(original[0],originalBase);
           for(int i=0; i<n; i++)
           {
              h= beliebigDezimal(original[i+1],originalBase);
              resultDecimal=resultDecimal*originalBase+h;
           }
           printf("Der Dezimalwert von %s der Basis %d betraegt %u\n", original, originalBase, resultDecimal);
        }                
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Nr.2 funktioniert bereits einwand frei. Nur bei Nr.1 weiss ich nicht so recht wie ich es machen soll. Hab zwar mal was versucht wie man sehen kann, funktioniert nur leider nicht so.

    Kann mir jemand helfen? 😃



  • Falsches Forum. Hier geht es um "C# und .Net".



  • Stimmt habe mich verschaut bitte löschen. Ist nun hoffentlich im richtigen.



  • Abgesehen davon, dass die Anfrage in keinsterweise Eigeninitiative zeigt, sind Crossposts nicht erwünscht.

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1649055-and-highlight-is-.html#1649055


Anmelden zum Antworten