Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehler in meinem Programm

Empfohlene Antworten

Hallo,

könnt ihr mir beim Fehlersuchen helfen, bzw. erklären, warum dieses Programm so abläuft.

Mein Programm:


#include <stdio.h>

#include <conio.h>


void fillarray();

void showarray();

void sortarray();

int exchange(int i, int j);




char a[5][15];


main()

{

clrscr();

fillarray();

showarray(),

sortarray();

showarray();

getch();

}


void fillarray()

{

strcpy(a[0],"a");

strcpy(a[1],"b");

strcpy(a[2],"c");

strcpy(a[3],"d");

strcpy(a[4],"e");

}


void showarray()

{

int i;


for(i=0;i<=5;i++)

 {

  printf("%s\n",a[i]);

 }

printf("\n");

}


void sortarray()

{

int i,ex;


do

for(ex=1,i=0;i<=4;i++)

 {

  if(strcmp(a[i],a[i+1]) > 0)

    {ex=exchange(i,i+1);};

 }

while(ex==0);

}


int exchange(i,j)

{

char k[15];

strcpy(k,a[i]); strcpy(a[i],a[j]); strcpy(a[j],"x");  /*normalerweise strcpy(a[j],k) statt (a[i],"x"), wollt es aber so probieren (zum Verständnis)*/

return(0);

}

Wie man sieht, sind die Werte in dem Array a schon geordnet. Also müsste doch die Funktion exchange() NIEMALS aufgerufen werden, da i nie größer ist als i+1. Im Array a ist ja schon alles geordnet bei mir in diesem Beispiel.

{

  if(strcmp(a[i],a[i+1]) > 0)

    {ex=exchange(i,i+1);};

 }

Das Problem ist: die Funktion exchange() wird dennoch aufgerufen.

Führe ich das Programm aus, wird 5 mal ein "x" ausgegeben. Das heißt, das exchange() ausgeführt wird.

Nur warum!!!!!

PS: Mal 'ne eher psychisch gesehene Frage:

Wie kommt ihr damit klar, wenn mal was nicht so funktioniert, wie's funktionieren soll? Bzw. wie war's bei euch am Anfang, wo ihr C gelernt habt?

Ich krieg immer voll die Krise, wenn was nicht funktionert und werd total zum Psycho...

Habt ihr beim Erlernen von C einfach weiter gemacht und es gut sein lassen, wenn ein Beispiel nicht funktioniert hat. Oder habt ihr so lange gesucht, bis ihr den Fehler gefunden habt, bzw. rausgefunden habt, warum das Programm so komische Sachen macht, die es eigentlich nicht tun sollte.

Ich werd voll bekloppt.

In meinem 2. Leben mach ich kein Studium mehr, wo man auch Programmieren muss...

Das heißt, das exchange() ausgeführt wird.

Nur warum!!!!!

Weil deine Schleife in der Funktion sortarray zu weit läuft. Deine Variable i läuft bis einschließlich vier, das heißt, du vergleichst a[4] mit a[5]. a[5] gibt es aber gar nicht -> Undefiniertes Verhalten.

Jetzt funktioniert das, danke!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.