AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[c++] Bubblesort

Ein Thema von The Lord · begonnen am 4. Nov 2007 · letzter Beitrag vom 4. Nov 2007
Antwort Antwort
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#1

[c++] Bubblesort

  Alt 4. Nov 2007, 18:41
Ich habe irgendwas gerade geändert und es funktioniert nicht mehr. Wo liegt der Fehler?

Code:
#include <iostream>
using namespace std;

int werte[] = {2,3,1};
int n = 3;

int main()
   {

   for(int i = 0; i < n; i++)
   {
     for(int j = 0; j < (n - 1); j++)
     {
      if(werte[j] > werte[j + 1])
      {
        int temp = werte[j];
         werte[j] = werte[j + 1];
         werte[j + 1] = temp;         
      }
     }
      cout << werte[i] << " \n"; //Ausgabe

        return 0;
   }
Sehr ihr ihn?

Gruß
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#2

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 18:55
Ich würde mal die Ausgabe überdenken.
Und es fehlt noch ein }
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 19:02
Code:
for(int i=0;i<n;i++)
   {
      cout << werte[i] << " \n"; //Ausgabe
   }
Stimmt, wenn ich das nämlich in einer separaten Schleife laufen lasse, dann stimmt es wieder. Aber ich habe gerade Tomaten auf den Augen. Also entweder gebe ich es an der falschen Stelle aus, oder ich ändere i.

Ich schau nochmal drüber
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#4

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 19:06
Du musst es zuerst Sortieren und erst danach ausgeben.
Und noch ein Tipp:
statt
cout << werte[i] << " \n";
sollte man schreiben:
cout << werte[i] << endl;

Weil der Zeilenumbruch je nach Betriebssystem anders ist und endl das je nach Betriebssystem richtig macht.
Also wenn man es für Linux kompiliert, macht es den Zeilenumbruch von Linux und wenn man es für Windows kompiliert, macht es den Zeilenumbruch für Windows.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 19:07
Hallo,

das ist kein richtiger Bubble-Sort

for(int i = 0; i < n; i++)
{
for(int j = i+1; j < (n - 1); j++)
{
int wert_i = werte[i];
int wert_j = werte[j};

if wert_j<wert_i
{
// exchange wert_i <-> wert_j
int temp_i = wert_i;
wert_i = wert_j,
wert_j = temp_i


Heiko
Heiko
  Mit Zitat antworten Zitat
The Lord

Registriert seit: 19. Sep 2005
Ort: Dortmund
125 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 19:15
Zitat von hoika:
Hallo,

das ist kein richtiger Bubble-Sort

for(int i = 0; i < n; i++)
{
for(int j = i+1; j < (n - 1); j++)
{
int wert_i = werte[i];
int wert_j = werte[j};

if wert_j<wert_i
{
// exchange wert_i <-> wert_j
int temp_i = wert_i;
wert_i = wert_j,
wert_j = temp_i


Heiko
Es sortiert aber Ich habe total Probleme damit, dass man bei C++ von 0 anfängt zu zählen und habe auch sonstige Flüchtigkeitsfehler.

Danke für die Tipps
Alexander
Dunkel die andere Seite ist...
Klappe Yoda und iss deinen Toast!
  Mit Zitat antworten Zitat
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#7

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 20:46
Zitat von Torpedo:
statt
cout << werte[i] << " \n";
sollte man schreiben:
cout << werte[i] << endl;

Weil der Zeilenumbruch je nach Betriebssystem anders ist und endl das je nach Betriebssystem richtig macht.
Also wenn man es für Linux kompiliert, macht es den Zeilenumbruch von Linux und wenn man es für Windows kompiliert, macht es den Zeilenumbruch für Windows.
Nein, das ist schon in Ordnung so. Der Zeilenumbruch für Windows-Textdateien lautet korrekt "\x0D\x0A" und wird von textbasierten Streams selbst produziert, wenn man "\n" streamt.
Der Manipulator endl sorgt außerdem nicht nur für einen Zeilenumbruch, sondern auch für das Leeren aller Puffer, also bei std:stream-Objekten für die unmittelbare Ausgabe auf dem Bildschirm. Das ist ineffizient; es würde vollkommen ausreichen, nur ganz am Ende mit cout.flush () den Puffer zu leeren.

Zudem ist es, wenn nur ein einzelnes Zeichen gestreamt werden soll, effektiver, kein String-, sondern ein Character-Literal zu benutzen:
Code:
cout << werte[i] << '\n';

Zitat von The Lord:
Ich habe total Probleme damit, dass man bei C++ von 0 anfängt zu zählen
Zu indizieren, nicht zu zählen.
Bei meinen Anfängen mit Delphi bin ich über das Vorurteil gestolpert, es sei dort anders - das ist nur bei Strings so, und das auch nur aus historischen Gründen.
Moritz
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#8

Re: [c++] Bubblesort

  Alt 4. Nov 2007, 21:00
Zitat von DMW:
Nein, das ist schon in Ordnung so. Der Zeilenumbruch für Windows-Textdateien lautet korrekt "\x0D\x0A" und wird von textbasierten Streams selbst produziert, wenn man "\n" streamt.
Der Manipulator endl sorgt außerdem nicht nur für einen Zeilenumbruch, sondern auch für das Leeren aller Puffer, also bei std:stream-Objekten für die unmittelbare Ausgabe auf dem Bildschirm. Das ist ineffizient; es würde vollkommen ausreichen, nur ganz am Ende mit cout.flush () den Puffer zu leeren.
Echt? Na dann nehme ich alles zurück was ich geschrieben habe. Das ist aber alles auf dem Mist meines Infolehrers gewachsen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz