Ich steh auf der Leitung , benötige bitte einen Lösungsansatz.
-
Nexus schrieb:
Schöne Liste der Initialisierungen, das würde ich dir in Zukunft auch raten, PauliBär. Generell solltest du nur in Ausnahmefällen mehr als eine Anweisung pro Zeile haben. Ausserdem brauchst du die Variablen eigentlich nicht lange bevor du sie brauchst zu deklarieren (besser so spät wie möglich, am besten gleich eine Initialisierung machen wo es möglich ist). Auch Zählvariablen in Schleifen sollten erst im Schleifenkopf deklariert sein.
Schade, dass ich um diese Zeit nicht mehr ganz fähig bin, Logikfehler zu finden, das mit dem
nhabe ich z.B. komplett übersehen
Speedy_92 schrieb:
Wenn du das Array vor der Initialisierung von "n" deklariert hättest, dann hätte der Kompiler meines Wissens nach ein undefiniertes Verhalten vergerufen (ist das richtig so?) weil "n" irgendeinen Wert zugewiesen bekommt.
Mir fällt gerade auf, dass das in dieser Form eh nicht geht, da für die Dimension ein konstanter Wert erwartet wird. Das heisst, es muss so stehen (was eine Initialisierung erfordert, von daher kann
ngar nicht undefiniert sein):const int n = 100;Aber für normale Variablen gilt das natürlich, was du gesagt hast. Bei keiner Initialisierung oder Zuweisung steht ein willkürlicher Wert in der Variable, was oft zu Abstürzen führt.
Ich hätte eine Frage bezüglich des willkürlichen Wertes:
Wenn man jetzt die Variable global macht (z.B. außerhalb der main()), dann wird doch der int-Wert mit NULL initialisiert oder?
-
Hallo,
Wenn man jetzt die Variable global macht (z.B. außerhalb der main()), dann wird doch der int-Wert mit NULL initialisiert oder?Ja, so ist es im Standard gefordert. Aber wenn man sich bei allen Compilern sicher sein will, dann sollte man es trotzdem tun, gerne auch sonst...
MfG,
Probe-Nutzer
-
Puhhh,...... ich denke eine while schleife mit bool- Wert haben wir auch noch nicht gelernt.

Wäre es denn auch möglich die Aufforderung "Wollen Sie einen neuen Karton packen ja/nein:" mit einer do-while Schleife am Anfang ( die sich um den kompletten Term zieht) zu lösen?????????
Das mit der Summe ist quatsch da habt ihr recht

Wie kann ich das lösen das er nicht immer den letzten Wert für meine Gesamtsumme benutzt sondern die tatsächlich eingegebenen Werte berechnet????
Also Messwert 1, 2, 3, 4,......... und daraus die Summe berechnet??
( Bitte keine Vektoren das sprengt mein Gehirn
)
Vielen Dank
-
Hab mal zwei Möglichkeiten aufgeschrieben wie du jeweils den richtigen Messwert summierst, ich hoffe das sollte so in etwa klappen:
#include <iostream> using namespace std; int main() { int item[10]; int summe = 0; //das wäre eine Möglichkeit for (int i = 0 ; i < 10; i++){ int temp; cout << "Zahl " << i+1 << " eingeben: "; cin >> temp; summe += temp; } cout << "Summe: " << summe << endl; //oder so: summe = 0; for (int i = 0 ; i < 10; i++){ cout << "Zahl " << i+1 << " eingeben: "; cin >> item[i]; } for (int i = 0; i < 10; i++){ summe += item[i]; } cout << "Summe: " << summe; //und es gibt noch einige Andere }aber It0101 hat dir diese Variante ja schon gesagt

