Array Neudefinition
-
Gibt es (so) nicht. Wozu meinst du, das zu brauchen? Mir ist nicht einmal klar, wozu du überhaupt irgendeine Art von Container brauchst (mit anderen Containern als Arrays geht das übrigens). Zur Berechnung des Durchschnitts reicht es, alle Werte einzeln zu betrachten, da braucht man als "Container" bloß ein einzelnes Element.
-
ZaubererVonOS schrieb:
Ich glaube du hast mich falsch verstanden.
Ich meinte es eigentlich so wie z.B. string s = "ddjvboal"; s = "lsnvs"; .Und das für das gesamte Array
Du hast Arrays nicht verstanden. In diesem Kontext (Zuweisung) ist dein Array kein Array mehr. Es gibt viele Kontexte, auf das das zutrifft. Es nennt sich array-to-pointer-decay. Das bedeutet, dass aus deinem Array ein const-Zeiger auf das erste Element deines Arrays wird. Einem const-Zeiger kannst du nichts zuweisen. Daraus folgt, einem Array kannst du nichts zuweisen. Daraus folgt also, ein Array kann niemals auf der linken Seite vom "=" stehen.
-
out schrieb:
Du hast Arrays nicht verstanden. ...
Völlig anti-hilfreiche Antwort. Nach dem ersten Satz hat man keine Lust mehr.
Mal angenommen es ginge:
int arr[] = {1, 2, 3}; //arr = {7, 9, 42, 234}; //<- sowas in der Art willst du?Dort würde man einfach ein neues Array nehmen.
Wenn man ein Array überschreiben will, weil das als Parameter übergeben wird, dann muss man das Elementweise zuordnen.int quadratzahlen[123]; for (int i = 0; i < sizeof quadratzahlen / sizeof *quadratzahlen; i++) quadratzahlen[i] = i * i;Wenn man ein Array kopieren will, dann kann man memcpy benutzen, oder man benutzt std::array, da kann man normal zuweisen.
Vielleicht solltest du dir auch std::vector ansehen, das ist ein Array mit dynamischer Länge und kann allerlei. Mit einem neueren Compiler und vector geht das nämlich mit der {}-Schreibweise von oben.
Für genaueres müsstest du genauer sagen was du tun willst. Wenn du nur vom Nutzer Zahlen einliest und den Durchschnitt berechnen willst, dann brauchst du nämlich kein Array.
-
Also, es sit so: Wenn ich jetzt ein Durchschnitt von 3 Zahlen errechnen will, dann muss ich ja auch erstmal die Anzahl der Zahlen angeben. Jetzt wollte ich es so machen, dass man die Anzahl der Zahlen eingibt als "int Array Anzahl" und dies dann auf das Array übertragen wird, dann halt z.B. Array Zahlen [3], wenn man 3 Zahlen hat und dies dann zusammenaddiert und dann durch "int Array Anzahl" dividiert.
-
Wenn man ein Array kopieren will, dann kann man memcpy benutzen,
Unsinn. Dann benutzt man
std::copy.Edit: Beispiel war Schwachsinnig.
-
ZaubererVonOS schrieb:
Also, es sit so: Wenn ich jetzt ein Durchschnitt von 3 Zahlen errechnen will, dann muss ich ja auch erstmal die Anzahl der Zahlen angeben.
Finde ich nicht nutzerfreundlich. Schöner wäre es wenn der Nutzer Zahlen drauflos eingibt und der Durchschnitt berechnet wird sobald etwas anderes als eine Zahl eingegeben wird. Außerdem geht das mit Arrays nicht, weil du da zur Kompilierzeit schon wissen musst wie groß das Array sein soll.
Hier mal ein Vorschlag:
#include <iostream> using namespace std; int main(){ float eingabe, summe = 0, anzahl = 0; while (cin << eingabe){ summe += eingabe; anzahl++; } if (anzahl != 0) cout << summe / anzahl; }
-
nwp3 schrieb:
#include <iostream> using namespace std; int main(){ float eingabe, summe = 0, anzahl = 0; while (cin << eingabe){ summe += eingabe; anzahl++; } if (anzahl != 0) cout << summe / anzahl; }Da ist noch ein kleiner Syntaxfehler drin, aber den zu finden und beheben überlasse ich dem Threadersteller zur Übung. Er soll sich nur nicht wundern, dass der Code nicht auf Anhieb funktioniert.
-
SeppJ schrieb:
nwp3 schrieb:
#include <iostream> using namespace std; int main(){ float eingabe, summe = 0, anzahl = 0; while (cin << eingabe){ summe += eingabe; anzahl++; } if (anzahl != 0) cout << summe / anzahl; }Da ist noch ein kleiner Syntaxfehler drin, aber den zu finden und beheben überlasse ich dem Threadersteller zur Übung. Er soll sich nur nicht wundern, dass der Code nicht auf Anhieb funktioniert.
Lol, ich musste bei ideone nachschauen um den Fehler zu sehen.

In letzter Zeit hab ichs aber mit denen.
-
Ich hab es sofort gesehen... das ist doch keine Kleinigkeit.
-
- schrieb:
Ich hab es sofort gesehen... das ist doch keine Kleinigkeit.
Das Problem an der Sache ist: Syntaktisch ist das Programm eigentlich richtig, aber semantisch nicht ganz.
Außerdem sind das Fehler, die ich noch nie (*) gemacht habe. Deshalb hab ich sie auch nicht gesehen.* Sagen wir, ich kann mich nicht erinnern.