Problem mit Zeiger-Aufgabe

dersimo

Grünschnabel
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.

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.
Für alle Funktionen (ohne main) sind Entwurf und Testplan zu erstellen.
 
Zeig einmal, was du bis jetzt probiert hast...
Und bitte die Codetags nicht vergessen
( [ cpp ] ... [ /cpp ] ohne leerzeichen)
 
ich hab die sache mit zeiger nicht verstanden.. und jetzt weiß ich gar nicht was soll ich tun oder wmit ich anfangen soll.... deswegen hab ich euch um hilfe gebeten .
 
Wenn du was probiert hast, dann kannst du es ruhig hierhin schreiben, wie dich Maik ja schon hingewiesen hat.

C++:
#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;
}

Ist das der komplette Code?
Irgendwie fehlt da ein main (das in deiner Angabe sogar extra drinsteht)
Globale Vars darfst du laut Angabe auch nicht verwenden

Einmal angenommen, du hast ein main und keine glob. Variablen.

Erste inputValue-Funktion: Du liest a und b ein, aber was ist das? Du musst deinen Parametern schon Namen geben.
Zweites inputValue: Gleich wie Erste, ausserdem Solltest du nicht Adressen sondern Werte einlesen
Das ist ja eben der Unterschied zwischen den zwei Funktionen; vor a und b gehört ein *.
Erstes outputValue ist OK
Zweites: Es sollte outputValue heißen, und wieder die Sternsache

swap fehlt, main wie schon erwähnt auch

Noch zur Info: Ein Pointer merkt sich nur den "ort" einer anderen Variable im RAM.
Da die einzelnen Bytes im RAM quasi durchnummeriert sind, ist ein Pointer nichts anderes
wie eine Variable, die sich eine Stelle im RAM merkt.
Ein int* ist eben dazu gedacht, sich den Platz von einem int zu merken, analog für alle anderen Variablentypen.
Mit dem Pointer selber greifst du auf die gemerkte Nummer zu, mit einem Stern davor auf die Variable, auf die er "zeigt"
 
Zuletzt bearbeitet:
okay... also ich hab jtzt was korrigiert und trotzdem tauscht das programm die variablen nicht
Code:
#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);
	

}
 
du meinst so was in der art :
Code:
#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 *pa=&a, *pb=&b;
	int tmp;
	tmp=*pa;
	*pa=*pb;
	*pb=tmp;
}

void main()
{


	int a, b;
	int *pa=&a;
	int *pb=&b;
	
	inputValue(a,b);
	swap(a,b);
	outputValue(a,b);
	

}
 
Nein, sondern
Zeigervariante:
void swap(int *a, int *b)
Und
int *pa=&a, *pb=&b;
weglassen

Pointervariante vom inputValue hat noch Fehler
Und ein zweites swap ist auch gefordert
 
danke sehr.. es hat funktioniert... aber die sache mit dem zweiten inputValue hab ich nicht ganz verstanden
Code:
#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<<endl;
	cout<<"  B ist = "<<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 *pa, int *pb)
{
	int tmp;
	tmp=*pa;
	*pa=*pb;
	*pb=tmp;
}

void main()
{


	int a, b;
	int *pa=&a;
	int *pb=&b;
	
	inputValue(a,b);
	swap(a,b);
	outputValue(a,b);
	

}
 

Neue Beiträge

Zurück