Hallo, bin neu hier, hoff also das ich alles richtig mach
.
Ich habe ein Problem bei meinem C Programm.
Und zwar soll dieses Programm Zahlen einlesen bis man eine 0 eingibt, nach welcher die Eingabe dann beendet wird. Diese zahlen sollen dann in einem Array der Größe nach sortiert werden, beginnend mit der kleinsten Zahl.
So weit so gut, es klappt auch alles prima, nur wenn ich negative Zahlen einlese terminiert bubble sort die negative Zahl. Das heißt die Zahl wird erst richtig ganz an den Anfang gesetzt. Bei der Ausgabe der Zahlen jedoch wird aus der negativen Zahl eine null. Wenn ich jedoch 2 negative Zahlen einlese wird die kleinere der beiden negativen Zahlen korrekt angezeigt, die andere jedoch wird an den Anfang gesetzt und wieder zu 0.
Bin leider ziemlich ratlos warum das array die negativen Zahlen zu 0 macht.
Hier mein Code, vllt könnt ihr mir sagen wieso negative zahlen zu 0 werden?
Danke 

Ich habe ein Problem bei meinem C Programm.
Und zwar soll dieses Programm Zahlen einlesen bis man eine 0 eingibt, nach welcher die Eingabe dann beendet wird. Diese zahlen sollen dann in einem Array der Größe nach sortiert werden, beginnend mit der kleinsten Zahl.
So weit so gut, es klappt auch alles prima, nur wenn ich negative Zahlen einlese terminiert bubble sort die negative Zahl. Das heißt die Zahl wird erst richtig ganz an den Anfang gesetzt. Bei der Ausgabe der Zahlen jedoch wird aus der negativen Zahl eine null. Wenn ich jedoch 2 negative Zahlen einlese wird die kleinere der beiden negativen Zahlen korrekt angezeigt, die andere jedoch wird an den Anfang gesetzt und wieder zu 0.
Bin leider ziemlich ratlos warum das array die negativen Zahlen zu 0 macht.
Hier mein Code, vllt könnt ihr mir sagen wieso negative zahlen zu 0 werden?
Code:
#include <stdio.h>
#include <math.h>
int main () {
int i=0,n, j, x=0, k, zahl=0;
double zahlen[1000], temp;
printf("Bitte geben sie nun maximal 20 Zahlen zum sortieren ein:\n");
printf("Nach der terminierenden 0 wird die Eingabe beendet.\n");
for (n=1; n<1000; n++) {
scanf("%lf", &zahlen[n]);
zahl=zahl+1;
if(zahlen[n]==0) {
break;
}
}
printf("Anzahl der eingelesenen Werte =%i\n", zahl);
printf("Ausgabe der unsortierten Zahlenfolge\n");
for (n=1; n<=zahl; n++) {
printf("%6.0lf\n", zahlen[n]);}
for(i=1; i<n; i++)
{
for (j=n-1; j >=i; j--)
{
if (zahlen[j]<zahlen[j-1])
{
temp=(-1)*zahlen[j];
zahlen[j]=(-1)*zahlen[j-1]*(-1);
zahlen[j-1]=(-1)*temp;
x=x+1;
for(n=1; n<=zahl; n++)
{ printf("%2.i. Durchlauf %6.0lf\n", x, zahlen[n]);
}
printf("\n"); }}}
return 0;}

Zuletzt bearbeitet: