ich hab was probiert aber es hat nicht funktioniert .. problem mit zeiger in c++



  • hallo zusammen,
    ich hab ein kleines problem freunde und ich hoffe dass ich bei euch die lösung finde.... also in folgendes findet ihr eine aufgabe als ein programm in c++ und ich weiß kaum womit ich anfangen soll....
    also ich bitte euch um hilfe wenn jemanden dafür fit ist
    vielen dank freunde.

    Praktikumsziele: Üben der Begriffe Zeiger, Referenzen, Call by Value/Reference

    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!!). Legen Sie jeweils die passende
    Übergabetechnik (Call by Value/Reference) fest.

    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.
      Freiwillige Zusatzaufgabe

    4. Eine Funktionen mit (gleichem) Namen swap, welche die Werte der Zeigervariablen
      vertauscht.

    ICH HABE FOLGENDES AUSPROBIERT... ABER ES HAT NICHT FUNKTIONIERT :

    #include <iostream>
    using namespace std;
    
    	int a=0, b=0;
    	int *pa=&a;
    	int *pb=&b;
    
    void inputValue(int &, int &)
    {
    	cout<<"Geben Sie Ihre Zahlen an :"<<endl;
    	cin>>a;
    	cin>>b;
    }
    
    void inputValue(int *, int *)
    {
    	cout<<"Geben Sie Ihre Zahlen an :"<<endl;
    	cin>>a;
    	cin>>b;
    }
    
    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 A ist = "<<pa<<endl;
    }
    
    void swap(int a, int b)
    {
    	int tmp;
    	tmp=a;
    	a=b;
    	b=tmp;
    }
    
    void main()
    {
    
    	int a, b;
    	int *pa=&a;
    	int *pb=&b;
    
    	inputValue(a,b);
    	outputValue(a,b);
    	swap(a,b);
    
    }
    


  • Zeile 8; Zeile 15 - wtf?
    Was funktioniert denn nicht?^^



  • Du musst schon die Variablen benennen, die du als Parameter übergibst. 😉
    z.B.:

    void inputValue(int& a, int& b)
    


  • sowie das hier jetzt ?? :

    #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)
    {
    	int a, b;
    	cout<<"Geben Sie Ihre Zahlen an :"<<endl;
    	cout<<" A : ";
    	cin>>a;
    	cout<<endl<<" B : ";
    	cin>>b;
    }
    
    void outputValue(int a, int b)
    {
    	cout<<"  A ist = "<<a<<"  "<<&a<<endl;
    	cout<<"  B ist = "<<b<<"  "<<&b<<endl;
    }
    
    void outputVlaue(int *pa, int *pb)
    {
    	int a=0, b=0;
    
    	cout<<" Zeiger A ist = "<<pa<<endl;
    	cout<<" Zeiger A ist = "<<pa<<endl;
    }
    
    void swap(int a, int b)
    {
    	int tmp;
    	tmp=a;
    	a=b;
    	b=tmp;
    }
    
    void main()
    {
    
    	int a, b;
    	int *pa=&a;
    	int *pb=&b;
    
    	inputValue(a,b);
    	swap(a,b);
    	outputValue(a,b);
    
    }
    

  • Mod

    Funktioniert es denn wie gewünscht? Wahrscheinlich nicht, weil die Variablennamen in den Funktionen mit den Pointern nicht zusammenpassen. Außerdem benutzt man Pointer anders als du es dort versuchst, du musst daran denken zu dereferenzieren.



  • und wie korrigiere ich das ??



  • danke sehr leute 😉


Anmelden zum Antworten