Bubblesort mit Arrays
-
funktioniert nicht.
Das ist ja nicht mal c++
-
MeXeD schrieb:
funktioniert nicht.
Funktioniert. An der Stelle müsen die Elemente "i" und "i+1" vertauscht werden. Das wird mit der Methode "swap" gemacht.
MeXeD schrieb:
Das ist ja nicht mal c++
Doch, das ist es. Vorausgesetzt, irgendwo ist die Klasse "Array" deklariert mit den passenden Methoden.
-
...
-
Ja, deswegen. Wie soll ich "swap" verwenden wenn es Pseudo ist?
Ja davon habe ich gehört. Gleich angewandt.for (n = 10; n>1; n=n-1) { for(i=0; i<n-1; i=i+1) { if (Mittelwert[i] > Mittelwert[i+1]) { temp = Mittelwert[i]; Mittelwert[i] = Mittelwert[i+1]; Mittelwert[i+1] = temp; } } }Problem ist das er beim Ausführen meckert das er keine Quelle finden konnte!
-
Wo ist denn dein restlicher Code?
z.B. dein Hauptprogramm oder deine includes, oder das Initialisieren und Definieren deines Arrays?
Poste doch mal den gesamten Code
-
oder du nimmst std::swap
-
#include <iostream> #include <cstdlib> #include "fehler.h" using namespace std; double Rechnung_durchfuehren(double op1,double op2, char aus, double* Mittelwert) { double PI = 3.1415926; double ergebnis = 0; bool fail = false; bool Operanten = false; double value = 0; while (ergebnis = 0); // Mit dem Rechenzeichen womit gerechnet wird, wird hier abgefragt { switch(aus) { case 'a': case 'A': ergebnis = op1 + op2; //Addition break; case 'S': case 's': ergebnis = op1 - op2; //Subtraktion break; case 'D': case 'd': if (op2 == 0) // Abfangen des Fehler beim Dividieren durch 0 { cout <<endl; cout << " Eine Division durch 0 funktioniert leider nicht!" <<endl <<endl; fehler(); fail = true; break; } else { ergebnis = op1 / op2; //Division } break; case 'M': case 'm': ergebnis = op1 * op2; //Multiplikation break; case 'u': case 'U': break; ergebnis = PI * op1; // Umgang (kreis) break; case 'W': case 'w': ergebnis = sqrt(op1); break; default: cout <<endl << " Bitte geben sie NUR gueltige Nummern an"; fail = true; fehler(); break; case 'P': //Wenn das Rechenzeichen ein M ist case 'p': //Wenn das Rechenzeichen ein M ist int n; int i; int temp2 = 0; for (n = 10; n>1; n=n-1) { for(i=0; i<n-1; i=i+1) { if (Mittelwert[i] > Mittelwert[i+1]) { temp2 = Mittelwert[i]; Mittelwert[i] = Mittelwert[i+1]; Mittelwert[i+1] = temp2; } } } for(i = 0; i < 10; i = i + 1) { op1 = op1 + Mittelwert[i]; //Addiere alle Werte zusammen } ergebnis = op1 / 10; //Speichere in der Variable "erg" den Mittelwert break; } //return fail; // Wenn ein Fehlereintritt kommt übliche Fehlermeldung return ergebnis; } return fail; return Operanten; }Hier das Abfragen
double Mittelwert_abfragen(double index) { double value = 0; bool fail = false; //Benutzer-Abfrage der Werte für die Berechnung des Mittelwerts do { cout << endl; cout << " Bitte geben Sie den "; cout << index + 1; cout << ". Wert ein: "; cin >> value; if (cin.fail()) { cin.clear(); cout << endl << " Fehler ungueltiges Zeichen eingegeben!"; // Wenn Falsches Zeichen eingegeben wurde kommt hier eine Fehlermeldung char c; cin >> c; cin.get(); cout << endl; } cout << " _________________________________________________________________________ "; if (value != 0) { return value; } else { fail = true; } }while (fail == true); }
-
Warum musst du überhaupt sortieren, wenn du danach doch wieder nur den Durchschnitt bildest?
Oder willst du eigentlich den Median haben (also das mittlere Element)?
-
Wir sollen eine Funktion einbauen die sortiert.
Ich wollte es hier machen. Übern COUT sollen dann die Arrays wieder gegeben werden (sortiert) und darunter das Ergebnis.
Ich habe den Fehler gefundenTemp2 war ein int Wert.
Mittelwert aber Double.Hab es nun angepasst. Funktioniert auch. Ich setzt mich dann man an die Ausgabe ran.
-
while (ergebnis = 0); // Mit dem Rechenzeichen womit gerechnet wird, wird hier abgefragtDa sind gleich 2 Fehler. Es gibt einen Unterschied zwischen = und ==. Außerdem gehört an das Ende kein ;
-
Sehe es gerade.
Kommt davon, wenn man von einer anderen Programmiersprache kommt ..