Problem mit switch?!
-
Hi, hab n Progrämmchen geschrieben, allerdings funktionierts nicht ganz wie es soll. Compiler spuckt allerdings keinen Fehler aus.
Aufgabe:
Programm, das positive Ganzzahlen von der Tastatur einliest und
diese in einem Feld der Größe 500 Elemente speichert. Die Eingabe wird mit einer
negativen Zahl beendet. Es soll dann über eine kleine Benutzerführung möglich sein,
die Zahlen aufzulisten, die Zahl aller eingegebenen Zahlen anzuzeigen, ihre Summe
zu berechnen, die Summe aller Quadrate zu berechnen, die Summe aller ungeraden
Zahlen zu berechnen und die Summe aller Zahlen mit ungeradem Feldindex zu
berechnen.mein Code:
#include <iostream> #include <cstdlib> using namespace std; int main (int argc, char * const argv[]) { int k[500]; char wdh; int menu,feldzahl; int Summe=0; do { cout<<"\n positive GANZZAHLEN eingeben!!!\nBei Eingabe einer negativen Zahl: Ende Eingabe"; for (int a=0;a<500;a++) { cout<<"\nBitte " <<a <<"tes Feldelement eingeben\t"; cin>>k[a]; if(k[a]<0) { feldzahl=a; //Anzahl der geutzten Elemente a=500; //for-Bedingung nicht mehr erfüllt, Eingabe fertig! }//if-Klammer } //for-Klammer cout << "\nmoechten Sie die eingegebenen Zahlen in der Eingabereihenfolge ausgeben? press 1" <<"\nmoechten Sie die Anzahl der eingegebenen Zahlen erfahren? press 2" <<"\nmoechten Sie die Summe aller eingegebenen Zahlen ausgeben? press 3" <<"\nmoechten Sie die Summe aller Quadrate der eingegebenen Zahlen ausgeben? press 4" <<"\nmoechten Sie die Summe aller ungeraden Zahlen ausgeben? press 5" <<"\nmoechten Sie die Summe aller Feldelemente mit ungeradem Index ausgeben? press 6\n"; cin >> menu; switch (menu) { case '1': // Eingabereihenfolgeausgabe for (int a=0;a<=feldzahl;a++) { cout<<"\n" <<a <<"tes Feldelement:\t" << k[a]; } break; case '2': //Anzahl der eingegebenen Feldelemente cout<< "\nAnzahl der eingegebenen Feldelemente:\t" <<feldzahl; break; case '3': //Summe aller eingegebenen Zahlen for (int a=0;a<=feldzahl;a++) { Summe=Summe+k[a]; } cout<<"\nErgebnis ist:" <<Summe; break; case '4': //Summe aller Quadrate der eingegebenen Zahlen Summe=0; for (int a=0;a<=feldzahl;a++) { Summe=Summe+(k[a]*k[a]); } cout<<"\nErgebnis ist:" <<Summe; break; case '5': //Summe aller ungeraden Zahlen Summe=0; for (int a=0;a<=feldzahl;a++) { if (k[a]%2!=0) { Summe=Summe+k[a]; }//if-klammer }//for cout<<"\nErgebnis ist:" <<Summe; break; case '6': //Summe aller... mit ungeradem Feldindex Summe=0; for (int a=1;a<=feldzahl;a+=2) { Summe=Summe+k[a]; } cout<<"\nErgebnis ist:" <<Summe; break; }//switch-klammer cout<<"\nWiederholen?(j/n)"; cin>>wdh; }//do-klammer while (wdh=='j'||wdh=='J'); return 0; }Denk, dass im switch irgendein Fehler is.
Danke schonma
-
Pff... also rück das mal bitte etwas ordentlicher ein ... und nutze Functor's ...
Ehm also dein Fehler ist, das du int einließt (1 bsw.), aber auf z.B. char '1' vergleichst. Nimm case 1: und es klappt

Achja und nimm std::vector usw.

-
also erstma danke, stimmt natürlich... hab ch in der hektik vorhin verschlimmbessert

Was soll ich bitte verwenden? std::vector??
und das ist was?
-
du sollst mit vector arbeiten.
dann machst du einfach einen
vector<int> vec_integer;
lässt den benutzer mit einer schleife eine neuezahl einlesen und hängst sie mit folgendem befehl an den vector dran:
vec_integer.push_back(neuezahl);
-
zu dem thema fällt mir auch noch riks artikel "Object-Switching" ein.