ascii zeichen 32 bis 127 in array speichern



  • Hallo miteinander,

    ich möchte ein c++ programm schreiben, dass mir ausrechnet, wie oft in einer txt datei ein buchstabe/symbol auftaucht.

    Dazu wollte ich erstmal die zeichen ! bis z in einen array speichern, nur klappt diese zuweisung irgendwie nicht! Wer sieht das problem?

    // Save ASCII Symbols from '!' to 'z' into an array
     int n = 127 
     char buchstaben = new char[n] 
      for (char c = '!'; c<= 'z'; ++c)
         buchstaben[];
    

    Merci,

    chris



  • Hallo,

    Wo ist hier eine Zuweisung?

    int n = 127
     char* buchstaben = new char[n]
      for (int i=0; i<n; ++i)
         buchstaben[i] = char(i+int('!')); //die casts sind nicht unbedingt notwendig
    //delete[] buchstaben nicht vergessen
    


  • Braunstein schrieb:

    Hallo,

    Wo ist hier eine Zuweisung?

    int n = 127
     char* buchstaben = new char[n]
      for (int i=0; i<n; ++i)
         buchstaben[i] = char(i+int('!')); //die casts sind nicht unbedingt notwendig
    //delete[] buchstaben nicht vergessen
    

    Sorry kann deine Bemerkung nicht ganz nachvollziehen.

    Wofür steht dein char(i+int('!'9) ?

    lg chris



  • Kannsts auch mit nem Vector machen, find ich persöhnlich schöner.

    vector<char> buchstaben;
    
    for(char c ='!';c<='z';++c){
        buchstaben.push_back(c);
    }
    

    Edit:

    Das char(i+int('!')) ist dafür da das zu deiner zählvariablen i immer 33
    dazu addiert werden so das dein erstes Zeichen '!'(33) ist, dein zweites
    '"'(34), und so weiter...

    ...



  • Aber wofür willst du das eigtl. haben? Leg doch direkt einfach einen Array an(war hier letztens im Forum eine garnicht soo schlechte Idee)

    unsigned int count_chars[255];
    const std::string str("Das ist mein kleiner String dessen Zeichen ich einzelln kategorisieren mag!");
    for (std::size_t pos(0); pos < str.length(); ++pos)
        ++count_chars[128 + str[pos]];
    
    for (std::size_t i(0); i < 255; ++i)
        std::cout << "\'" << static_cast<char>(i + 1) << "\' existiert " << count_chars[i] << " mal!" << std::endl;
    

    ...



  • Chris Z schrieb:

    Sorry kann deine Bemerkung nicht ganz nachvollziehen.

    Ich haben in deinem ersten Code keinerlei Zuweisung gesehen. Das hier

    buchstaben[];
    

    ist jedenfalls keine. 🙂



  • @(D)Evil

    unsigned int count_chars[255] = {};
    

    Ohne Initialisierung ist das Zaehlen sinnfrei 😉


Anmelden zum Antworten