Umwandlung char zu int



  • Hi ich habe folgende Aufgabe bekommen:

    -eine ganze Zahl in einem beliebigen Zahlenformat bis zur Basis 20 eingegeben werden kann. 
    -diese Zahl in ein beliebiges Zahlenformat bis zur Basis 20 gewandelt wird 
    -diese gewandelteZahl ausgegeben wird.
    

    Dazu habe ich folgendes Programm geschrieben. Es funktioniert auch, nur habe ich das Problem, dass ich keine zahlen größer als 9 eingeben kann, weil ich nicht geschafft habe die Umwandlung von char zu int zu realisieren und nicht weiß, wie ich in einem Array sowohl char als auch int eingeben kann. Hoffe ihr könnt mir helfen.

    Martin

    # include <iostream>
    #include <cmath> 
    using namespace std;
    
    int main()
    {
    const int max=8;
    int daten[max]={0};
    int basis,zahl=0,y=0,zaehler=0,summe=0;
    double n=10;
    cout<<"Zahl eingeben"<<endl;
     for(int j=0;j<max;j++)
     {                         [b]// hier müsste noch die Eingabe von char und int in das Array und die Umwandlung von int zu char rein [/b]	
        cin>>zahl;
        daten[zaehler]=zahl;
        zaehler++;
     }
    cout<<"Basis eingeben"<<endl;
    cin>>basis;
    cout<<""<<endl;
    
    if(basis<=20&&basis>1)
    {
     for(int m=0;m<zaehler;m++)
     {
    	 summe=summe+daten[m]* pow(n,m);
     }
    
    cout<<"Darstellung mit Basis"<<basis<<endl;
    for(int i=0;i<20;i++)
      {
        y=summe%basis;
    	if (y> 9)
    	{
        y= (char) (y - 10 + 'a');
        cout<<(char)y<<endl;
    	}
        else
        cout<<y<<endl;
        summe=summe/basis;
    }
    }
    else
    cout<<"nicht darstellbar"<<endl;
    
    return 0;
    
     }
    


  • Wie ein richtiges C#-Programm sieht das aber nicht aus.

    http://buergermeisterbuettner.blogspot.com/



  • Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • char to int (ascii to int) :

    char c = '5';
    int i = atoi( c );
    

    näheres dort: http://www.cplusplus.com/reference/clibrary/cstdlib/atoi.html

    mfg,
    julian



  • vllt. noch zur info der umgekerte weg, also eine integral Variable in eine charcter Variable zu konvertieren:

    #include <iostream>
    #include <sstream>
    #include <string>
        using namespace std;
    
    #pragma hdrstop
    #pragma argsused
    
    int main( int argc, char* argv[] ) {
    
        int zahl = 123;
        string zahl_als_char;
    
        ostringstream str;
    
        str << zahl;
        zahl_als_char = str.str();
    
        cout << zahl_als_char << endl;  // um zu testen ob 'zahl_als_char wirklich
                                        // eine char ist, schreib ne +1 dahinter
                                        // dein compiler wird einen Fahler anzeigen
    
        //eine andere einfachere Methode ist
    
        //char zahl_als_char[3];
        //sprintf( zahl_als_char, "%s", zahl );
    
        getchar();
        return 0;
    }
    

    falls es wenn interessiert 😉

    Gruß Tobi



  • Die Standardbibliothek von C++ geht normalerweise nur mit den Basen 8, 10 und 16 um. Für alle anderen Zahlensysteme müsstest du das in der Wikipedia (Basiswechsel) skizzierte Verfahren anpassen (üblicherweise entsprechen 'A', 'B', 'C' etc den "Ziffern" 10, 11, 12...).

    (Für die Richtung "beliebige Basis" -> int-Wert kannst du noch die Funktion man: strtol() verwenden)



  • CStoll, du hast garkeine Ahnung!



  • Arschl0ch schrieb:

    CStoll, du hast garkeine Ahnung!

    Sagt wer?
    (wobei - bei dem Usernamen erübrigt sich wohl jeder weitere Kommentar)



  • CStoll schrieb:

    Arschl0ch schrieb:

    CStoll, du hast garkeine Ahnung!

    Sagt wer?
    (wobei - bei dem Usernamen erübrigt sich wohl jeder weitere Kommentar)

    An dieser Stelle von mir nochmal der gaaaaanz vorsichtige Antrag, das Posten nur für Registrierte zuzulassen ... und wenn es ganz weit kommt, vielleicht auch erst nach Ntägiger Wartezeit ? Oder Threaderstellung erst nach Mtägiger Wartezeit ? Oder ... ? 😋
    (naja, ich will nicht unverschämt werden) 😉

    Gruß,

    Simon2.



  • Hallo

    Simon2 schrieb:

    CStoll schrieb:

    Arschl0ch schrieb:

    CStoll, du hast garkeine Ahnung!

    Sagt wer?
    (wobei - bei dem Usernamen erübrigt sich wohl jeder weitere Kommentar)

    An dieser Stelle von mir nochmal der gaaaaanz vorsichtige Antrag, das Posten nur für Registrierte zuzulassen ... und wenn es ganz weit kommt, vielleicht auch erst nach Ntägiger Wartezeit ? Oder Threaderstellung erst nach Mtägiger Wartezeit ? Oder ... ? 😋
    (naja, ich will nicht unverschämt werden) 😉

    Gruß,

    Simon2.

    Das Thema ist so alt und anscheinend ist es erwünscht, dass auch Unregistrierte posten dürfen (finde ich übrigens gut)

    chrische



  • chrische5 schrieb:

    Hallo

    ...
    Das Thema ist so alt und anscheinend ist es erwünscht, dass auch Unregistrierte posten dürfen (finde ich übrigens gut)

    chrische

    Ich bin halt noch nicht so lange hier, um das beurteilen zu können.
    Gibt's da eigentlich schon Mod-Statements zu ?

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Gibt's da eigentlich schon Mod-Statements zu ?

    In Kurzfassung: Es wäre wohl eher kontraproduktiv, das Forum für Gäste zu sperren (und "Spinner" und Spam-Bots machen auch nur einen kleinen Anteil der Gastuser aus, die hier auftauchen - die meisten Unreg's kommen mit durchaus ernstzunehmenden Problemen oder brauchbaren Anmerkungen hierher).

    PS: Und trotz gelegentlicher ..hmm.. Störungen gefällt mir das Klima hier recht gut (sonst wäre ich schon vor langer Zeit abgewandert).



  • Danke für das Statement.

    Ich persönliche finde das Klima hier (verglichen mit den anderen Foren, in denen ich mich regelmäßig rumtreibe) schon eher "grenzwertig" ... aber es sind eben die "Perlen", die mich hier immer wieder hinziehen - mal sehen, ob ich mich irgendwann an die "Knallerbsen" gewöhnt habe oder sie mir die Freude ganz verdorben haben.

    Gruß,

    Simon2.



  • T0bi schrieb:

    vllt. noch zur info der umgekerte weg, also eine integral Variable in eine charcter Variable zu konvertieren:

    #include <iostream>
    #include <sstream>
    #include <string>
        using namespace std;
    
    #pragma hdrstop
    #pragma argsused
    
    int main( int argc, char* argv[] ) {
    
        int zahl = 123;
        string zahl_als_char;
    
        ostringstream str;
    
        str << zahl;
        zahl_als_char = str.str();
    
        cout << zahl_als_char << endl;  // um zu testen ob 'zahl_als_char wirklich
                                        // eine char ist, schreib ne +1 dahinter
                                        // dein compiler wird einen Fahler anzeigen
    
        //eine andere einfachere Methode ist
    
        //char zahl_als_char[3];
        //sprintf( zahl_als_char, "%s", zahl );
    
        getchar();
        return 0;
    }
    

    falls es wenn interessiert 😉

    Gruß Tobi

    Zeile 26 ist falsch, nicht %s sondern %i oder %d,
    z.B.

    sprintf(zahl_als_char, "%d" , zahl );
    

Anmelden zum Antworten