• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Natural Sort Order

0 głosów
60 wizyt
pytanie zadane 15 marca w C i C++ przez Ryszard Kałuziński Nowicjusz (210 p.)

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;
}

 

komentarz 15 marca przez j23 Szeryf (97,580 p.)
    tab[0][0] = 's';
    tab[0][1] = 'i';
    tab[0][2] = 'e';
    tab[0][3] = 'm';
    ...

    tab[3][8] = '4';

 

Słyszał o strcpy i literałach tekstowych?

komentarz 15 marca przez mokrowski VIP (101,800 p.)

@Ryszard Kałuziński,
 4 razy zagnieżdżona pętla, kryptograficzne nazwy zmiennych, magiczne wartości 48, 57... miejże litość... To wygląda jakbyś "zwymiotował intelektualnie" program :/ (przepraszam za szczerość).

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 42 wizyt
pytanie zadane 21 lutego w C i C++ przez Zaratustra Początkujący (280 p.)
0 głosów
1 odpowiedź 96 wizyt
pytanie zadane 2 sierpnia 2017 w C i C++ przez Jakub 0 Stary wyjadacz (12,310 p.)
0 głosów
1 odpowiedź 449 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

62,306 zapytań

108,432 odpowiedzi

226,358 komentarzy

35,030 pasjonatów

Przeglądających: 145
Pasjonatów: 0 Gości: 145

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...