Beispiel 1: askEnglish

21.11.2016 06:30 Uhr
#include <iostream>

using namespace std;

void askEnglish(char *vorname, char *nachname);
void frageDeutsch(char *vorname, char *nachname);
void greetEnglish(char *vorname, char *nachname);
void gruesseDeutsch(char *vorname, char *nachname);

int main()
{
char vorname[100] = "";
char nachname[100] = "";
char sprache;

cout << "Wählen Sie Ihre Sprache:" << endl;
cout << "e = English" << endl;
cout << "d = deutsch" << endl;
cout << "   Ihre Wahl:";
cin >> sprache;

switch(sprache)
   {
case 'e':
   askEnglish(vorname,nachname);
   break;
case 'd':
   frageDeutsch(vorname,nachname);
   break;
default:
   cout << "I do not know your language / Maybe you know English?";
   askEnglish(vorname,nachname);
   sprache='e';
   break;
   }

switch(sprache)
   {
case 'e':
   greetEnglish(vorname,nachname);
   break;
case 'd':
   gruesseDeutsch(vorname,nachname);
   break;
   }
}

void askEnglish(
char           *vorname,
char                   *nachname)
{
cout << "What's your first name?";
cin >> vorname;
cout << "What's your second name?";
cin >> nachname;
}
   

void frageDeutsch(
char             *vorname,
char                     *nachname)
{
cout << "Wie lautet Ihr Vorname?";
cin >> vorname;
cout << "Wie lautet Ihr Familienname?";
cin >> nachname;
}
 
void greetEnglish(
char             *vorname,
char                     *nachname)
{
cout << "Welcome, " << vorname << " " << nachname << "!" << endl;
}

void gruesseDeutsch(
char               *vorname,
char                       *nachname)
{
cout << "Willkommen, " << vorname << " " << nachname << "!" << endl;
}

Beispiel 1: Erläuterungen I

#include <iostream>

using namespace std;

void askEnglish(char *vorname, char *nachname);
void frageDeutsch(char *vorname, char *nachname);
void greetEnglish(char *vorname, char *nachname);
void gruesseDeutsch(char *vorname, char *nachname);

int main()
{
char vorname[100] = "";
char nachname[100] = "";
char sprache;

Einfachste Form der Verarbeitung
von Variable dimensionierten Datenobjekten, wie Arrays:
1) Die Funktion, die die Verarbeitung anordnet, definiert die Variable
   und sorgt dadurch dafür, daß sie existiert, solange die Funktion aktiv ist.
2) Alle Funktionen, die mit der Verarbeitung des Objekts betraut sind,
   kriegen einen 'Zeiger' auf seine Anfangsadresse im Speicher.
3) Die zusammenarbeitenden Funktionen sind selbst dafür verantwortlich, dafür zu
   sorgen, daß kein Speicher überschrieben wird, der nicht reserviert wurde.
   (In unserem Beispiel wäre das etwa: nachname[150])
   Bei Zeichenketten gescheiht dies durch die Konvention, daß jede
   zeichenkettenverarbeitende Funktion sich daran zu halten hat, daß:
   a) Ein von Ihre erzeugtes array von Zeichen (char [...]) immer mit einer
      Null schließt.
   b) In einem ihr zur Verarbeitung übergebenen Array grundsätzlich nie
      versucht wird, ein Zeichen nach der abschließenden Null zu verwenden.

cout << "Wählen Sie Ihre Sprache:" << endl;
cout << "e = English" << endl;
cout << "d = deutsch" << endl;
cout << "   Ihre Wahl:";
cin >> sprache;

switch(sprache)
   {
case 'e':
   askEnglish(vorname,nachname);
   break;
case 'd':
   frageDeutsch(vorname,nachname);
   break;
default:
   cout << "I do not know your language / Maybe you know English?";
   askEnglish(vorname,nachname);
   sprache='e';
   break;
   }

switch(sprache)
   {
case 'e':
   greetEnglish(vorname,nachname);
   break;
case 'd':
   gruesseDeutsch(vorname,nachname);
   break;
   }
}

void askEnglish(
char           *vorname,
char                   *nachname)
{

Innerhalb der aufgerufenen Funktionen erscheint das
oben als
char vorname[100]
erklärte array also als
char *vorname.

Zwischen "Arrays von x" (x = char, int, float ...) und "Zeigern auf x"
bestehen u.a. die folgenden Beziehungen.

Für die Beispiele seien gegeben:

char array[100];
char *zeiger;

Wenn die Zuweisung
zeiger = array;
ausgeführt wird, gilt:
*zeiger == array[0]
*(zeiger+i) == array[i]
zeiger == array
zeiger == &array[0]
zeiger + i == &array[i]
cout << "What's your first name?";
cin >> vorname;
cout << "What's your second name?";
cin >> nachname;
}
   

void frageDeutsch(
char             *vorname,
char                     *nachname)
{
cout << "Wie lautet Ihr Vorname?";
cin >> vorname;
cout << "Wie lautet Ihr Familienname?";
cin >> nachname;
}
 
void greetEnglish(
char             *vorname,
char                     *nachname)
{
cout << "Welcome, " << vorname << " " << nachname << "!" << endl;
}

void gruesseDeutsch(
char               *vorname,
char                       *nachname)
{
cout << "Willkommen, " << vorname << " " << nachname << "!" << endl;
}

Anhang: example1.cpp

Schlagwörter: