[ turnceler @ 13.01.2008. 17:40 ] @
Trebao bih sortirati varijablu char y[4][5] postupkom kojim se sortiralo varijablu char x[5].
Rješenje sa stringovima znam, ali ja bih ako je moguće to htio na ovaj teži način.
Da li je to izvedivo?

pozdrav

Code:

#include <iostream>
using namespace std;

int main()
{
    int i,pom,j=0;
    char x[5]={"ahdb"};
    //char y[4][5]={"bcdf","nbfk","kjfz","abcl"};
    for (i=0;i<6;i++)
            for (j=i+1;j<5;j++)
                if (x[j]<x[i])
                    {
                    pom=x[i];
                    x[i]=x[j];
                    x[j]=pom;
                    }
    for (i=0; i<5; i++)
        cout<<x[i];
}


[Ovu poruku je menjao X Files dana 19.09.2008. u 12:49 GMT+1]
[ dr_z @ 01.02.2008. 20:20 ] @
Code:

#include <iostream>
using namespace std;

bool cmp(char* s1,char* s2){
    for(int i=0;i<4;i++)
        if(s2[i]<s1[i])
            return 1;
            else
                if(s2[i]>s1[i])
                    return 0;
    return 0;
}

int main(){
    char* y[4]={"bcdf","nbfk","kjfz","abcl"};
    
    for(int i=0;i<3;i++)
        for(int j=i+1;j<4;j++)
            if(cmp(y[i],y[j])){
                char* t;
                t=y[i];
                y[i]=y[j];
                y[j]=t;    
                                //razmjenjujes samo adrese
            }
    
    for(int i=0;i<4;i++)
        cout<<y[i]<<endl;
    
    return 0;
}


ili manje efikasno

Code:

#include <iostream>
#include <cstring>
using namespace std;

bool cmp(char* s1,char* s2){
    for(int i=0;i<4;i++)
        if(s2[i]<s1[i])
            return 1;
            else
                if(s2[i]>s1[i])
                    return 0;
    return 0;
}

int main(){
    char y[4][5]={"bcdf","nbfk","kjfz","abcl"};
    
    for(int i=0;i<3;i++)
        for(int j=i+1;j<4;j++)
            if(cmp(y[i],y[j])){
                char t[5];
                strcpy(t,y[i]);
                strcpy(y[i],y[j]);
                strcpy(y[j],t);
                                //razmjenjujes citave nizove
            }
    
    for(int i=0;i<4;i++)
        cout<<y[i]<<endl;
    
    return 0;
}