[Gelöst] Zugriff auf ein Array-Feld und Ausgabe von Werten



  • #include<iostream>
    #include<array>
    
    using namespace std;
    
    //int value[] = {1,2,3,4,5,6,7,8,9,10};
    array<int, 10> value = {1,2,3,4,5,6,7,8,9,10};
    
    for(unsigned int i = 0; i < value.size(); i++)
    	if(value.at(i) / 3 == 1 || value.at(i) / 5 == 1)
    		cout << value.at(i) << endl;
    
    system("pause");
    
    return 0;
    }
    

    Guten Abend liebe Community,

    und zwar habe ich folgende zwei Probleme:

    1. Weshalb sagt mir Visual Studio, dass die erste Variante vom Array-Feld nicht geht, obwohl sie doch meines Wissens nach letztendlich das gleiche tut wie die zweite Variante?

    2. Ich würde mir gern, wie vielleicht schon im Code zu sehen ist, den Wert ausgeben lassen der bei einer Division durch 3 oder 5, 1 ergibt. Angezeigt bekomme ich aber die Zahlen 3 bis einschließlich 9. Wo ist der Fehler den ich nicht erkenne?

    Auch mithilfe meiner beiden Bücher, finde ich nicht heraus wo genau jetzt mein Denkfehler liegt.

    Folgende beide Bücher habe ich:

    Einstieg in C++ von Thomas Theis, ISBN 978-3-8362-4510-4
    A Tour of C++, Second Edition, Bjarne Stroustrup

    Ich bedanke mich schon einmal für eure Hilfe und hoffe, dass ich alles an Informationen geliefert habe die benötigt werden.

    Einen schönen Abend euch noch,

    Denis



  • Bei einem C-Array kann nicht mit at auf die Elemente zugegriffen werden, bei beiden Varianten geht dies allerdings mit dem Indexoperator. Bevorzugen sollte man aber std::array.
    https://ideone.com/PrQp9t
    Zu deiner zweiten Frage: Was erwartest du als Ergebnis folgender Rechnungen (es sind Integer-, also Ganzzahldivisionen):

    3/3=
    4/3=
    5/3=
    6/5=
    7/5=
    8/5=
    9/5=
    

    Ich bin mir auch nicht sicher, ob du das richtig formuliert hast. Eine Division durch 3 oder 5 ohne Rest ist genau dann 1 (und nur dann), wenn value[i] 3 oder 5 ist.
    Ansonsten schau dir mal die Division mit Rest an (Modulo: %). value[i] ist durch 3 oder 5 ohne Rest teilbar, wenn value[i]%3==0 oder value[i]%5==0 ist. Erfüllt wird das in dem Beispiel von den Werten 3, 5, 6, 9, 10.



  • @AhornGrabung10 Ein C-Array (die erste Variante) ist keine Klasse.
    Somit kennt es auch keine Methoden wie at oder size.



  • @yahendrik vielen Dank für deine Hilfe, die Rechnung mit Modulo hat einwandfrei Funktioniert 😁

    Die Idee war eine schleife zu machen, die mir alle zahlen bis 1000 ausgibt, die durch 3 oder 5 Teilbar sind. Da ich erstmal etwas kleiner anfangen wollte, wollte ich mir erstmal nur die Zahlen bis 10 anzeigen lassen die bei der Division das Ergebnis 1 hat, um von dort aus dann weiter zu machen 🤓

    Was ist denn generell besser/praktischer zu verwenden, die erste oder zweite Methode? Oder tut sich da nicht viel zwischen den beiden?


Anmelden zum Antworten