Array komplett auslesen



  • hi,
    Gibt es eine möglichkeit aus einem Array die gespeicherten zahlen ab zu rufen ohne selbst zu wissen in welchem fach welche zahl steckt ?
    Beispiel:

    ...
    int Array[3];
    
    cin >> Array[1];
    cin >> Array[2];
    cin >> Array[3];
    ...
    

    Also wie kann ich jetzt möglichst kurz die gespeicherten zahlen abfragen.

    ...
    if(Array == 3 && Array == 1 && Array == 2){
    cout << "Hier könnte ihre Werbung stehen" ;
    }
    ...
    

    Es währe natürlich schön wenn es so einfach ginge wie oben...
    Ich hoffe ihr könnt mir helfen 🙂

    PS: google und sufu haben bei mir bisher keine ergebnisse gebracht.

    LG
    Bestchaos



  • Üblicherweise iteriert man da einfach über alle Felder und überprüft ob der Wert enthalten ist.

    btw:
    Die Adressierung eines Arrays fängt bei 0 an und geht bis n-1. Und nicht von 1 bis n!



  • eine For- Schleife zum iterieren wäre gar nicht ....

    Dies kannst du dann für die Eingabe und für die Ausgabe nutzen!

    int array [größe 6!]

    //Eingabe Array
    for(int i=0; i<5; i++){
    array[i] = //wert der gespeichert werden soll an die i.te stelle!
    }

    //Ausgabe Array
    for(int i=0; i<5; i++){
    cout<<array[i];
    }



  • BestChaos schrieb:

    Gibt es eine möglichkeit aus einem Array die gespeicherten zahlen ab zu rufen ohne selbst zu wissen in welchem fach welche zahl steckt ?

    Kannst Du das nochmal umformulieren? Ich habe die Frage nicht verstanden. Was meinst Du genau mit "abrufen" und "ohne selbst zu wissen in welchem fach welche zahl steckt" ?

    BestChaos schrieb:

    Beispiel:

    ...
    int Array[3];
    
    cin >> Array[1];
    cin >> Array[2];
    cin >> Array[3];
    ...
    

    Das müsste Array[0], Array[1] und Array[2] sein.

    BestChaos schrieb:

    Also wie kann ich jetzt möglichst kurz die gespeicherten zahlen abfragen.

    Was meinst Du genau mit "abfragen" ?

    BestChaos schrieb:

    ...
    if(Array == 3 && Array == 1 && Array == 2){
    cout << "Hier könnte ihre Werbung stehen" ;
    }
    ...
    

    Was soll das bedeuten?

    BestChaos schrieb:

    Es währe natürlich schön wenn es so einfach ginge wie oben...

    Was denn? Was soll denn da eigentlich passieren?

    kk



  • Suchst du ungefähr das:

    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    int array[] = { 3, 4, 5 };
    
    bool test( int val )
    {
      return val == 1 || val == 2 || val == 3;
    }
    
    int main()
    {
      if( find_if( array, array + 3, test ) != array + 3 ) cerr << "gefunden\n";
    }
    


  • Oder so (wenn alle enthalten sein müssen):

    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    int array[] = { 3, 2, 1 };
    
    bool test( int val )
    {
      return val == 1 || val == 2 || val == 3;
    }
    
    int main()
    {
      if( count_if( array, array + 3, test ) == 3 ) cerr << "gefunden\n";
    }
    


  • Oder so

    #include <algorithm>
    #include <iostream>
    #include <set>
    
    using namespace std;
    
    int array[] = { 3, 2, 1 };
    int testArray[] = { 1, 2, 3 };
    
    int main()
    {
      sort( array, array + 3 );
      if( includes( array, array + 3, testArray, testArray + 3 ) )
        cerr << "gefunden\n";
    }
    


  • manni66 schrieb:

    ...
    Oder so
    ...
    Oder so

    Es macht Dir also Spaß zu raten, was der OP eigentlich wollte, was? 🙂

    manni66 schrieb:

    ...
    int array[] = { 3, 2, 1 };
    int testArray[] = { 1, 2, 3 };
    ...
      if( includes( array, array + 3, testArray, testArray + 3 ) )
    ...
    

    für std::includes müssen beide Sequenzen sortiert sein.



  • krümelkacker schrieb:

    manni66 schrieb:

    ...
    int array[] = { 3, 2, 1 };
    int testArray[] = { 1, 2, 3 };
    ...
      if( includes( array, array + 3, testArray, testArray + 3 ) )
    ...
    

    für std::includes müssen beide Sequenzen sortiert sein.

    Ja, deswegen wird array ja auch sortiert.



  • hi,
    Danke für eure Antworten. Ich habe mein problem jetzt mit einer for schleife gelöst. 🙂

    ...
    for ( int i = 0 ; i < 8 ; i++ ){
        if (array[i] == 1){
                eins = true;
        }else if (array[i] == 2){
                zwei = true;
        }else if (array[i] == 3){
                drei = true;
        }
    }
    if( eins == true && zwei == true && drei == true ){
        cout << "Du hast Gewonnen!" << endl << endl ;
    }
    ...
    

    LG
    Bestchaos



  • BestChaos schrieb:

    Ich habe mein problem jetzt mit einer for schleife gelöst. 🙂

    ...
    for ( int i = 0 ; i < 8 ; i++ ){
        if (array[i] == 1){
                eins = true;
        }else if (array[i] == 2){
                zwei = true;
        }else if (array[i] == 3){
                drei = true;
        }
    }
    if( eins == true && zwei == true && drei == true ){
        cout << "Du hast Gewonnen!" << endl << endl ;
    }
    ...
    

    Aha.

    Tipp: irgend_ein_bool == true ist gleich irgend_ein_bool . Die Variablen hättest Du auch anders nennen können, zB "eins_enthalten", "zwei_enthalten" etc. Dann könnte dein if nämlich so aussehen:

    if (eins_enthalten && zwei_enthalten && drei_enthalten) ...
    

    und man weiß genau, was gemeint ist.

    Du solltest Dich aber auch mit der Standardbibliothek vertraut machen. Da sind viele Klassen und Funktionen drin, die sehr praktisch sind. Beispielsweise std::set, std::map, oder auch std::includes. Mit std::set könnte man es zB so machen (quick'n'dirty) -- um mal etwas völlig anderes zu zeigen hier.

    #include <set>
    
    ...
    std::set<int> s (&array[0], &array[0]+8);
    if (s.count(1) && s.count(2) && s.count(3))
       cout << "Du hast Gewonnen!" << endl << endl;
    

    manni66 schrieb:

    krümelkacker schrieb:

    für std::includes müssen beide Sequenzen sortiert sein.

    Ja, deswegen wird array ja auch sortiert.

    Sorry, das habe ich übersehen.


Anmelden zum Antworten