struct ----> array
-
Kóyaánasqatsi schrieb:
@_matze
Was soll er mit der MSDN? Da wird er kein Wort verstehen...Das ist natürlich der beste Grund, da niemals 'reinzuschauen.
Nee, ich habe ja auch Google erwähnt. Die Kombination aus beidem, vermischt mit der geforderten Eigeninitiative, sollte doch eigentlich zum Ziel führen.
Kóyaánasqatsi schrieb:
@whaaatz
Matze hat wohl recht, aber ich möchte mal nicht so sein: []- ist der
Zugriffsoperator für die Elemente. Mit dem Code holst du dir per Schleifendurchlauf die 2 Koordinaten. (Du hast 3 Elemente). Falls dir das spanisch vorkommt, dann lerne bitte die Grundlagen.Ich vermute, er wird wohl eher mit cin und cout und operator<< usw. Probkeme haben...
-
_matze schrieb:
Ich vermute, er wird wohl eher mit cin und cout und operator<< usw. Probkeme haben...
...die aber in jedem Anfängertutorial in den ersten Kapiteln auftauchen sollten. Das ist also keine Entschuldigung.
-
It0101 schrieb:
mach mal ein "return 0;" am Ende der main-Funktion
Wieso? Das ist weder notwendig, noch verändert es das Programmverhalten.
-
Sein Compiler hats aber scheinbar bemängelt. Meiner würde es auch tun.
Wenn ich eine Funktion habe, die etwas zurück liefert, muss auch in jedem Fall ein return vorliegen. Je nach Einstellung gibts einen Fehler oder eine Warnung.
PS: ich hab meinen Compiler sehr penibel eingestelltHab hier grad nur nen VC6.0 zur Hand, aber der meckert auch:
c:\c++ projekte\test\test.cpp(10) : warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen
-
It0101 schrieb:
Sein Compiler hats aber scheinbar bemängelt.
Quak. Außerdem ist das, was du da hast, eine Warnung und keine Fehlermeldung...
-
Kóyaánasqatsi schrieb:
It0101 schrieb:
Sein Compiler hats aber scheinbar bemängelt.
Quak. Außerdem ist das, was du da hast, eine Warnung und keine Fehlermeldung...
Und du beseitigst Warnungen nicht?
Ich schon.
-
Die einen stellen die Empfindlichkeit des Compilers halt auf:
"Schnauze halten und alles durchwinken"und die anderen stellen ihn auf
"penibel"
und beseitigen lieber die Ursachen der Warnungen
-
It0101 schrieb:
Die einen stellen die Empfindlichkeit des Compilers halt auf:
"Schnauze halten und alles durchwinken"und die anderen stellen ihn auf
"penibel"
und beseitigen lieber die Ursachen der WarnungenOder sie stellen ihn auf penibel und sagen ihm, wo er nicht ganz so penibel sein soll (z.B. dass return in main nicht nötig ist)
-
Jeder wie er mag und ich mags ordentlich
-
It0101 schrieb:
Wenn ich eine Funktion habe, die etwas zurück liefert, muss auch in jedem Fall ein return vorliegen.
Nicht bei
main()
.It0101 schrieb:
Hab hier grad nur nen VC6.0 zur Hand, aber der meckert auch:
Du willst allen Ernstes einen Compiler, der für seine Standardinkompatibilität und seine zahlreichen Bugs bekannt ist, zur Unterstützung deiner Argumente heranziehen?
-
Nexus schrieb:
It0101 schrieb:
Hab hier grad nur nen VC6.0 zur Hand, aber der meckert auch:
Du willst allen Ernstes einen Compiler, der für seine Standardinkompatibilität und seine zahlreichen Bugs bekannt ist, zur Unterstützung deiner Argumente heranziehen?
Mein g++ haut mir sogar nen Fehler raus
Edit: ( bei main weiß ichs nicht genau, aber bei normalen Funktionen schon )
-
It0101 schrieb:
Mein g++ haut mir sogar nen Fehler raus
Da das scheinbar so schwer verständlich ist: Wie einzelne Compiler mit dem Fall umgehen, hat nichts damit zu tun, wie die Sache im C++-Standard geregelt ist.
Tatsache ist: Die Funktion
main()
hat den Rückgabetypint
, muss aber kein explizitesreturn
-Statement besitzen. In diesem Fall verhält sie sich so, als würde am Endereturn 0;
stehen.
-
Nexus schrieb:
...Wie einzelne Compiler mit dem Fall umgehen, hat nichts damit zu tun, wie die Sache im C++-Standard geregelt ist.
Aber trotzdem liefert es dir die Gelegenheit erstmal über den VC6-Compiler zu motzen
Mal insgesamt: das Thema ist eigentlich nicht diskutierenswert und ich glaube auch nicht, dass unterschiedliche Meinungen zu dem Thema so verwerflich sind...
-
It0101 schrieb:
Aber trotzdem liefert es dir die Gelegenheit erstmal über den VC6-Compiler zu motzen
Bleib bitte bei der Sache.
It0101 schrieb:
Mal insgesamt: das Thema ist eigentlich nicht diskutierenswert und ich glaube auch nicht, dass unterschiedliche Meinungen zu dem Thema so verwerflich sind...
Es ist sehr wohl eine Diskussion wert, ob es notwendig ist, am Ende von
main()
einereturn
-Anweisung zu schreiben. In diesem Forum geht es schliesslich um Standard-C++. Ob man das dann tatsächlich tut, ist natürlich Geschmackssache. Aber da das wie gesagt keinen Einfluss auf das Programmverhalten hat, bringt so ein Vorschlag auch nicht besonders viel.Die Diskussion ist übrigens nur entstanden, weil du nicht zu deinem Fehler stehen wolltest, sondern versucht hast, mit einzelnen Compilerbeispielen das Gegenteil zu beweisen. Aber von mir aus gesehen ist die Sache erledigt, anderen Lesern sollte der Sachverhalt nun klar sein.
-
Nexus schrieb:
Aber von mir aus gesehen ist die Sache erledigt, anderen Lesern sollte der Sachverhalt nun klar sein.
Dann können wir ja wieder zum Thema zurückkehren...
-
Nexus schrieb:
Die Diskussion ist übrigens nur entstanden, weil du nicht zu deinem Fehler stehen wolltest.
Das klingt so, als würde der Standard ein "return" in "int main(...)" verbieten.
Naja gut, Thema erledigt...
-
It0101 schrieb:
Nexus schrieb:
Die Diskussion ist übrigens nur entstanden, weil du nicht zu deinem Fehler stehen wolltest.
Das klingt so, als würde der Standard ein "return" in "int main(...)" verbieten.
Nein, er meinte das sich hier an den Standard gehalten wird. Und davon, das man etwas zur main returnen muss, steht nichts im Standard. Daher ist Nexus-Aussage völlig korrekt
.
-
Und davon, das man etwas zur main returnen muss, steht nichts im Standard.
Absolut korrekt. Es steht aber auch nicht im Standard, dass es unschön oder falsch ist, die main etwas returnen zu lassen. Demzufolge ist meine Ansicht nicht falsch sondern nur anders als eure.
-
Ich denke wir sind ein C++ Forum, und dumme Fragen gibt es nicht, waatz hat sich als absoluter Anfänger zu erkennen gegeben und wir sollten Ihn auch so behandeln.
Erstmal es tut es mir Leid das sich in (Standard-)Grabenkriegen versucht wird gegeseitig fertig zu machen ohne auf Dich Rücksicht zu nehmen
(Bin schon gespannt auf den Kommentar von euch
)
waahtz schrieb:
ah klaaaar stimmt jetzt sollte es gehen... nur noch eine frage dann belästige ich dich nicht mehr
cin >> w[i].x; cin >> w[i].y; cout << "x: " << w[i].x << endl; cout << "y: " << w[i].y << endl << endl;
kannst du mir dies noch erklären?
Dein Problem:
Ein Array ist im Unterschied zu einer Variablen eine Art Tabelle mit vielen (gleichen) Variablen hintereinander. Damit du auf die Variable in der Tabelle zugreifen kannst benötigst du einen sogenannten Index.Ein Beispiel, wir benötigen 5 Variablen vom Typ int, eine Möglichkeit ist:
// Definition int i0; int i1; int i2; int i3; int i4; // Verwendung im Code int main() { // allen Variablen den Wert 0 zuweisen i0 = 0 i1 = 0 i2 = 0 i3 = 0 i4 = 0 // ein wenig damit rechnen i0 = 2; // i0 == 2 i1 = 3; // i1 == 3 i2 = i0 + i1; // i2 == 5 return 0; }
Das ist aber bei der Handhabung extrem unhandlich, und bläht den Quellcode nur unnötig auf, eine bessre Möglichkeit stellen Arrays dar:
// Deklaration int i[5] <-- ein Array von 5 int // Verwendung im Code int main() { // allen Variablen den Wert 0 zuweisen for (int j = 0; j < 5; j++) i[j] = 0; // <-- viel Paraktischer, j ist Index von 0 - 4 // ein wenig damit rechnen i[0] = 2; // i0 == 2 i[1] = 3; // i1 == 3 i[2] = i[0] + i[1]; // i2 == 5 (2 + 3 = 5) return 0; }
Wenn du jetzt noch so etwas wie struct hast dann liegen dort keine int sondern Variablen deines Typs. (und jetzt bitte keine Kommentare, dass das Objekte sind.
)
Wenn du also den struct
struct Wurf { // ist das gleiche wie int x,y; int x; int y; };
hast, musst du ja irgend wie auf die inneren Variablen zugreifen können, und dafür gibt es zwei Arten, ich zeige dir hier nur die Einfache aus päd. Gründen:
Wurf w; // wir haben eine Variable vom Wurf w, // genauer eigentlich ein Objekt aber // das jetzt noch nicht wichtig w.x = 2; // hier wird der inneren Variablen x der Wert 2 zugewiesen w.y = 5; // hier wird der inneren Variablen y der Wert 5 zugewiesen // wenn wir nun ein Array von Wurf anlegen Wurf aw[5]; // ein Array mit 5 Variablen (Objekten) vom Typ Wurf // wie kommen wir jetzt an die inneren Variablen x und y? // wir benötigen einen Index, so wie bei dem int array von oben aw[0].x = 2; // der ersten Variable Wurf im Array aw[0] und deren // inneren Variablen x den Wert 2 zuweisen. aw[0].y = 3; // der ersten Variable Wurf im Array aw[0] und deren // inneren Variablen y den Wert 3 zuweisen. // und für die 4 Variable im Array (eigentlich Objekt, im Hinterkopf behalten!) aw[3].x = 9; // der vierten Variable Wurf im Array aw[3] und deren // inneren Variablen x den Wert 9 zuweisen. aw[3].y = 5; // der vierten Variable Wurf im Array aw[3] und deren // inneren Variablen y den Wert 5 zuweisen.
Ich hoffe du hast es verstanden, wenn nicht einfach Fragen... hier werden Sie geholfen!