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.
Alles anzeigen
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
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.
Quellcode
- #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
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Crosaider ()