Bubblesort
-
Dunno schrieb:
also das Problem ist einfach nur, dass anscheinend die ganze Bubblesort Funktion völlig ignoriert wird
Ja, so ist das mit Funktionen, die nicht aufgerufen werden.
-
ja nur hätte ich gerne hilfe
-
So müsste es ungefähr aussehn..
#include <stdio.h> #define ZAHL 10 //Prototyp der Funktion void bubble (int Feld [ZAHL], int laenge); int main (void) { float Feld[ZAHL]; int i; int temp; int laenge; printf("Geben Sie hier ihre Zahlen ein:\n"); for ( i = 0; i < ZAHL; i++ ) { printf("Zahl Nr.%d:",i+1); scanf ("%f", &Feld[i]); } //bubblesort funktion aufrufen bubble (int Feld,ZAHL); for ( i = 0; i < ZAHL; i++ ) { printf("Ihre Zahlen Nr.%d: %.0f\n", i+1, Feld[i]); } system ("Pause"); return 0; } void bubble (int Feld [ZAHL], int laenge) { int i, j; for (i = 1; i < laenge; i++) /* größte Element nach oben bring0rn */ for (j = laenge-1; j >= i; j--) if (Feld[j] < Feld[j-1]) { int temp = Feld[j]; Feld[j] = Feld[j-1]; Feld[j-1] = temp; } }
-
hm thx=)
hab grad gesehen das Feld Float ist und in der bubble funktion int hab da rum probiert aber jetzt gibt er 000000000000 raus Oo
-
ja dann mach überals wo "int" steht "float" draus...
-
yo hab ich ka hab jetzt noch was anderes probiert
void bubblesort( int Feld[ZAHL]){
int i, fertig = 0;
int h;
int len;
len = strlen(Feld);
while (!fertig){ /* Durchgang beginnen*/
fertig = 1;
for (i=0; i < len-1; i++)
if (Feld[i] > Feld[i+1]){ /* Vertauschen nötig /
fertig =0; / Weiterer Durchgang nötig /
h = Feld[i]; / Austauschen /
Feld[i] = Feld[i+1];
Feld[i+1] = h;
}
}
}
ich denke der Fehler liegt darin, das irgendwo der "missing link" zwischen meinem Programm / Enlesen + Ausgeben */ und dem Bubblesort liegt, also der Bubblesort mit dem vorhergehenden Code nichts anfangen kann
-
en = strlen(Feld); ????
strlen erwartet die länge eines strings (char feld) nicht einen Int felds. Du musst definitf die größe des feldes mit in die funktion übergeben.
-
bin zwar auch ein noob in c, aber ich glaube nicht, dass man ein int array mit strlen behandeln kann.
size_t strlen ( const [b]char[/b] * str );
-
Dunno schrieb:
void bubblesort( int Feld[ZAHL]){ ... int len; len = strlen(Feld); ... }
"len" ist schon bekannt.
-
hallo ihr lieben leute, so hab mich jetzt nochmal mit dem ganzen auseinander gesetzt und mir noch was dazu geschrieben:
einziges Problem, er sagt in der Zeile vom Bubblesort: syntax error before numeric constant, hab jetzt mehrmals rumgegoogelt und scheint ein Problem mit dem define zu sein, weiß jemand rat?#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ZAHL 10
int main () {
float Feld [ZAHL];
int i;
/* Eingabe , das erste printf bezieht sich auf das scanf, dass 2 printf auf das for,
dann sollte es so aussehen: Geben sie ihre Zahlen ein:
Ihre ZahlNr.1.: ...
Ihre ZahlNr.2.: ... etc. */printf("Geben sie ihre Zahlen ein:\n");
for (i = 0; i < ZAHL; i++ )
{ printf("Ihre Zahl Nr. %d:", i+1 );
scanf ("%f", &Feld[i]);
}
/Ausgabe , wieder for, printf in Klammern einmal mit den int Zahlen für i und
einmal mit dem Feld für die eingegebenen Werte
Ausgabe wie oben, nur mit dem eingegebenem Wert */for ( i = 0; i < ZAHL; i++ )
{ printf("Ihre Zahl Nr. %d: %.0f\n", i+1, Feld[i]);
}void bubblesort (int Feld [i]; ZAHL ) {
int i,j;
for ( j = 0; j < ZAHL; j++)
for ( i = ZAHL - 1; i >= i; i-- )
if (Feld[i] < Feld[i-1])
{ int temp = Feld[i];
Feld[i] = Feld[i-1];
Feld[i-1] = temp;
}
}system ("Pause");
return 0;}
-
du brauchst ZAHL nicht übergeben, das du dies global definiert hast. und bei dem Array das "i" weg.
//Aufruf bubblesort(Feld);
//funktion void bubblesort (int Feld[]) { int i,j; for ( j = 0; j < ZAHL; j++) for ( i = ZAHL - 1; i >= i; i-- ) if (Feld[i] < Feld[i-1]) { int temp = Feld[i]; Feld[i] = Feld[i-1]; Feld[i-1] = temp; } } system ("Pause"); return 0; }
-
Bitte auch man: indent lesen.
-
-
fricky schrieb:
du meinst wohl 'anwenden'.
Das wäre dann der zweite Schritt.
Zuerst den ersten Schritt, hab ich gedacht, damit sie nicht hinfallen...