MfG
Jasc
-
Sodala, habe gerade versucht die Summe mit dem Beispiel vom Jasc zu überarbeiten .
Allerdings kommt jetzt eine Summe mit einer 0 zu viel raus?????
Wo habe ich den diesmal einen Fehler??
Irgend etwas wird da wohl multipliziert?Kann es sein das die geschweifte Klammer nicht stimmt?
Wenn ich sie zu mache nach der for-Anweisung bekomme ich einen Fehlercode??#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int Messwert, Wert, Summe, Mittelwert, b; Messwert = 0; Summe = 0; b = 0; while(Messwert<10) { cout<<"Bitte geben Sie einen Messwert ein:\n"; Messwert++; cin>>Wert; if(Wert<80) {cout<<"Messwert ist zu klein.\n"; Messwert--;} if(Wert>90) {cout<<"Messwert ist zu gross.\n"; Messwert--;} for (int Messwert = 0; Messwert < 10; Messwert++) Summe += Wert; } cout<<"\n"; cout<<"Die Gesamtsumme betraegt:\n"; cout<< Summe; cout<<"\n"; Mittelwert=Summe/10; cout<<"Der Mittelwert betraegt:\n"; cout<<Mittelwert; cout<<"\n"; system("PAUSE"); return EXIT_SUCCESS; }
-
PauliBär schrieb:
Sodala, habe gerade versucht die Summe mit dem Beispiel vom Jasc zu überarbeiten .
Allerdings kommt jetzt eine Summe mit einer 0 zu viel raus?????
Wo habe ich den diesmal einen Fehler??
Irgend etwas wird da wohl multipliziert?Kann es sein das die geschweifte Klammer nicht stimmt?
Wenn ich sie zu mache nach der for-Anweisung bekomme ich einen Fehlercode??#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int Messwert, Wert, Summe, Mittelwert, b; Messwert = 0; Summe = 0; b = 0; while(Messwert<10) { cout<<"Bitte geben Sie einen Messwert ein:\n"; Messwert++; cin>>Wert; if(Wert<80) {cout<<"Messwert ist zu klein.\n"; Messwert--;} if(Wert>90) {cout<<"Messwert ist zu gross.\n"; Messwert--;} for (int Messwert = 0; Messwert < 10; Messwert++) Summe += Wert; } cout<<"\n"; cout<<"Die Gesamtsumme betraegt:\n"; cout<< Summe; cout<<"\n"; Mittelwert=Summe/10; cout<<"Der Mittelwert betraegt:\n"; cout<<Mittelwert; cout<<"\n"; system("PAUSE"); return EXIT_SUCCESS; }Was soll denn dies bitte bringen?:
for (int Messwert = 0; Messwert < 10; Messwert++) Summe += Wert; }Weil ich sehe hier keine öffnende geschweifte Klammer... Oder bin ich heut etwa blind?
Oder fehlt dort ein Teil, der beim kopieren verloren gegangen ist?
Und dann streich die for-Schleife einfach mal!
Probier es mal so:if(Wert<80) {cout<<"Messwert ist zu klein.\n"; Messwert--;} else if(Wert>90) {cout<<"Messwert ist zu gross.\n"; Messwert--;} else Summe += Wert;Sollte funktionieren.
Und PS: Lern mal deinen Code vernünftig einzurücken.
-
Juhuuuu, es klappt .... vielen Dank Speedy92,

Bin so froh das mein Programm läuft.
Gibt es irgendwie die Möglichkeit die eingegebenen Werte in einem Array abzuspeichern?
Danke PauliBär
-
Ja, die gibt es... Ich gebe dir nur einen kleinen Denkanstoß:
Die Variable Messwert kannst du als Index benutzen.
Den Rest musst du selbst erledigen
-
Danke für den Tipp .......

Ist es jetzt korrekt?
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int Summe, Mittelwert,i,n; double Messwert[i], Wert[n]; i = 0; Summe = 0; n=0; while(i<10) { cout<<"Bitte geben Sie einen Messwert ein:\n"; i++; cin>>n; if(n<80) {cout<<"Messwert ist zu klein.\n"; i--;} else if(n>90) {cout<<"Messwert ist zu gross.\n"; i--;} else Summe += n; } cout<<"\n"; cout<<"Die Gesamtsumme betraegt:\n"; cout<< Summe; cout<<"\n"; Mittelwert=Summe/10; cout<<"Der Mittelwert betraegt:\n"; cout<<Mittelwert; cout<<"\n"; system("PAUSE"); return EXIT_SUCCESS; }
-
NEIN!!!
1. Du weißt schon was ein Compiler ist oder?
--->int Summe, Mittelwert,i,n; double Messwert[i], Wert[n];Kompilier deine Programme erst einmal!
PS: Stichwort "const"2. Geh bitte dein Programm durch uns suche mal die Stelle, WO Werte in dein Array geschrieben werden.
3. Überleg selber einmal was für eine Größe dein Array hat.
Wenn du das getan hast können wir gerne weiter reden.