Was mach ich diesmal falsch?
-
@JTR666 sagte in Was mach ich diesmal falsch?:
Der gibt an den Stellen nur völlig komische Werte aus, mit denen ich nichts anfangen kann.
Dann gib dir doch mal die eingegebenen Werte wieder aus.
Mitcout
oder schau sie dir im Debugger an.
Dann weißt du erstmal, ob es auch die erwarteten Werte sind.
-
@DirkB Ich habe sie ausgegeben und die stimmten alle...
-
@JTR666 sagte in Was mach ich diesmal falsch?:
@DirkB Wo siehst du das denn bitte?
Das i steht ja nur in der ersten Klammer, womit du mit ArtNr nur die Felder [1][1], [2][1], [3][1], [4][1] & [5][1] belegst... Denn dadurch bleibt die Spalte für ArtNr immer die selbe...Ja aber das Element [1][1] ist eine komplette struct genauso wie [1][2], [1][3], ...
jedes dieser Elemente enthält alle Member ( von SpaltName bis BestVorschlag )
-
@DirkB Aaahhh, okay...
Ich dachte dass man das mit der Zuweisung .ArtNr als Beispiel verhindern und man sich nur die angegebene Variable der Struct rauspicken würde...
-
@DirkB Wieso klappt dann die Ausgabe so gut?
Das, wundert mich jetzt. Denn dann muss der das doch so machen, dass jedes Feld im Array 9 Plätze (für jede Variable aus der Struct eins) hat und nur den belegten Platz nimmt...
Aber das müsste er doch bei der Berechnung hinterher doch auch machen können...
-
@JTR666 Soll jetzt nicht so klingen, dass ich dir nicht glaube - im Gegenteil!
Ich frag mich nur was er macht, wenn er es ganz offensichtlich so macht wie du es sagst
-
@JTR666 sagte in Was mach ich diesmal falsch?:
Aber das müsste er doch bei der Berechnung hinterher doch auch machen können...
Ja.
cin >> Tabelle[i][5].TagVerbr; cin >> Tabelle[i][6].BestDauer; Tabelle[i][7].MeldBest = Tabelle[i][3].HoeBest - Tabelle[i][6].TagVerbr*(Tabelle[i][7].BestDauer - 2); //Meldebestand berechnen (die Werte kennt er ja, da sie davor eingegeben wurden.)
wenn du immer den gleichen Index verwenden würdest. Für z.B. TagVerbr nimmst du aber einmal 5 und ein anderes mal 6.
-
@manni66 Meinst du wegen der Inkrementierung von i?
-
@JTR666 sagte in Was mach ich diesmal falsch?:
@manni66 Meinst du wegen der Inkrementierung von i?
Nein
-
@manni66 Wie sonst? Die 5 sagt dir immer, dass es generell in der 6. Spalte liegt
-
@JTR666 sagte in Was mach ich diesmal falsch?:
@manni66 Wie sonst? Die 5 sagt dir immer, dass es generell in der 6. Spalte liegt
Du solltest meine Antwort lesen.
-
@JTR666 sagte in Was mach ich diesmal falsch?:
Also jede Spalte bekommt einen Datensatz aus der Struct.
Somit steht jede Spalte aus der Tabelle für eine Variable aus der Struct.Nein, jede Spalte hat den KOMPLETTEN Datensatz! Du wählst mit .ArtNr dann aber nur ArtNr aus.
Und diese bekommen dann halt in jeder Zeile neue Werte zugewiesen.
6 Werte für ArtNr, 6 für Bez (Bezeichnung), usw.Du hast aber nicht 6 ArtNr-Variablen, sondern 6*9 = 54 davon!
Vielleicht noch mal deutlicher: die Anzahl der Variablen in der Stuct hat NICHTS, GAR NICHTS!! mit der Arraygröße zu tun! Die sind voneinander unabhängig.
-
@wob Ja ja, aber durch [i][5] sagst du ihm ja auf welches er sich beziehen soll.
Somit werden nur die ArtNr in dieser Spalte genommen. Die der anderen Felder bleiben leer
-
@JTR666 Ja, aber warum 5? Was soll die 5 für eine Bedeutung haben? Wenn beim Programmieren irgendwelche Zahlen wild rumstehen, die keine offensichtliche Bedeutung haben, wer soll dann verstehen, was du damit meinst?
-
@wob Das sind die Koordinaten vom Array.
Zuerst die Zeile und dann immer die 6. Spalte der Tabelle
-
@JTR666 sagte in Was mach ich diesmal falsch?:
@wob Das sind die Koordinaten vom Array.
Zuerst die Zeile und dann immer die 6. Spalte der TabelleWas macht die 6. Spalte denn besonders? Aus welchem Grund soll das genau in der 6. Spalte stehen? Warum nicht auch mal in der 1. oder 4.?
-
@wob Weil das die Spalte für die Bestelldauer ist. Also für BestDauer
-
Ich geb's auf!
BestDauer wird durch ".BestDauer" angegeben, nicht durch [5]!
-
@wob
Ich meinte nur, dass hält am Ende bei der ausgegebenen Tabelle die 6. Spalte für die Bestelldauer BestDauer steht. Und das wollte ich dem Compiler mit Tabelle[i][5].BestDauer sagen. Denn dann wird dem BestDauer in Tabelle[i][3].BestDauer kein Wert zugewiesen..
Und da sag ich ja dass die Variable für BestDauer in sagen wir mal [1][4] leer bleibt. Die gibt es ja wie du du sagtest auch, weil ja durch das Struct jedes Feld alle Variablen aus Struct bekommt.
Aber ich hab hält gedacht dass man das durch
.BestDauer dahinter umgeht und dem Feld dann wirklich nur die Struct-Variable zuweist. Bis ich dann hier eines Besseren belehrt wurde.
Und es sind dann nur die 6 BestDauer in Spalte 6 beschriftet, die der anderen 48 nicht...
Dennoch klappt die Ausgabe bis auf das mit den Berechnungen super
-
@JTR666 sagte in Was mach ich diesmal falsch?:
Dennoch klappt die Ausgabe bis auf das mit den Berechnungen super
Also klappt es nicht, weil du den Überblick verloren hast,
denn@manni66 sagte in Was mach ich diesmal falsch?:
wenn du immer den gleichen Index verwenden würdest. Für z.B. TagVerbr nimmst du aber einmal 5 und ein anderes mal 6.
Mach Tabelle eindimensional und schmeiß bei jedem Zugriff den letzten Index weg.