Zum Inhalt springen

C++ Bubblesort


keller64283

Empfohlene Beiträge

Hallo an alle ich brauche dringend Hilfe:

Ich habe folgenden Code, und weiß nicht weiter:

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

int main() {

int n=0 ;

int A[255];

do { // Einlesen der Daten

for ( int i=0; i < n; i++)

A = rand();

if (rand != 0) n++; // Anzahl der Elemente

} while (rand() && n<max);

time_t vorher=time(NULL); // Anz. Sekunden seit 1.1.1970 0:00

// Sortieren

for (int i=1; i < n; i++) // Durchläufe

for (int j=n-1; j>=i; j--) {// ein Durchlauf

if (A[j-1] > A[j]) { // vertauschen

int tmp = A[j-1];

A[j-1] = A[j];

A[j] = tmp;

}

}

for (int i= 0; i<n ; i++) // Ausgeben

cout << A << " ";

time_t nachher=time(NULL); //Anz. Sekunden seit 1.1.1970 0:00

// Ausgeben

cout << "Dauer: " << nachher-vorher << "sec" << endl;

cout << endl;

cout << "Fortschritt " << int(i*100.0/n) << " % \r";

}

Bubble-Sort-Verfahren zum Sortieren

ganzer Zahlen, indem Sie Zeitmessungen mit unterschiedlich vielen Werten (1.000, 10.000,

100.000 und 200.000) vornehmen!

Was ist da falsch?

Ich sitze schon Stunden daran und bekomme nur Fehlermeldungen.

Bitte helft mir.

Danke!

Link zu diesem Kommentar
Auf anderen Seiten teilen

:confused:

Hallo,

es sind folgende Fehlermeldungen:

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(12) : error C2563: Listen der formalen Parameter stimmen nicht überein

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(12) : error C2568: '<': Auflösung der Funktionsüberladung nicht möglich

Ich bin dankbar über jede hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was soll max sein? Deklariert hast du diese Variable jedenfalls nicht.

Es ergibt auch keinen Sinn, wie du rand benutzt. rand ohne runde Klammern liefert dir den Funktionszeiger. Der wird immer ungleich Null sein. Und rand() in der while-Bedingung ist auch Unsinn. Ist dir klar, dass dieser zweite Aufruf mit hoher Wahrscheinlichkeit nicht denselben Wert liefert wie den, den du in A gespeichert hast?

Weiter unten greifst du dann auf i zu, obwohl die Gültigkeit dieser Variablen auf den for-Block begrenzt ist.

Außerdem solltest du deinen Code mal ordentlich einrücken. Dann sieht man auch gleich, dass du weniger schließende als öffnende geschweifte Klammern hast.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe noch an dem Code verändert ohne Erfolg, anscheinend habe ich nicht genug Kenntnisse zur zeit.

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

int main() {

int n=0 ;

int A[255];

for ( int i=0; i < n; i++)

A = rand();

}

