Array auslesen!



  • Hi @all,

    bin grad dabei einen Taschenrechner zu programmieren, und hab grad ein kleines Problem, wo vielleicht jemand nen Rat hätte, ich zeig es mal anhand von einem Code snipet

    1 cout<<"\n\n\nWieviel Zahlen benoetigen Sie zum berechnen? \n";
    2 cout<<"\nEingabe: ";
    3 cin>>wieoft;
    4
    5 do
    6 {
    7 cout<<"\nZahl eingeben, und mit [Enter] best\x84tigen: ";
    8 cin>>zahl[10];
    9
    10 wieoft--;
    11
    12 }while(wieoft>=1);

    zum Code:

    in Zeile 1 - 3 wird man aufgefordert. die Anzahl der zu addierenden Zahlen einzugeben, gebe ich 5 ein, wird 5 mal die zeile 7 wiederholt,
    und jetzt kommt mein problem ich möchte die 5 eingegebenen Zahlen abspeichern,
    meine erste überlegung war auf des erste element von diesem array einen zeiger zu defenieren um den wert dann extern in einer Variable abzuspeichern, ist sowas überhaupt möglich, hab mit zeiger noch nicht gearbeitet, gibt sicher eine bessere Lösungen!?

    vielen dank
    gruß flanders



  • Machs mit nem Zähler:

    // ...
    int i = 0;
    // ...
    
    do
    {
      // ...
      cin >> zahl[ i ];
      ++i;
    } while( i < wieoft );
    


  • #include <iostream>
    #include <vector>
    
    using std::endl, std::cout, std::cin;
    
    cout << "Wieviel Zahlen benoetigen Sie zum berechnen?\r\nEingabe: " << endl; 
    size_t wieoft (0);
    cin >> wieoft;
    assert (wieoft != 0)
    cout << "\r\n" << endl;
    std::vector <double> zahl;
    for (;wieoft != 0; --wieoft)
    {
    //vll failbits des streams überprüfen etc...
    cout << "Zahl eingeben:\r\n\t";
    double temp;
    cin >> temp;
    zahl.push_back (temp);
    }
    

    alternativ:

    #include <iterator>
    
    //ansonsten wie gehabt bis zu:
    cout << "\r\n" << endl;
    
    std::vector <double> zahl (wieoft); //{wieoft} elemente, die alle 0 betragen
    for (std::vector <double>::iterator iter (zahl.begin ()), end (zahl.end ()); iter != end; ++iter)
    {
    cout << "Zahl eingeben:\r\n\t";
    cin >> *iter;
    }
    

    Die 2. Lösung ist wahrscheinlich fast besser ^^

    bb

    PS: Mit [cpp] und [/ cpp] sieht dein Code auch so schön aus ^^



  • unskilled schrieb:

    #include <iostream>
    #include <vector>
    
    using std::endl, std::cout, std::cin;
    
    cout << "Wieviel Zahlen benoetigen Sie zum berechnen?\r\nEingabe: " << endl; 
    size_t wieoft (0);
    cin >> wieoft;
    assert (wieoft != 0)
    cout << "\r\n" << endl;
    std::vector <double> zahl;
    for (;wieoft != 0; --wieoft)
    {
    //vll failbits des streams überprüfen etc...
    cout << "Zahl eingeben:\r\n\t";
    double temp;
    cin >> temp;
    zahl.push_back (temp);
    }
    

    alternativ:

    #include <iterator>
    
    //ansonsten wie gehabt bis zu:
    cout << "\r\n" << endl;
    
    std::vector <double> zahl (wieoft); //{wieoft} elemente, die alle 0 betragen
    for (std::vector <double>::iterator iter (zahl.begin ()), end (zahl.end ()); iter != end; ++iter)
    {
    cout << "Zahl eingeben:\r\n\t";
    cin >> *iter;
    }
    

    Die 2. Lösung ist wahrscheinlich fast besser ^^

    bb

    PS: Mit [cpp] und [/ cpp] sieht dein Code auch so schön aus ^^

    Hi,

    erstmal vielen vielen Dank für die mühe, ich schnapp mir mal die zweite Variante weil die versteh ich eher, mein problem is nur ich bin nicht so fit in c++
    und weiß grad nicht was du mit dem auskommentierten
    "//ansonsten wie gehabt bis zu:" genau meinst?!

    gruß
    flanders



  • ich meinte, dass sich das obendrüber nicht ändert, als du musst dir einfach das statt dem kommentar hindenken:

    #include <iostream> 
    #include <vector> 
    
    using std::endl, std::cout, std::cin; 
    
    cout << "Wieviel Zahlen benoetigen Sie zum berechnen?\r\nEingabe: "; 
    size_t wieoft (0); 
    cin >> wieoft; 
    assert (wieoft != 0);
    

    bb

    PS: da fällt mir gerade auf, dass oben nen semikolon fehlt hinter dem assert (...) ^^

    edit: und außerdem sollte dort kein endl nach dem Eingabe: stehen ^^ sieht doof aus ^^



  • ich peils nicht^^



  • Flanders86 schrieb:

    ich peils nicht^^

    Was?



  • Nexus schrieb:

    Flanders86 schrieb:

    ich peils nicht^^

    Was?

    die Funktion, wie ich die in meinen Code implementieren soll, was bedeutet überhaupt std:: 😃



  • Flanders86 schrieb:

    die Funktion, wie ich die in meinen Code implementieren soll, was bedeutet überhaupt std:: 😃

    Dann würde ich dir empfehlen, nochmals die Grundlagen anzuschauen 🙂

    std:: bedeutet, dass sich der nachher stehende Bezeichner im Namensraum std befindet. Mehr dazu findest du in einem guten Buch oder Tutorial 😉



  • Nexus schrieb:

    Flanders86 schrieb:

    die Funktion, wie ich die in meinen Code implementieren soll, was bedeutet überhaupt std:: 😃

    Dann würde ich dir empfehlen, nochmals die Grundlagen anzuschauen 🙂

    std:: bedeutet, dass sich der nachher stehende Bezeichner im Namensraum std befindet. Mehr dazu findest du in einem guten Buch oder Tutorial 😉

    hm danke, davon hab ich noch nie was gehört, wurde mir auch nicht gesagt dass ich sowas verwenden sollte, kein plan^^



  • omfg...

    dann vergiss meinen post vll einfach...

    std is nen namespace
    http://www.google.de/search?hl=de&q=namespace&meta=lr%3Dlang_de%7Clang_en

    der, in dem die gesamte standard-type-library zusammengefasst ist...

    das using namespace std; was du immer am anfang schreibst heißt, dass er immer nachguckt, ob irgendeine zeichenkette vll ne funktion oder variable in genau diesem namespace ist...

    und da man mit using namespace std; den sinn der namespaces eigtl völlig zerstört (aber das wo immernoch praxis in schulen etc ist), lässt man es halt weg und schreibt statt cout dann halt std::cout;

    besser? wenn nicht: www.google.de



  • unskilled schrieb:

    omfg...

    dann vergiss meinen post vll einfach...

    std is nen namespace
    http://www.google.de/search?hl=de&q=namespace&meta=lr%3Dlang_de%7Clang_en

    der, in dem die gesamte standard-type-library zusammengefasst ist...

    das using namespace std; was du immer am anfang schreibst heißt, dass er immer nachguckt, ob irgendeine zeichenkette vll ne funktion oder variable in genau diesem namespace ist...

    und da man mit using namespace std; den sinn der namespaces eigtl völlig zerstört (aber das wo immernoch praxis in schulen etc ist), lässt man es halt weg und schreibt statt cout dann halt std::cout;

    besser? wenn nicht: www.google.de

    aso danke, verstanden hab ich´s schon, aber mir wurde in der Schule nichts davon
    gesagt, dann ist es ja wahrscheinlich in der prozeduralen Programmierung noch nicht unbedingt relevant, denk ich zumindest mal, sollte ichs mir lieber angewöhnen in der Form zu programmieren 😕


Anmelden zum Antworten