Du verwendest einen veralteten Browser. Dieser kann eventuell diese oder andere Webseiten nicht richtig darstellen. Du solltest deinen Browser aktualisieren oder einen alternativen Browser verwenden.
Hallo erstmal, wie immer scheine die Leute zu meinen schmeiss mal sourcecode rein, und dann macht mal schön.
Lerneffekt NULL.
okay nun aber mal zu euren Sachen.
Das mit den Includes ist schon alt inzwischen je nach compiler
nutzt man(n) die libs ohne .h
also
#include <iostream>
so heist jetzt der Teil aus der std library.
dadurch funktioniert aber der aufruf von endl cout etc. nicht mehr
da sie eine "Verpackung bekommen haben" stichwort namespaces
eine abhilfe schaft da die Zeile
using namespace std;
dadurch wird der aufruf von cout zu einem std::cout
hier habt ihr globale variablen eingefügt, diese sollte man immer vermeiden.
float messwert [7];
float p;
int i,l;
besser ihr benutzt hier lokale variablen
also
int main()
{
float messwerte [7];
float p;
int i,l;
anstatt :
int main()
{
bei einer Schleife könnt / solltet ihr die Zählvar mit in den schleifenkopf nehmen also
for(int i=0; i<7; ++i)
for(i=0;i<=6;i++)
{
die variable l könnt ihr euch sparen indem ihr einfach bei cout << i+1 schreibt.
also
cout<< "Bitte geben Sie Ihren " << i+1 << " . Messwert ein ";
anstatt
l=i+1;
cout<< "Bitte geben Sie Ihren " <<l<< " . Messwert ein ";
cin>> messwert ;
an dieser stelle überschreibt ihr den eingelesenen wert wieder, das muss weg
messwert =i;
hier fehlt noch ein cout << endl;
anstatt
endl;
}
getch();
}
soviel erstmal zu eurem source.
sort folgt
Ergänzung ()
Sortieren könnt ihr dann ganz einfach via Bubblesort
vom Prinzip super einfach
// Einen Schleife die so lange läuft wie werte getauscht wurden
// eine weitere Schleife die jetzt alle werte der reihe nach durchgeht
// und wenn der zweite wert größer ist als der erste wird getauscht.
// und wir müssen uns merken das wir getauscht haben
// das ganze wiederholen wir so lange bis nichts mehr getauscht wurde.
// dann ist die Liste sortiert. das Prinizp der aufsteigenen Blasen. ( Bubblesort)
Ich kann die Ausführungen von FrankRWeb so unterschreiben.
Allerdings gehe ich davon aus, dass der Threadersteller in der Schule auf nen Borland Compiler vom letzten Jahrhundert angewiesen ist. Dort muss man die Zeile:
using namespace std;
weglassen, da diese vom Compiler selbstständig eingebaut wird.
Ich lass das mal einfach so im Raum stehen, ohne Wertung von Borland in Kombination mit C++ ...
EDIT: achja: der Befehl getch() ist glaube ich in der Headerdatei "conio.h" enthalten. Diese sollte man noch zusätzlich inkludieren.
Oder wenn man unter Windows arbeitet: die conio.h draußen lassen und stattdessen am Ende des Programms ein:
Nun zum sortieren. Bevor man Code schreibt sollte man erstmal überhaupt überblicken, mit welchem logischen Vorgehen man das macht.
Bubblesort
Du willst eine Liste von Zahlen ('Array') sortieren. Die einfachste Methode ist, jedes Element dieser Liste mit dem nächsten Element in dieser Liste zu vergleichen und - je nachdem ob größer oder kleiner - die Elemente vertauschen. Dies macht man solange, bis keine Elemente mehr getauscht werden mussten. Daher der Name Bubblesort, weil die Elemente wie Blasen an ihre entsprechende Position wandern. Das ist alles andere als effizient, aber einfach zu implementieren.
Lange Rede, kurzer Sinn - Ihr benötigt folgendes:
Variable in der - im Falle eines Tausches - ein Wert zwischengespeichert wird (Datentyp entsprechend eurer Werteliste, also float)
Eine Do-While Schleife
Variable in der gemerkt wird OB ein Element getauscht wurde (zu beginn der Schleife jeweils zurücksetzen)
Eine For-Schleife in der bereits erwähnten Do-While-Schleife die die Elemente vergleicht.
C++ bringt in der standardkonformen Form eine Menge Funktionen bereits mit. Damit könntet ihr die Aufgabe sehr kompakt lösen. Z.B. gibt es eine Sortierfunktion; in euren Fall könnte das so aussehen:
#include <algorithm>
...
...
std::sort( messwert, messwert + 7);
Falls ihr die Sortierung aber selber programmieren sollt, kann ich euch Insertionsort wegen der leichten Verständlichkeit empfehlen. Man trägt halt jeden Messwert an der richtigen Stelle im Anfangs leeren Array ein. Im Code etwa so aussehen:
for(int i=0;i<=6;i++) {
cout<< "Bitte geben Sie Ihren " << l << " . Messwert ein ";
cin>> mw;
// Messwert an der richtigen Stelle einfuegen
int j = 0;
while(j < i && mw > messwert[j]) ++j;
// hier gilt die Schleifenbedingung nicht mehr, also entweder j >= i oder mw <= messwert[j]
// für beide Fälle ist dann j die Position an der der Messwert eingefügt werden sollte
// Dazu muss dann Platz geschaffen werden, in dem die nachfolgende Werte um 1
// nach hinten geschoben werden.
// Das führ ich jetzt mal nicht aus ;-)
}
Hoffe es hilft.
Zuletzt bearbeitet:
(Schleifenbedingung war im Kommetar falsch negiert. Überschreiben anstelle von Einfügen, Is wohl schon zu spät für mich ;-))