Mamy zrobić program do Natural Sort Order (powinien sortować wyrazy w których występują liczby w odpowiedni sposób) w C. Już 2 osoby widziały kod, nikt nie znalazł jakichś błędów a program głupieje - kończy się ale nie działa poprawnie. Ratunku, potrzebuję pomocy na już :(
static const int W=10, K=10;
void nso (char tab[W][K])
{
int n=W;
char tab_zam[K];
do
{
for (int i=0; i<W-1; i++)
{
for (int j=0; j<K; j++)
{
int w1 = tab[i][j],w2 = tab[i+1][j];
if(47<w1 && w1<58 && 47<w2 && w2<58)
{
int liczba1 = 0, liczba2 = 0;
for (int k=j; k<K; k++)
{
int tmp1 = tab[i][k], tmp2 = tab[i+1][k];
if(47<tmp1 && tmp1<58)
{
liczba1 = 10*liczba1+(tmp1-48);
}
if(47<tmp2 && tmp2<58)
{
liczba2 = 10*liczba2+(tmp2-48);
}
}
if(liczba2<liczba1)
{
for (int a=0; a<K; a++)
{
tab_zam[a] = tab[i][a];
tab[i][a] = tab[i+1][a];
tab[i+1][a] = tab_zam[a];
}
}
liczba1 = 0;
liczba2 = 0;
}
else if( (w1<48 || w1>57) && (48>w2 || w2>57) && w1<w2)
{
for (int a=0; a<K; a++)
{
tab_zam[a] = tab[i][a];
tab[i][a] = tab[i+1][a];
tab[i+1][a] = tab_zam[a];
}
}
else if((w1<48 || w1>57) && (47<w2 && w2<58))
{
for (int a=0; a<K; a++)
{
tab_zam[a] = tab[i][a];
tab[i][a] = tab[i+1][a];
tab[i+1][a] = tab_zam[a];
}
}
}
}
n=n-1;
}
while(n>0);
}
int main()
{
char tab[W][K];
for (int i=0; i<W; i++)
{
for (int j=0; j<K; j++)
tab[i][j] = 0;
}
tab[0][0] = 's';
tab[0][1] = 'i';
tab[0][2] = 'e';
tab[0][3] = 'm';
tab[0][4] = 'k';
tab[0][5] = 'a';
tab[0][6] = '1';
tab[0][7] = '3';
tab[0][8] = '2';
tab[1][0] = 'a';
tab[1][1] = 'l';
tab[1][2] = 'f';
tab[1][3] = 'a';
tab[1][4] = 'b';
tab[1][5] = 'e';
tab[1][6] = 't';
tab[1][7] = '1';
tab[1][8] = '1';
tab[2][0] = 's';
tab[2][1] = 'i';
tab[2][2] = 'e';
tab[2][3] = 'm';
tab[2][4] = 'k';
tab[2][5] = 'a';
tab[2][6] = '1';
tab[2][7] = '2';
tab[2][8] = '3';
tab[3][0] = 'b';
tab[3][1] = 'i';
tab[3][2] = 'e';
tab[3][3] = 'd';
tab[3][4] = 'a';
tab[3][5] = 'k';
tab[3][6] = '3';
tab[3][7] = '8';
tab[3][8] = '4';
for (int i=0; i<6; i++)
{
for (int j=0; j<9; j++)
printf("%c ", tab[i][j]);
printf("\n");
}
printf("\n");
nso(tab);
for (int i=0; i<10; i++)
{
for (int j=0; j<10; j++)
printf("%c ", tab[i][j]);
printf("\n");
}
return 0;
}