Was macht dieses Programm?

Hallo Leute, ich bin das PRogramm jetzt ein paar mal durchgegangen, jedoch erschliest sich mir immernoch nich wirklich so ganz was es macht. Ich weiß bisher nur (wobei ich mir dabei auch noch nicht ganz sicher bin) das es Vectoren und Listen erstellt, diese Ausgibt, iwie noch iwo kopiert und so. Aber genauer weiß ich da auch nich recht :frowning: Ich hoffe mir kann da jemand helfen der ein bissl mehr Plan hat =)
Danke schonmal im Vorraus!! Hier der Quellcode:

#include // std:: rand ()
#include // std::vector 
#include // std ::list 
#include // std:: cout
#include // std:: ostream\_iterator 
#include // std:: reverse , std:: generate


int main ()
{
std::vector v0 (10);

for (std::vector :: iterator i=v0.begin (); i!=v0.end (); ++i)
{
 \*i = std:: rand ();
}
std:: copy(v0.begin(), v0.end(),
 std:: ostream\_iterator (std::cout , "\n"));
std::list l0(v0.size ());
std:: copy(v0.begin(), v0.end(), l0.begin ());

std::list l1(l0.begin(), l0.end ());
std:: reverse(l1.begin(), l1.end ());
std:: copy(l1.begin(), l1.end(),
 std:: ostream\_iterator (std::cout , "\n"));

std::list l2(l1.begin(), l1.end ());
l2.sort ();
std:: copy(l2.begin(), l2.end(),
 std:: ostream\_iterator (std::cout , "\n"));

std:: generate(v0.begin(), v0.end(), std:: rand );
std:: copy(v0.rbegin(), v0.rend(),
 std:: ostream\_iterator (std::cout , "\n"));

return 0;

}

Hallo,

Hallo Leute, ich bin das Programm jetzt ein paar mal
durchgegangen, jedoch erschließt sich mir immer noch nicht
wirklich so ganz, was es macht. Ich weiß bisher nur (wobei ich
mir dabei auch noch nicht ganz sicher bin) das es Vektoren und
Listen erstellt, diese Ausgibt, iwie noch iwo kopiert und so.
Aber genauer weiß ich da auch nicht recht

Das Programm sieht ein wenig kompliziert aus,
weil sich sehr viele technische Details der
Standardbibliothek im Codefluß befinden.

Wenn man Dein Programm etwas umformatiert
und die Print-Anweisungen separiert, kann
man es ganz gut verstehen=>

#include // std::rand()
#include // 
#include // std::vector
#include // std::list
#include // std::cout
#include // std::ostream\_iterator
#include // std::reverse, std::generate

using namespace std;

 template 
 void Print(T& v, const string& s) {
 cout (cout, " ") );
 cout 
 void PrintReverse(T& v, const string& s) {
 cout (cout, " ") );
 cout v0( 10 );
 vector::iterator i;
 
 for(i=v0.begin(); i!=v0.end(); ++i) \*i = rand();
 Print(v0, "v0");
 
 list l0(v0.size() );
 copy(v0.begin(), v0.end(), l0.begin());
 Print(l0, "l0");

 list l1(l0.begin(), l0.end() );
 reverse(l1.begin(), l1.end());
 Print(l1, "l1");

 list l2(l1.begin(), l1.end());
 l2.sort();
 Print(l2, "l2");

 generate(v0.begin(), v0.end(), rand);
 PrintReverse(v0, "v0");

 return 0;
}

Grüße

CMБ

danke dir schonma das du dir gedanken gemacht hast =) aber so wirklich sieht es für mich noch nicht klarer aus :smile: sorry…

aber so wirklich sieht es für mich noch nicht klarer aus

Rein naiv betrachtet (VS 2010 Express) erzeugt das Programm immer folgende Ausgabe:

v0: 41 18467 6334 26500 19169 15724 11478 29358 26962 24464 
l0: 41 18467 6334 26500 19169 15724 11478 29358 26962 24464 
l1: 24464 26962 29358 11478 15724 19169 26500 6334 18467 41 
l2: 41 6334 11478 15724 18467 19169 24464 26500 26962 29358 
v0: 5436 4827 11942 2995 491 9961 16827 23281 28145 5705 

mfg M.L.

Hi,

Du hast doch korrekt erkannt, was das Programm macht: Es ist eine Demonstration der STL und insbesondere der Verwendung von Iteratoren.

1.) Initialisiere mit Zufallszahlen mit Schleife (siehe 6.)

2.) Kopiere den Vektor auf die Konsole, ohne explizite Schleife.

3.) Kopiere den Vektor in eine Liste, auch ohne Schleife

4.) Erzeuge eine Liste in umgekehrter Reihenfolge und kopiere diese auf die Konsole

5.) Erzeuge eine sortierte Liste aus der vorigen und gebe diese aus

6.) Fülle den Vektor aus 1.) erneut mit Zufallszahlen, diesmal ohne explizite Schleife, und gebe diese in umgekehrter Reihenfolge aus.

Einen tieferen Sinn hat das nicht, man sieht halt diese fundamentalen Techniken in Aktion.

Gruß Lutz

DANKE AN ALLE FÜR EURE HILFE :wink:

Ich habe hier ein neues Programm wo ich wieder nicht weiß was es macht. Meine Aufgabe ist es, das Codebeispiel zu Analysieren und zu erklären.
Das folgende Codebeispiel zeigt die Implementierung von Operatoren für eine Klasse vector2d und deren Anwendung:

// vector2d . hpp
class vector2d
{
public :
 // ...
 vector2d & operator +=( vector2d const & rhs );
 // ...
private :
 double x\_ ;
 double y\_ ;
};
vector2d operator +( vector2d const & lhs , vector2d const & rhs );
// vector2d . cpp
vector2d &
vector2d :: operator +=( vector2d const & rhs )
{
x\_ += rhs . x\_ ;
y\_ += rhs . y\_ ;
return \* this ;
}
vector2d operator +( vector2d const & lhs , vector2d const & rhs )
{
 vector2d tmp ( lhs );
 tmp += rhs ;
 return tmp ;
}
// main . cpp
int main ()
{
 vector2d v0 (1 ,2);
 vector2d v1 (4 ,1);

 vector2d v2 = v0 + v1 ;
 v2 += v0 ;
// ...

}

Danke für eure Hilfe =)

[MOD]Aehem
Du weißt, dass das Forum explizit nicht dazu da ist, um Hausaufgaben zu erledigen?

Wenn man erkennt, dass der Student schon an der Sache gearbeitet hat und jetzt an einer Stelle einen Hänger hat, sind Tipps auf dieser Plattform noch okay.

Aber die komplette Übernahme der Aufgabenerledigung ist nicht Sinn (und Nutzungsbestimmung) des Forums (und sicherlich auch nicht Deiner Ausbildung).

Bitte alle daran halten, sonst schließe ich den Thread.

Der Mod