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.- 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 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. - 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.
- 2 Funktionen mit dem (gleichen) Namen inputValue zur Eingabe der Werte der beiden
-
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"); }