umrechnen einer vierstelligen zahl



  • hi leute ,
    bin neu hier und habe grade mit c++ angfungen doch nun habe ich ein problem und zwar möchte ich eine viestelliege zahl die ich mit cin einlese in 4 einzelne zahlen aufteilen.

    Kann mir da jemand helfen?
    eine gute erklärung mit einen beispiel wär echt super.

    dank im vorraus
    proximus



  • In welcher Form sind die vier Ziffern vorhanden?



  • Hi

    Einfaches Umrechnen und runden mit Hilfe von 10er Potenzen ( Stichwort Zahlendarstellung padischer Bruch, Otto Forster: Analysis 1).

    #include <iostream.h>
    
    int main(int argc,char** argv) {
      float a;
      cout << "4 stellige zahl eingeben:";
      cin >> a;
    
      cout << a;
    
      /* n steht für natürliche Zahle */
      int n0 = (int) a - ( ((int) a/10 )* 10);
      int n1 = (int) a/10 - ( ((int) a/100 )* 10);
      int n2 = (int) a/100 - ( ((int) a/1000 )* 10);
      int n3 = (int) a/1000 - ( ((int) a/10000 )* 10); 
    
      cout << "n0=" << n0 << "  n1=" << n1 << "  n2=" << n2 << "  n3=" << n3  <<"\n";  
    }
    

    Wobei die n's nach den entsprechenden 10er Potenzen sortiert sind. D.h.:

    UserEingabe = 10°0 * n0 + 10°1 * n1 + 10°2 * n2 + 10°3 *n3

    Man ist das 10er System toll.

    mfg
    tom



  • std:string zahl;
    std::cin >> zahl;
    
    std::cout << "n0="<< zahl[0] << ...
    


  • und noch eins

    int x;
    cin >> x;
    int n0 = x/1000 % 10;
    int n1 = x/100 % 10;
    int n2 = x/10 % 10;
    int n3 = x % 10;
    


  • und noch ne Möglichkeit...

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(void) 
    { 
    	string str;
    	cout << "4 stellige zahl eingeben:";
    	cin >> str;
    	int zahl[4];
    
    	if (str.length() >= 4)
    	{
    		zahl[0] = str.at(0) - '0';
    		zahl[1] = str.at(1) - '0';
    		zahl[2] = str.at(2) - '0';
    		zahl[3] = str.at(3) - '0';
    	}
    
    	cout << "Ergebnis = " << zahl[0] << " " << zahl[1] << " " << zahl[2] << " " << zahl[3] << endl;
    
        return 0;
    }
    


  • TaCCo schrieb:

    if (str.length() >= 4)
    	{
    		zahl[0] = str.at(0) - '0';
    		zahl[1] = str.at(1) - '0';
    		zahl[2] = str.at(2) - '0';
    		zahl[3] = str.at(3) - '0';
    	}
    

    Gutes Beispiel für die unnötige Verwendung von at()...



  • Wenn sein string::operator[] nicht assert()et, gibt's immerhin leichter verständlichen Radau, falls er die 4 durch was Anderes ersetzt und den Rest vergisst etc. - durch sowas Blödes habe ich schon mehr Zeit verschwendet als die vier Bereichsüberprüfungen in dem Code, der ruhig lahm sein kann, jemals benötigen werden...



  • 👍
    he spitze leute vielen dank für eure hilfe

    mfg
    proximus


Anmelden zum Antworten