Wiederholung & Container

30.05.2017 09:31 Uhr

Ressourcen

Sozusagen zum „Abschluss“ des compilerunabhängigen C++ nochmal ein sehr gutes
Nachschlagewerk:

Leider ist Martin Aupperle: Die Kunst der Programmierung mit C++,Vieweg 2002,
[ Neupreis Euro 49,90] vergriffen, prinzipiell immer noch sehr empfehlenswert.

Als umfassendes neues Nachschlagwerk, das auch die heute angerissene Standardbibliothek und die dazu nötigen Programmiertechniiken voll abdeckt: Jürgen Wolf: C++ von A bis Z: Das umfassende Handbuch, Galileo Computing, 2009, Euro 39,90.

Das beste Buch zur Verwendung der Standardbibliothek ist vermutlich
(leider sehr teuer, die deutsche Ausgabe ist vergriffen)
Nicolai M. Josuttis: The C++ Standard Library. A Tutorial
and Reference, Addison Wesley: 2012 , Euro 47,95

Siehe insbesonders auch das Verzeichnis der im Internet zugänglichen
Beispiele


Wiederholung – Stufe 1 (Zeichenketten)

#include 
using namespace std;
#include 

#include "zk1.h"

int main(){
	ClZeichenKette zk1, zk2, zk3;
	cout << "Bitte geben Sie eine beliebig lange erste Zeichenkette ein:"; cin >> zk1;
	cout << "Bitte geben Sie eine beliebig lange zweite Zeichenkette ein:"; cin >> zk2;

	zk3 = zk1 + zk2;
	cout << zk1 << " + " << zk2 << " = " << zk3 << endl;

	return 0;
}	

Wiederholung – Stufe 2 (Zeichenketten)

#include 
using namespace std;
#include 

#include "zk2.h"

int main(){
	ClZeichenKette zk1, zk2, zk3;
	cout << "Bitte geben Sie eine beliebig lange erste Zeichenkette ein:"; cin >> zk1;
	cout << "Bitte geben Sie eine beliebig lange zweite Zeichenkette ein:"; cin >> zk2;

	zk3 = zk1 + zk2;
	cout << zk1 << " + " << zk2 << " = " << zk3 << endl;

	return 0;
}	

Wiederholung – Stufe 3 (Zeichenketten)

#include 
using namespace std;
#include 

#include "zk3.h"


int main(){
	ClZeichenKette zk1, zk2, zk3;
	cout << "Bitte geben Sie eine beliebig lange erste Zeichenkette ein:"; cin >> zk1;
	cout << "Bitte geben Sie eine beliebig lange zweite Zeichenkette ein:"; cin >> zk2;

	zk3 = zk1 + zk2;
	cout << zk1 << " + " << zk2 << " = " << zk3 << endl;

	return 0;
}	

Wiederholung – Stufe 4

#include 
using namespace std;

int main(){
	int beispiel1[1000];
	int i;
	struct beispiel2{
	   int wert;
	   struct beispiel2 *naechstes;
	   struct beispiel2 *voriges;
	};
	struct beispiel2 *wurzel, *jetzt, *zuletzt;


	for (i=0;i<6;i++) beispiel1[i]=i;

	for (i=0,wurzel=NULL,zuletzt=NULL;i<6;i++){ jetzt=new struct beispiel2; jetzt->naechstes=NULL;
	    jetzt->wert=i;
	    if (wurzel==NULL) wurzel=jetzt;
	    else zuletzt->naechstes=jetzt;
	    jetzt->voriges=zuletzt;
	    zuletzt=jetzt;
	}

	for (i=0;i < 6;i++) cout << "Array[" << i << "] = " << i << endl; for (jetzt=wurzel;jetzt!=NULL;jetzt=jetzt->naechstes)
	     cout << "Liste-> " << jetzt->wert << endl;   
}

Wiederholung – Stufe 5

#include 
using namespace std;
#include 

#include 
using namespace std;

int main(){
	vector beispiel1;
	list beispiel2;

	vector::iterator pos1;
	list::iterator pos2;

	for (int i=0;i<6;i++) beispiel1.push_back(i);
	for (int i=0;i<6;i++) beispiel2.push_back(i);

	for (pos1=beispiel1.begin(); pos1!= beispiel1.end(); pos1++)
	    cout << "Array: " << *pos1 << endl;
	    
	for (pos2=beispiel2.begin(); pos2!= beispiel2.end(); pos2++)
	    cout << "Liste: " << *pos2 << endl;
}	

Wiederholung – Stufe 6 (vector, list)

