Zeiger



  • Hallo ich habe eine c++ Aufgabe die ich ast gelöst habe .

    Zur Vorführung in einem Programmierkurs soll ein Programm erstellt werden, in dem dann das
    Verhalten von Variablen und zugehörigen Zeigervariablen mittels Funktionen demonstriert
    werden soll. In dem Programm sind daher 2 Variable (z.B. a,b) eines ausgewählten Typs zu
    deklarieren und geeignet zu initialisieren, sowie 2 Zeigervariable auf diesen Typ (z.B. pa und
    pb), welche anfänglich auf die beiden Variablen verweisen.
    Dann sind folgende Funktionen zu erstellen, wobei die Variablen bzw. Zeigervariablen als
    Parameter zu übergeben sind (keine globalen Größen!!). Dabei sollen die verschiedenen
    Übergabetechniken (Call by Value/Reference) verwendet werden.

    1. 2 Funktionen mit dem (gleichen) Namen inputValue zur Eingabe der Werte der beiden
      Variablen über Tastatur. Die eine Funktion hat dabei Referenzen als Parameter , die
      andere hat die beiden Zeigervariablen als Parameter.
    2. 2 Funktionen mit dem (gleichen) Namen outputValue zur Anzeige der Werte der beiden
      Variablen am Bildschirn. Die eine Funktion hat dabei die Variablen selbst als Parameter,
      die andere hat die beiden Zeigervariablen als Parameter.
    3. Eine Funktionen mit Namen swap, welche die Werte der Variablen vertauscht.

    Das Programm main soll dann ein Menue enthalten, in welchem der Dozent wiederholt eine der
    Funktionen auswählen und aufrufen bzw. das Programm beenden kann.

    Mein code sieht so aus:

    #include <iostream>
    using namespace std;
    
    void inputValue(int& a, int& b)
    {
    
        cout<<"Geben Sie Ihre Zahlen an :"<<endl;
    
        cin>>a;
    
        cin>>b;
    }
    
    void inputValue(int *pa, int *pb)
    {
    
        cout<<"Geben Sie Ihre Zahlen an :"<<endl;
        cout<<" A : ";
        cin>>*pa;
        cout<<endl<<" B : ";
        cin>>*pb;
    }
    
    void outputValue(int a, int b)
    {
        cout<<"  A ist = "<<a<<endl;
        cout<<"  B ist = "<<b<<endl;
    }
    
    void outputVlaue(int *pa, int *pb)
    {
    
        cout<<" Zeiger A ist = "<<pa<<endl;
        cout<<" Zeiger B ist = "<<pb<<endl;
    }
    
    void swap(int *pa, int *pb)
    {
        int tmp;
        tmp=*pa;
        *pa=*pb;
        *pb=tmp;
    }
    
     int main()
    {
    
        int a, b;
        int *pa=&a;
        int *pb=&b;
    
        inputValue(a,b);
    
        swap(pa,pb);
        outputValue(a,b);
    
    cout<<"Choose a operation:"<<endl;
    cout<<endl;
    cout<<"(1)-   Output of  A and  B :"<<endl;
    cout<<"(2) Print  A and B:"<<endl;
    cout<<"(3) Change A and B:"<<endl;
    cout<<"(4)  zeiger A and B"<<endl;
    cout<<"(5) programm quit:"<<endl;
    
    cin>>opt;
    switch(opt)
    {
    case 1:
    	cout<<" geben sie A und B ein:"<<endl;
        cout<<" A : ";
        cin>>a;
        cout<<endl<<" B : ";
        cin>>b;
    	break;
    case 2:
    	 cout<<"  A ist = "<<a<<endl;
        cout<<"  B ist = "<<b<<endl;
    	break;
    case 3:
    
    	 swap( pa,  pb);
          outputValue( a,  b);
    	  ;
    break;
    case 4:
    	cout<<" Zeiger A ist = "<<*pa<<endl;
        cout<<" Zeiger B ist = "<<*pb<<endl;
    
    	break;
    
    case 5:
    	cout << "bye">> endl;;
    
    	break;
    default:
    	cout<<"wrong typed:"<<endl;
    }
    	system("pause");
    
    	}
    

    Aber irgendwie scheint das Programm nicht zu funktionieren .

    Ich wollte das Programm mit einem Menü darstellen , damit man jeweils die Funktionen auswählen kann .

    Aber es funktioniert nicht.

    Ich hoffe hier kann mir jemand helfen und gegebenfalls korrigieren.



  • Hier hast du schon mal was, was kompiliert:
    Hinter den Zeilen, die ich geändert hab, steht ein großes "HIER".

    Und noch nebenbei: "nicht funktionieren" ist keine Fehlerbeschreibung.

    #include <iostream> 
    #include <windows.h> // HIER
    using namespace std; 
    
    void inputValue(int& a, int& b) 
    { 
    
         cout<<"Geben Sie Ihre Zahlen an :"<<endl; 
    
         cin>>a; 
    
         cin>>b; 
    } 
    
    void inputValue(int *pa, int *pb) 
    { 
    
         cout<<"Geben Sie Ihre Zahlen an :"<<endl; 
         cout<<" A : "; 
         cin>>*pa; 
         cout<<endl<<" B : "; 
         cin>>*pb; 
    } 
    
    void outputValue(int a, int b) 
    { 
         cout<<"  A ist = "<<a<<endl; 
         cout<<"  B ist = "<<b<<endl; 
    } 
    
    void outputVlaue(int *pa, int *pb) 
    { 
    
         cout<<" Zeiger A ist = "<<pa<<endl; 
         cout<<" Zeiger B ist = "<<pb<<endl; 
    } 
    
    void swap(int *pa, int *pb) 
    { 
         int tmp; 
         tmp=*pa; 
         *pa=*pb; 
         *pb=tmp; 
    } 
    
      int main() 
    { 
    
         int a, b; 
         int *pa=&a; 
         int *pb=&b; 
    
         inputValue(a,b); 
    
         swap(pa,pb); 
         outputValue(a,b); 
    
     cout<<"Choose a operation:"<<endl; 
     cout<<endl; 
     cout<<"(1)-   Output of  A and  B :"<<endl; 
     cout<<"(2) Print  A and B:"<<endl; 
     cout<<"(3) Change A and B:"<<endl; 
     cout<<"(4)  zeiger A and B"<<endl; 
     cout<<"(5) programm quit:"<<endl; 
    
       int opt; // HIER
     cin>>opt; 
    switch(opt) 
    { 
    case 1: 
         cout<<" geben sie A und B ein:"<<endl; 
         cout<<" A : "; 
         cin>>a; 
         cout<<endl<<" B : "; 
         cin>>b; 
         break; 
    case 2: 
          cout<<"  A ist = "<<a<<endl; 
         cout<<"  B ist = "<<b<<endl; 
         break; 
    case 3: 
    
          swap( pa,  pb); 
           outputValue( a,  b); 
           ; 
    break; 
    case 4: 
         cout<<" Zeiger A ist = "<<*pa<<endl; 
         cout<<" Zeiger B ist = "<<*pb<<endl; 
    
         break; 
    
    case 5: 
         cout << "bye" << endl;; // HIER
    
         break; 
    default: 
         cout<<"wrong typed:"<<endl; 
    } 
         system("pause"); 
    
         }
    

Anmelden zum Antworten