Hallo, ich versuche gerade mir C++ beizubringen und bin nun an einem Punkt angekommen wo ich nicht weiterkomme. Habe schon mehrere Tutorials konsultiert und mehre Foren durchsucht (einschlieslich diesem). kann den Fehler trotzdem nicht finden.
Das unten angefügte Programm soll zwei Namen an eine Klasse übergeben und diese dann im gewünschten Format ausgeben.
Das Problem ist , dass sich das Programm zwar Kompilieren und ausführen lässt, dann aber nichts passiert.
Ich vermute, dass der Fehler bei der Übergabe der Namen liegt.
Das Programm besteht aus den Dateien: Prog6_4.cpp name.cpp und name.h
getrennt habe ich sie durch die Minuszeichen.
Für Hilfe bedanke ich mich schon mal im vorraus.
------------------------------------------------
//Prog6_4.cpp
#include <iostream.h>
#include <name.h> //selbstgeschrieben
#include <stdio.h>
int main(void)
{
Name Adam, Eva;
Adam.SetzeNamen("Adam", "Adam", "Ärmlich"); //zuweisen des ersten Namens
Eva.SetzeNamen("Eva", "Edda", "Eifrig"); //zuweisen des zweiten Namens
Adam.SetzeFormat(1); //Format setzen
Eva.SetzeFormat(2); //Format setzen
cout << "Sein Name ist: " << Adam.HoleNamen () << "\n"; //hohlt den Namen Wieder
cout << "Ihr Name ist: " << Eva.HoleNamen () << "\n"; //hohlt den Namen Wieder
return 0;
}
-----------------------------------------
//name.h
class Name {
protected:
char *ErsterVorname;
char *ZweiterVorname;
char *NachName;
static char AusStrom[61];
static int Format;
public:
void SetzeNamen(char VName1[20], char VName2[20], char NaName[20]);
char HoleNamen(void);
void SetzeFormat(int EinFormat);
};
------------------------------------
//name.cpp
#include <name.h>
#include <stdio.h>
#include <iostream.h>
int Name::Format;
char Name::AusStrom[61];
void Name::SetzeNamen(char VName1[20], char VName2[20], char NaName[20])
{
cout << VName1[20] << "\n"; //zur kontrolle ob der String richtig angekommen ist
cout << VName2[20] << "\n";
cout << NaName[20] << "\n";
*ErsterVorname = VName1[20]; // übergabe des strings
*ZweiterVorname = VName2[20];
*NachName = NaName[20];
cout << ErsterVorname << "\n"; //zur kontrolle ob der String richtig übergeben wurde
cout << ZweiterVorname << "\n";
cout << NachName << "\n";
}
char Name::HoleNamen(void)
{
switch (Format)
{
case 2 : printf(AusStrom, "%s %s %s" , ErsterVorname, ZweiterVorname, NachName); //Format1
break;
case 3 : printf(AusStrom, "%s %s %s" , ErsterVorname, NachName, ZweiterVorname); //Format2
break;
case 4 : printf(AusStrom, "%s %s %s" , NachName, ZweiterVorname, ErsterVorname); //Format3
break;
case 1 :
default : printf(AusStrom, "%s %s %s" , NachName, ZweiterVorname, ErsterVorname); //Format4
break;
}
return AusStrom[61];
}
void Name::SetzeFormat(int EinFormat)
{
Format = EinFormat;
}
Das unten angefügte Programm soll zwei Namen an eine Klasse übergeben und diese dann im gewünschten Format ausgeben.
Das Problem ist , dass sich das Programm zwar Kompilieren und ausführen lässt, dann aber nichts passiert.
Ich vermute, dass der Fehler bei der Übergabe der Namen liegt.
Das Programm besteht aus den Dateien: Prog6_4.cpp name.cpp und name.h
getrennt habe ich sie durch die Minuszeichen.
Für Hilfe bedanke ich mich schon mal im vorraus.
------------------------------------------------
//Prog6_4.cpp
#include <iostream.h>
#include <name.h> //selbstgeschrieben
#include <stdio.h>
int main(void)
{
Name Adam, Eva;
Adam.SetzeNamen("Adam", "Adam", "Ärmlich"); //zuweisen des ersten Namens
Eva.SetzeNamen("Eva", "Edda", "Eifrig"); //zuweisen des zweiten Namens
Adam.SetzeFormat(1); //Format setzen
Eva.SetzeFormat(2); //Format setzen
cout << "Sein Name ist: " << Adam.HoleNamen () << "\n"; //hohlt den Namen Wieder
cout << "Ihr Name ist: " << Eva.HoleNamen () << "\n"; //hohlt den Namen Wieder
return 0;
}
-----------------------------------------
//name.h
class Name {
protected:
char *ErsterVorname;
char *ZweiterVorname;
char *NachName;
static char AusStrom[61];
static int Format;
public:
void SetzeNamen(char VName1[20], char VName2[20], char NaName[20]);
char HoleNamen(void);
void SetzeFormat(int EinFormat);
};
------------------------------------
//name.cpp
#include <name.h>
#include <stdio.h>
#include <iostream.h>
int Name::Format;
char Name::AusStrom[61];
void Name::SetzeNamen(char VName1[20], char VName2[20], char NaName[20])
{
cout << VName1[20] << "\n"; //zur kontrolle ob der String richtig angekommen ist
cout << VName2[20] << "\n";
cout << NaName[20] << "\n";
*ErsterVorname = VName1[20]; // übergabe des strings
*ZweiterVorname = VName2[20];
*NachName = NaName[20];
cout << ErsterVorname << "\n"; //zur kontrolle ob der String richtig übergeben wurde
cout << ZweiterVorname << "\n";
cout << NachName << "\n";
}
char Name::HoleNamen(void)
{
switch (Format)
{
case 2 : printf(AusStrom, "%s %s %s" , ErsterVorname, ZweiterVorname, NachName); //Format1
break;
case 3 : printf(AusStrom, "%s %s %s" , ErsterVorname, NachName, ZweiterVorname); //Format2
break;
case 4 : printf(AusStrom, "%s %s %s" , NachName, ZweiterVorname, ErsterVorname); //Format3
break;
case 1 :
default : printf(AusStrom, "%s %s %s" , NachName, ZweiterVorname, ErsterVorname); //Format4
break;
}
return AusStrom[61];
}
void Name::SetzeFormat(int EinFormat)
{
Format = EinFormat;
}