Hi

Ganz im Rahmen von "Keep it simple" wollte ich mal noch hinzufügen, dass Du den Kode z.B. folgendermaßen stark verkürzen könntest.
Ich verstehe zwar nicht Dein Verfahren, nach dem Du Kode einrückst, aber ich habe mal versucht es zu übernehmen...
Code:
int (*calc)(int, int);
switch(Buchstabe)
{
case 'a':
    calc = &Add;
    cout<<"Bitte geben Sie 2 Zahlen ein,die miteinander addiert werden sollen!"<<endl;
    break;
case 'b':
    calc = &Sub;  
    cout<<"Bitte geben Sie 2 Zahlen ein,die voneinander subtrahiert werden sollen!"<<endl;
    break;
         
case 'c':
    calc = &Mult;
    cout<<"Bitte geben Sie 2 Zahlen ein,die multipliziert werden sollen!"<<endl;
    break;
    
case 'd':
    calc = &Div;
    cout<<"Bitte geben Sie 2 Zahlen ein,die dividiert werden sollen!"<<endl;
    break;
}
int a;
int b;
cin>>a;
cin>>b;
cout<<"Das Ergebnis lautet : "<<calc(a,b)<<endl;
Es fehlt noch die bereits erwähnte default-Anweisung und auch dieses Verfahren ist noch nicht das sauberste, aber es ist zumindest schonmal kürzer als das, was Du da geschrieben hattest...
Denk mal daran: (Fast) immer, wenn Du etwas mehrmals schreiben musst, solltest Du versuchen, es auf eine einzige Version zu beschränken (z.B. in Form einer Funktion, die entsprechend oft aufgerufen wird).
Das hat mehrere Vorteile. Der Kode ist übersichtlicher, weniger fehlerträchtig, kleiner (also die Größe der Programmdatei)...

Eine Entscheidung, die man aber eher bei größeren Projekten beachten muss, ist ein geeignetes Verhältnis zwischen Größe und Geschwindigkeit zu finden.
Jede Funktion kann auch als #define-Direktive vom Präprozessor unmittelbar in den Quellkode eingefügt werden, was die Geschwindigkeit des Programms erheblich erhöhen kann - die Programmdatei wird jedoch entsprechend größer.
Die andere Möglichkeit besteht darin, den oft verwendeten Kode in einer ("ganz normalen") Funktion zu verfassen. Durch das viele "Umherspringen" wird das Programm zwar langsamer, dafür wird die Programmdatei kleiner.
Gerade bei großen Projekten muss man das günstige Mittel abwägen.

Als Beispiel: Ein Programm, dass einen bestimmten Kode mehrmals aufrufen möchte - zuerst mit "normalen Funktionen" (der Sinn dieses Programms sei dahingestellt... ):
Code:
#include <stdio.h>
void hello_mr_x(char *name)
{
  printf("Hello %s", name);
}

int main(void)
{
  hello_mr_x("Klaus");
  hello_mr_x("Peter");
  return 0;
}
Das Programm "hoppst" zur Funktion hello_mr_x(), wieder zurück, wieder hin, wieder zurück... dieser Kode ist zwar klein, aber langsam (in diesem Fall wird das nicht ins Gewicht fallen... aber wie gesagt, bei größeren Projekten kann es durchaus eine Rolle spielen)
Nun das Ganze mit #define-Direktiven:
Code:
#include <stdio.h>

#define hello_mr_x(name) printf("Hello %s", name);

int main(void)
{
  hello_mr_x("Klaus");
  hello_mr_x("Peter");
  return 0;
}
Hier muss nicht "gehoppst" werden, das Programm ist schneller, aber größer. (Gut, in diesem Fall zwar nicht, aber wenn hello_mr_x() mehrere Zeilen beinhalten würde, was bei Funktionen normalerweise der Fall ist). Das nennt man dann übrigens Makros.

Soweit.
GreetZ RiDER