Hallo @ all
WIr sollten heute in der Schule in einem Array die Zahlen sortieren. Dachte mir das so:
Z1<Z2 dann => tauschen und wieder von vorne anfangen. Habe so einen COde geschrieben.
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void tausche(int *piArray1, int *piArray2)
{
int iTemp;
iTemp = *piArray1;
*piArray1 = *piArray2;
*piArray2 = iTemp;
}
void Sortieren(int *paiArray, int iAnzahl)
{
int iX;
for (iX=0; iX<iAnzahl-1; iX++)
{
if (paiArray[iX]>paiArray[iX+1])
{
tausche(&paiArray[iX], &paiArray[iX+1]);
iX=0;
}
}
}
void Feldausgabe(int *paiArray, int iAnzahl)
{
int iX;
for(iX=0;iX<iAnzahl;iX++)
{
if (iX<9)
{
printf("0%d. Zahl: %d\n",iX+1, paiArray[iX]);
}
else
{
printf("%d. Zahl: %d\n",iX+1, paiArray[iX]);
}
}
}
void Feldeingabe(int *paiArray, int iAnzahl)
{
int iX;
for(iX=0; iX<iAnzahl; iX++)
{
paiArray[iX]=rand()%100+1;
}
}
int main(void)
{
int aiArray[100];
int iAnzahl=100;
srand(time(0));
Feldeingabe(aiArray, iAnzahl);
Sortieren(aiArray, iAnzahl);
Feldausgabe(aiArray, iAnzahl);
getchar();
}
|
Ein Problem ist aber noch drin. Wenn Zahl1 < Zahl2 bleibt diese an der Stelle stehen. Wenn Z1 > Z2 kommt Z2 an erste Stelle und beibt da auch immer Stehen. Sieht so aus als ob sie nicht mehr überprüft wird. Obwohl die Schleife ja immer bei 0 startet. Alle anderen Zahlen werden erfolgreich geordnet. Was ist daran falsch?
EDIT: Habe den Fehler gefunden. Setze iX=0 aber wenn die Schleife durchgelaufen ist setzt er sich wieder auf 1. Also iX=-1. Jetzt gehts.
Hoffe auf euer Hilfe. Viele Grüße
Crosaider