#include 
using namespace std;
#include 

#include 
#include 
using namespace std;

int main(){
	vector beispiel1;
	list beispiel2;

	vector::iterator pos1;
	list::iterator pos2;

	char random[] = "FDACBE";

	for (int i=0;i<6;i++) beispiel1.push_back(random[i]);
	for (int i=0;i<6;i++) beispiel2.push_back(random[i]);

	for (pos1=beispiel1.begin(); pos1!= beispiel1.end(); pos1++)
	    cout << "Array am Anfang: " << *pos1 << " ";
	cout << endl;
	    
	for (pos2=beispiel2.begin(); pos2!= beispiel2.end(); pos2++)
	    cout << "Liste am Anfang: " << *pos2 << " ";
	cout << endl;

	/*
	MANCHE Implementationen sehen sort() auch für Vektoren vor.
	beispiel1.sort();
	ALLE für Listen.
	*/
	beispiel2.sort();

	for (pos1=beispiel1.begin(); pos1!= beispiel1.end(); pos1++)
	    cout << "Array am Ende: " << *pos1 << " ";
	cout << endl;
	    
	for (pos2=beispiel2.begin(); pos2!= beispiel2.end(); pos2++)
	    cout << "Liste am Ende: " << *pos2 << " ";
	cout << endl;
}	

Wiederholung – Stufe 7 (vector, list)

#include 
using namespace std;
#include 

#include 
#include 
#include 
#include 
#include 
using namespace std;

int main(){
	vector beispiel1;
	list beispiel2;
	deque beispiel3;
	list beispiel4;

	vector::iterator pos1;
	list::iterator pos2;
	deque::iterator pos3;
	list::iterator pos4;

	beispiel1.push_back("Wybel");
	beispiel1.push_back("Ebert");
	beispiel1.push_back("Adrian");

	beispiel2.push_back("Mayer");
	beispiel2.push_back("Müller");
	beispiel2.push_back("Schmitz");

	for (pos1=beispiel1.begin(); pos1!= beispiel1.end(); pos1++)
	    cout << "Array 1 am Anfang: " << *pos1 << " ";
	cout << endl;
	    
	for (pos2=beispiel2.begin(); pos2!= beispiel2.end(); pos2++)
	    cout << "Liste 1 am Anfang: " << *pos2 << " ";
	cout << endl;

	sort(beispiel1.begin(),beispiel1.end());
	beispiel2.sort();
	for (pos1=beispiel1.begin(); pos1!= beispiel1.end(); pos1++)
	    cout << "Array 1 später: " << *pos1 << " ";
	cout << endl;
	    
	for (pos2=beispiel2.begin(); pos2!= beispiel2.end(); pos2++)
	    cout << "Liste 1 später: " << *pos2 << " ";
	cout << endl;

	copy(beispiel1.begin(),beispiel1.end(),back_inserter(beispiel3));
	for (pos3=beispiel3.begin(); pos3!= beispiel3.end(); pos3++)
	    cout << "Array 2 / Schritt 2: " << *pos3 << " ";
	cout << endl;

	copy(beispiel2.begin(),beispiel2.end(),front_inserter(beispiel3));
	for (pos3=beispiel3.begin(); pos3!= beispiel3.end(); pos3++)
	    cout << "Array 2 / Schritt 3: " << *pos3 << " ";
	cout << endl;

	pos3=find(beispiel3.begin(),beispiel3.end(),"Mayer");
	copy(pos3,beispiel3.end(),back_inserter(beispiel4));
	for (pos4=beispiel4.begin(); pos4!= beispiel4.end(); pos4++)
	    cout << "Liste 2 vor dem Ende: " << *pos4 << " ";
	cout << endl;

	beispiel4.sort();
	for (pos4=beispiel4.begin(); pos4!= beispiel4.end(); pos4++)
	    cout << "Liste 2 am Ende: " << *pos4 << " ";
	cout << endl;
}	

Wiederholung – Stufe 8 (vector, list)

#include 
using namespace std;
#include 

#include "beispiel8.h"
using namespace std;

int main(){

	ClBeispiel *jetzt;

	list beispiel;
	list::iterator pos;

	beispiel.push_back(ClBeispiel(77));
	beispiel.push_back(ClBeispiel(44));
	beispiel.push_back(ClBeispiel(66));

	for (pos=beispiel.begin(); pos!= beispiel.end(); pos++)
	    cout << "Klasse: " << (*pos).zeige() << " ";
	cout << endl;
}	

Beispiele

Download: examples_wiederholung_und_container.zip