Zum Inhalt springen

sotieren von buchstaben klappt nicht


aerothunder

Empfohlene Beiträge

hallo an alle. ich hab vor kurzem mit der C-Programmierung angefangen, und habe ein blödes problem.

ich habe zunächst mal ein programm geschrieben, mit dem ich max. 10 zahlen sortieren kann:

#include <stdio.h>


void main()

{

 int i_count, i_index, i_j, i_help, i_value[10];

 // eingabe der anzahl der zu sortierenden zahlen:

 do

 {

  printf("How many numbers do you want to sort? (MAX 10) ");

  scanf("%i",&i_count);

 }

 while(i_count>10);

 // eingabe der zahlen:

 for(i_j=0;i_j<i_count;i_j++)

 {

  printf("Number %i: ",i_j+1);

  scanf("%i",&i_value[i_j]);

 }

 // start der rechnung und sortierung:

 for(i_index=1;i_index<i_count;i_index++)

 {

  for(i_j=i_count-1;i_j>=i_index;i_j--)

  {

   if(i_value[i_j]<i_value[i_j-1])

   {

    i_help=i_value[i_j];

    i_value[i_j]=i_value[i_j-1];

    i_value[i_j-1]=i_help;

   }

   else

   {

   }

  }

 }

 // ausgabe der richtigen reihenfolge:

 printf("\n");

 for(i_j=0;i_j<i_count;i_j++)

 {

  printf("\n%i",i_value[i_j]);

 }

 printf("\n\nPress ENTER to exit!");

 getchar();

 getchar();

}
das programm läuft eigentlich super, doch nun wollte ich es umschreiben um damit buchstaben zu sortieren. das sieht bei mir dann so aus:
#include <stdio.h>


void main()

{

 int i_count, i_index, i_j;

 char c_help, c_letter[10];

 // eingabe der anzahl der zu sortierenden zahlen:

 do

 {

  printf("How many numbers do you want to sort? (MAX 10) ");

  scanf("%i",&i_count);

 }

 while(i_count>10);

 // eingabe der zahlen:

 for(i_j=0;i_j<i_count;i_j++)

 {

  printf("Letter %i: ",i_j+1);

  scanf("%c",&c_letter[i_j]);

 }

 // start der rechnung und sortierung:

 for(i_index=1;i_index<i_count;i_index++)

 {

  for(i_j=i_count-1;i_j>=i_index;i_j--)

  {

   if(c_letter[i_j]<c_letter[i_j-1])

   {

    c_help=c_letter[i_j];

    c_letter[i_j]=c_letter[i_j-1];

    c_letter[i_j-1]=c_help;

   }

   else

   {

   }

  }

 }

 // ausgabe der richtigen reihenfolge:

 printf("\n");

 for(i_j=0;i_j<i_count;i_j++)

 {

  printf("\n%c",c_letter[i_j]);

 }

 printf("\n\nPress ENTER to exit!");

 getchar();

 getchar();

}

doch die buchstabenvariante klappt einfach nicht.

ich finde einfach den fehler nicht, und im bug report (compile log) steht auch kein hinweis.

hoffentlich kann mir hier einer helfen...

danke im vorraus :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wandel die einzelnen Buchstaben beim Vergleich in numerische Werte um (Stichwort ASCII Code).
Das passiert von ganz allein. char ist ein numerischer Datentyp, der Wert ist der ASCII-Code.

Ich vermute mal (mit "klappt einfach nicht" ist leider nicht mehr zu machen), dass hier die Zeilenvorschübe als Zeichen eingelesen werden.

In diesem Fall ließe sich das wohl mit "\n%c" als Formatstring für scanf lösen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wandel die einzelnen Buchstaben beim Vergleich in numerische Werte um (Stichwort ASCII Code).

Ach ja, Du weißt, dass der Bubblesort eine Laufzeitkomplexität von O(n^2) hat !?

Phil

ok, das wäre eine idee. mir ist auch aufgefallen, die buchstaben werden sortiert, jedoch spinnt die eingabe total (einfach mal den code ausprobieren und selbst sehen).

bei den code handelt es sich um ein schulisches projekt, und die aufgabe ist, mit bubblesort eine lösung zu finden.

wir haben noch nicht gelernt, wie man buchstaben in numerische werte umwandelt (so schwer kann es bestimmt nich sein), und es ist glaub ich auch nicht erwünscht...

ich habe aber endlich die lösung gefunden:

[...]

 for(i_j=0;i_j<i_count;i_j++)

 {

  fflush(stdin);

  printf("Letter %i: ",i_j+1);

  scanf("%c",&c_letter[i_j]);

 }

[...]

mit fflush(stdin); den zwischenspeicher leeren, dann gehts, trotzdem danke für eure hilfe^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...