if ((rand()( != 0); n++; );// Anzahl der Elemente

for (rand() && n<max){

time_t vorher=time(NULL); // Anz. Sekunden seit 1.1.1970 0:00

// Sortieren

for (int i=1; i < n; i++) // Durchläufe

for (int j=n-1; j>=i; j--) {// ein Durchlauf

if (A[j-1] > A[j]) { // vertauschen

int tmp = A[j-1];

A[j-1] = A[j];

A[j] = tmp;

}

}

for (int i= 0; i<n ; i++) // Ausgeben

time_t nachher=time(NULL); //Anz. Sekunden seit 1.1.1970 0:00

// Ausgeben

cout << "Dauer: " << nachher-vorher << "sec" << endl;

cout << endl;

}

Bitte helft mir.

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK, die Fehlermeldungem sind:

1>------ Erstellen gestartet: Projekt: Bubble_Sort, Konfiguration: Debug Win32 ------

1>Kompilieren...

1>Time.cpp

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(9) : error C2143: Syntaxfehler: Es fehlt ',' vor '<'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(9) : error C2086: 'int i': Neudefinition

1> c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(9): Siehe Deklaration von 'i'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(10) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(14) : error C2059: Syntaxfehler: 'if'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(14) : error C2143: Syntaxfehler: Es fehlt ')' vor ';'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(14) : error C2143: Syntaxfehler: Es fehlt ')' vor ';'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(14) : error C2143: Syntaxfehler: Es fehlt ';' vor '++'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(14) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(14) : error C2059: Syntaxfehler: ')'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(15) : error C2059: Syntaxfehler: 'for'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(16) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'

1>c:\users\uta\documents\visual studio 2008\projects\bubble_sort\bubble_sort\time.cpp(16) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?

1>Das Buildprotokoll wurde unter "file://c:\Users\Uta\Documents\Visual Studio 2008\Projects\Bubble_Sort\Bubble_Sort\Debug\BuildLog.htm" gespeichert.

1>Bubble_Sort - 12 Fehler, 0 Warnung(en)

========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Ich scheine heute für ide Fehler blind zu sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo, danke für den Tip, hier der Code:

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

int main() 

{

	int n=0 ;

	int A[255];

	for ( int i=0, i < n, i++)

	{

		A[i] = rand();

	}

}

if ((rand()( != 0); n++; )// Anzahl der Elemente

for (rand() && n<i)

{

	time_t vorher=time(NULL); // Anz. Sekunden seit 1.1.1970 0:00

	// Sortieren

	for (int i=1; i < n; i++) // Durchläufe

		for (int j=n-1; j>=i; j--) {// ein Durchlauf

			if (A[j-1] > A[j]) { // vertauschen

				int tmp = A[j-1];

				A[j-1] = A[j];

				A[j] = tmp;

			}


		}

		for (int i= 0; i<n ; i++) // Ausgeben


			time_t nachher=time(NULL); //Anz. Sekunden seit 1.1.1970 0:00

		// Ausgeben

		cout << "Dauer: " << nachher-vorher << "sec" << endl;

		cout << endl;

}

danke.:upps

Link zu diesem Kommentar
Auf anderen Seiten teilen

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int n=0 ;
int A[255];
for ( int i=0, i < n, i++)
{
A[i] = rand();
}
}[/code]

Die einzelnen Teile einer For-Anweisung trennt man mit Semikolon, nicht mit Komma. Die Fehlermeldung gibt hier einen ziemlich deutlichen Hinweis. Und hier ist deine Main-Funktion übrigens auch zu Ende.

Bitte mach dir doch mal die Mühe, die Blöcke und die Einrückung deines Programms in Ordnung zu bringen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo, habe nun alles neu geordnet, hilft aber auch nichts, bin sehr ratlos:

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

int main() 

{	unsigned int i();

	unsigned int n=0 ;

	int A[255];

	for ( i = 0, i < n, i++)

	{

		A[i] = rand();

	}


if ((rand()( != 0); n++; )// Anzahl der Elemente

for (rand() && n<i)

{

	time_t vorher=time(NULL); // Anz. Sekunden seit 1.1.1970 0:00

	// Sortieren

	for ( i=1, i < n, i++) // Durchläufe

		for (int j=n-1, j>=i, j--) {// ein Durchlauf

			if (A[j-1] > A[j]) { // vertauschen

				int tmp = A[j-1];

				A[j-1] = A[j];

				A[j] = tmp;

			}


		}

		for (int i= 0, i<n , i++) // Ausgeben


			time_t nachher=time(NULL); //Anz. Sekunden seit 1.1.1970 0:00

		// Ausgeben

		cout << "Dauer: " << nachher-vorher << "sec" << endl;

		cout << endl;

}

}

Bitte seht doch mal genauer hin. ich soll damit Zeitmessungen mit unterschiedlich vielen Werten (1.000, 10.000,

100.000 und 200.000) vornehmen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo, habe nun alles neu geordnet

Mir scheint, du hast den Code wild durch die Gegend geschoben, die Einrückung ist immer noch furchtbar.

hilft aber auch nichts, bin sehr ratlos
Du hast es jetzt dreimal in Folge geschafft, eine absolut nutzlose Fehlerbeschreibung abzuliefern. Langsam habe ich keine Lust mehr.

Das hier:

unsigned int i();

Ist eine Funktionsdeklaration, mach die Klammern da weg.

Zur for-Anweisung habe ich dir schon etwas gesagt. Du hast es leider nicht umgesetzt, sondern statt dessen den Fehler auf alle anderen for-Anweisungen übertragen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

bei mir geht's so

#include <ctime>

#include <cstdlib>

#include <iostream>

using namespace std;

int main()

{

const int max=20;

unsigned int n=0;

int x=1,Zahl;

int A[max]={0};

while (rand()&&(n<max)){

for (unsigned int i=0; i < n; i++)

A = rand();

n++;}

time_t vorher=time(NULL);

for (unsigned int i=0 ; i<=n; i++)

for (unsigned int j=n-1 ; j>i; j--){

if (A[j-1]>A[j]){

int tmp=A[j-1];

A[j-1]=A[j];

A[j]=tmp;

}

}

for (unsigned int i=0 ; i<n; i++)

cout<< A<< " ";

cout << endl;

time_t nachher=time(NULL);

for (unsigned int i=0 ; i<n; i++)

{

cout << "Dauer: " << nachher-vorher << "sec" << endl;

cout << "Fortschritt " << int(i*100.0/n) << " % \r";

}

}

aber wie man zeit messen kann weisse ich nicht genau

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier der fertige Code und in Excell muss man die Werte eintragen und die grafik erstellen.

#include <ctime>

#include <cstdlib>


#include <iostream>

using namespace std;


int main()

{

	const long int max=253000;

	unsigned  long int n=0;

	long int x=1;

	long int A[max]={0};

time_t vorher=time(NULL);

	while (rand()&&(n<max)){

		for (unsigned long int i=0; i < n; i++)

			A[i] = rand();

		n++;}


	for (unsigned long int i=0 ; i<=n; i++)

		for (unsigned int j=n-1 ; j>i; j--){

			if (A[j-1]>A[j]){

				long int tmp=A[j-1];

				A[j-1]=A[j];

				A[j]=tmp;

			}

		}

		for (unsigned long int i=0 ; i<n; i++)


			cout<< A[i]<< " ";

		cout << endl;



		for (unsigned long int i=0 ; i<n; i++)

		{

time_t nachher=time(NULL);

			cout << "Dauer: " << nachher-vorher << "sec" << endl;

			cout << "Fortschritt " << long int(i*100.0/n) << " % \r";

		}


}

eine andere frage, hast du vielleicht den Code von der Wurzelberechnung, da hänge ich noch dran.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...