PDA

Vollständige Version anzeigen : Initialisierung der Variable in Case Anweisung


jonas67808
17.10.2007, 00:02
Hallo,

bei mir ist der folgende Fehler aufgetretem und ich habe keine Ahnung warum!

Konnte das Problem auch umgehen jedoch wäre ich super erfreut wenn jemand bereit wäre mir den Grund zu erklären ;-)

Folgender Bsp-Code...

Hatte ich eigentlich als Nachhilfe für einen Freund gedacht aber muss jetzt mal herhalten zum zeigen :p


#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{ int operation;
bool check = false;
int summe[3]={0,0,0};
string arr_Kriterien[6] = {"Motor","Verbrauch","Komfort","Sicherheit","Reperatur","Preis"};
int arr_gew[6] = {25,20,15,10,10,10};
int arr_auto_bewertung[3][6]={{6,9,9,8,5,4},{9,8,8,7,9,5},{10,8,10,5,5,5}};
do
{operation = 0;
cout << "Gewichtung aendern = 1" << endl << "Uebersicht = 2" << endl << "Auswertung = 3" << endl;
cin >> operation;

switch (operation)
{
case 1:
cout<<"Gewichtung"<< endl;
int i,nummer;
for(i=0;i<6;i++)
{cout << arr_Kriterien[i];
cout << arr_gew[i] << endl;
}
cout << endl << "Was möchten sie ändern";
cin >> nummer;
{ int gewichtung;
cout<<"Welche Gewichtung"<< endl;
cin >> gewichtung;
arr_gew[nummer-1] = gewichtung;
}
break;

case 2:
int ueberz = 1;
cout << setw(12) << "|" << setw(5) << "Gewichtung";
while (ueberz < 4)
{
cout << setw(10) <<"Auto" << ueberz;
ueberz++;
}
for (int j = 0; j < 6; j++)
{cout << endl;
cout << setw(10) << arr_Kriterien[j];
cout << setw(5) << arr_gew[j];
for (int i= 0; i < 3; i++)
{
cout << setw(15) << arr_auto_bewertung[i][j];
}
}
cout << endl << endl;
break;

case 3:

for (int i =0; i<3;i++)
{for (int j=0; j<6;j++)
{summe[i] = summe[i] + (arr_auto_bewertung[i][j] * arr_gew[j]);
}
cout << summe[i];
}
break;
};

check = false;
} while (check == false);
}


dabei tritt folgender Fehler auf:

error C2360: Initialisierung von 'ueberz' durch 'case'-Marke übersprungen
Visual Studio Projects\Auto\main.cpp(38): Siehe Deklaration von 'ueberz'

Wenn ich den Code fogenderweise ersetze, erscheint keine Fehlermeldung

Alter Code...


case 2:
int ueberz = 1;
cout << setw(12) << "|" << setw(5) << "Gewichtung";
while (ueberz < 4)
{
cout << setw(10) <<"Auto" << ueberz;
ueberz++;
}



Neuer Code


case 2:
int ueberz;
ueberz = 1;
cout << setw(12) << "|" << setw(5) << "Gewichtung";
while (ueberz < 4)
{
cout << setw(10) <<"Auto" << ueberz;
ueberz++;
}



Freue mich über jede Erklärung:)

VG Jonas

Stefan Kulpa
27.11.2007, 06:53
Ich bin jetzt nicht so der C-Crack, aber hat das vielleicht etwas damit zu tun, dass die Deklaration (neben der Initialisierung) innerhalb einer Do...While-Schleife erfolgt - und das bei jedem Durchlauf?