Hallo,soll einen Such Algorithmus programmieren. Habe die Daten vorher aus einer datei ausgelesen und möchte sie danach sortieren. Allerdings verhaspelt sich mein Programm ab der 6 Stufe. Sieht da jemand was
?
Hier die Datei :
4
20
12
8
16
6
10
14
2
18
-3
21
0
#include <stdlib.h>
#include <stdio.h>
int main() {
FILE *datei;
const int ANZAHL = 20, LAENGE=5;
char line[ANZAHL][LAENGE];
int num[ANZAHL];
int i;
datei = fopen ("/Users/Tim/Documents/Praktikum 6/sort.dat","r+");
if (datei != NULL)
{
while (!feof(datei)) {
fgets(line,LAENGE,datei);
num = atoi(line);
printf ("%i ",num);
i++;
}
} else {printf("Öffnen Fehlgeschlagen");}
int position = 0;
int zahl = 0;
int durchlaufe = 0;
int j=0;
int buffer=0;
while(durchlaufe<i) {
printf("Durchlaufnummer : %i\n", durchlaufe);
zahl = num[durchlaufe];
for(j=durchlaufe;j<=i;j++) {
if(zahl>num[j+1]) {
zahl=num[j+1];
position=j+1;
}
}
buffer = num[durchlaufe];
num[durchlaufe] = zahl;
num[position]=buffer;
durchlaufe++;
for(int g=0;g<i;g++) {
printf(" %i ", num[g]);
}
}
fclose (datei);
return 0;
}
Ausgabe :
4 20 12 8 16 6 10 14 2 18 -3 21 0 Durchlaufnummer : 0
-3 20 12 8 16 6 10 14 2 18 4 21 0 Durchlaufnummer : 1
-3 0 12 8 16 6 10 14 2 18 4 21 20 Durchlaufnummer : 2
-3 0 2 8 16 6 10 14 12 18 4 21 20 Durchlaufnummer : 3
-3 0 2 4 16 6 10 14 12 18 8 21 20 Durchlaufnummer : 4
-3 0 2 4 6 16 10 14 12 18 8 21 20 Durchlaufnummer : 5
-3 0 2 4 6 8 10 14 12 18 16 21 20 Durchlaufnummer : 6
-3 0 2 4 6 8 10 14 12 18 10 21 20 Durchlaufnummer : 7
-3 0 2 4 6 8 10 10 12 18 14 21 20 Durchlaufnummer : 8
-3 0 2 4 6 8 10 10 12 18 12 21 20 Durchlaufnummer : 9
-3 0 2 4 6 8 10 10 12 12 18 21 20 Durchlaufnummer : 10
-3 0 2 4 6 8 10 10 12 12 18 21 20 Durchlaufnummer : 11
-3 0 2 4 6 8 10 10 12 12 18 20 21 Durchlaufnummer : 12
-3 0 2 4 6 8 10 10 12 12 18 20 21 logout
Hier die Datei :
4
20
12
8
16
6
10
14
2
18
-3
21
0
#include <stdlib.h>
#include <stdio.h>
int main() {
FILE *datei;
const int ANZAHL = 20, LAENGE=5;
char line[ANZAHL][LAENGE];
int num[ANZAHL];
int i;
datei = fopen ("/Users/Tim/Documents/Praktikum 6/sort.dat","r+");
if (datei != NULL)
{
while (!feof(datei)) {
fgets(line,LAENGE,datei);
num = atoi(line);
printf ("%i ",num);
i++;
}
} else {printf("Öffnen Fehlgeschlagen");}
int position = 0;
int zahl = 0;
int durchlaufe = 0;
int j=0;
int buffer=0;
while(durchlaufe<i) {
printf("Durchlaufnummer : %i\n", durchlaufe);
zahl = num[durchlaufe];
for(j=durchlaufe;j<=i;j++) {
if(zahl>num[j+1]) {
zahl=num[j+1];
position=j+1;
}
}
buffer = num[durchlaufe];
num[durchlaufe] = zahl;
num[position]=buffer;
durchlaufe++;
for(int g=0;g<i;g++) {
printf(" %i ", num[g]);
}
}
fclose (datei);
return 0;
}
Ausgabe :
4 20 12 8 16 6 10 14 2 18 -3 21 0 Durchlaufnummer : 0
-3 20 12 8 16 6 10 14 2 18 4 21 0 Durchlaufnummer : 1
-3 0 12 8 16 6 10 14 2 18 4 21 20 Durchlaufnummer : 2
-3 0 2 8 16 6 10 14 12 18 4 21 20 Durchlaufnummer : 3
-3 0 2 4 16 6 10 14 12 18 8 21 20 Durchlaufnummer : 4
-3 0 2 4 6 16 10 14 12 18 8 21 20 Durchlaufnummer : 5
-3 0 2 4 6 8 10 14 12 18 16 21 20 Durchlaufnummer : 6
-3 0 2 4 6 8 10 14 12 18 10 21 20 Durchlaufnummer : 7
-3 0 2 4 6 8 10 10 12 18 14 21 20 Durchlaufnummer : 8
-3 0 2 4 6 8 10 10 12 18 12 21 20 Durchlaufnummer : 9
-3 0 2 4 6 8 10 10 12 12 18 21 20 Durchlaufnummer : 10
-3 0 2 4 6 8 10 10 12 12 18 21 20 Durchlaufnummer : 11
-3 0 2 4 6 8 10 10 12 12 18 20 21 Durchlaufnummer : 12
-3 0 2 4 6 8 10 10 12 12 18 20 21 logout