Nebuchadnezar
Erfahrenes Mitglied
hi ich wollte mal ein 2 Dimensionales Feld in dem ich einfache Wörter einlese nach alphabet sortieren(eh schon aus meinem letzten Post ersichtlich) das schaut ungefähr so aus:
Ist ein bisschen viel für einen Post aber falls es jemand von euch compillieren will braucht er sich ned das Hauptprogramm überlegen.
Kenner sehen sofort die Ähnlichkeit mit Bubblesort.
Mein Problem ist bei ähnlichen Wörtern will der Kerl noch nicht so richtig.
Zum Beispiel macht das Programm aus:
abc
aba
fgh
efg
bik
-----
abc ************
aba ************
bik
efg
fgh
die mit stern markierten zeilen gehören ja umgekehrt. Sonst funktioniert es.
Vielleicht weis wer rat.
Code:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
char eingabe[20][20];
void tausche(char szEingabeA[],char szEingabeB[]);
void sortieren(char zEingabe[][20]);
void main()
{
int i;
for (i = 0;i <20;i++)
{
eingabe[i][0] = '0';
}
for (i = 0;i < 5;i++)
{
gets(eingabe[i]);
}
sortieren(eingabe);
for (i = 0;i < 5;i++)
{
cout << eingabe[i] << endl;
}
getch();
//to do
}
void tausche(char szEingabeA[],char szEingabeB[])
{
char temp[20];
strcpy(temp,szEingabeA);
strcpy(szEingabeA,szEingabeB);
strcpy(szEingabeB,temp);
}
void sortieren(char szEingabe[][20])
{
int i = 0,j,m,n,o,p;
for (j = 0; j < 20; j++)
{
if(szEingabe[j][0] != '0')
i++;
}
n = i;
for (j = 0;j < n; j++)
{
for(m = 0;m < i - 1;m++)
{
if(strlen(szEingabe[m]) > strlen(szEingabe[m+1])) p = strlen(szEingabe[m]);
else p = strlen(szEingabe[m+1]);
for(o = 0;o < p;o++)
{
if(szEingabe[m][o] > szEingabe[m+1][o])
{
tausche(szEingabe[m],szEingabe[m+1]);
break;
}
else (szEingabe[m][o] < szEingabe[m+1][o]);
break;
}
}
i--;
}
}
Kenner sehen sofort die Ähnlichkeit mit Bubblesort.
Mein Problem ist bei ähnlichen Wörtern will der Kerl noch nicht so richtig.
Zum Beispiel macht das Programm aus:
abc
aba
fgh
efg
bik
-----
abc ************
aba ************
bik
efg
fgh
die mit stern markierten zeilen gehören ja umgekehrt. Sonst funktioniert es.
Vielleicht weis wer rat.