Switch...???

Tags:    c++

Hej!

Er der nogen der kan hjælpe mig med det her???

// EDDIE //
// by GreenSoft 2004 //

#include <fstream>
#include <iostream>

using namespace std;

int main()
{

SetConsoleTitle("Eddie");
ifstream ifile("EDDIE.DAT");

char navn[50];
int dato;
int maaned;
int aar;

ifile >> navn >> dato >> maaned >> aar;

if (ifile.fail())
{

ifile.close();

ofstream ofile("EDDIE.DAT");

char midlnavn[50];
int midldato;
int midlmaaned;
int midlaar;

cout << "Hej! Jeg hedder Eddie." << endl;

cout << "Da det er foerste gang du bruger programmet, skal jeg bruge dit navn.\\n" << endl;

cout << "Skriv dit fornavn og afslut med <Enter>:" << endl;
cin >> midlnavn;

cout << "\\n";

cout << "Okay, " << midlnavn << ". Hvornaar blev du saa foedt?\\n" << endl;

cout << "Skriv din foedselsdato adskilt med mellemrum (DD MM YY):" << endl;
cin >> midldato >> midlmaaned >> midlaar;
ofile << midlnavn << " " << midldato << " " << midlmaaned << " " << midlaar;

cout << "\\n";

ofile.close();

ifstream ifile("EDDIE.DAT");

ifile >> navn >> dato >> maaned >> aar;
}

switch (maaned) {
case 1:
char maanednavn[] = "Januar";
break;
case 2:
char maanednavn[] = "Februar";
break;
case 3:
char maanednavn[] = "Marts";
break;
case 4:
char maanednavn[] = "April";
break;
case 5:
char maanednavn[] = "Maj";
break;
case 6:
char maanednavn[] = "Juni";
break;
case 7:
char maanednavn[] = "Juli";
break;
case 8:
char maanednavn[] = "August";
break;
case 9:
char maanednavn[] = "September";
break;
case 10:
char maanednavn[] = "Oktober";
break;
case 11:
char maanednavn[] = "November";
break;
default:
char maanednavn[] = "December";
break;
}

cout << "Hej, " << navn << "!" << endl;
cout << "Du blev foedt d. " << dato << " " << maanednavn << " " << aar << "." << endl;

ifile.close();

system("PAUSE");
return(0);
}

Jeg får en fejl ved case 2... noget med "jump to case label", tror jeg nok...



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Det er fordi at man ikke må oprette variabler inde i en switch, de skal oprettes uden for den, som fx:

char maanednavn[20];
memset(&maanednavn[0], '\\0', 20);
switch(maaned)
{
case 1:
sprintf(&maanednavn[0], "August");
break;
}

Du kan jo bare rette den lidt til, gider bare ikke lige tjekke hvor mange bogstaver der maksimalt er i et månedsnavn. Det antal + 1 (for nulterminator) skal maanednavn så være, og så skal memset også rettes til det.

n i f e
115 105 102 105
6E 69 66 69

[Redigeret d. 14/08-04 15:31:08 af Nicolai Lyster Fersner]



Man kan godt oprette en variabel inde i en switch; deres scope er dog begrænset så man kan ikke bruge den uden for switchen.

Fold kodeboks ind/udKode 


Hvis man ikke gider checke hvor mange char's man har brug for bør man bruge en std::string:

Fold kodeboks ind/udKode 




t