1
The following program is not ordering the chars vector correctly, but I don’t know why. Maybe it’s my auxiliary function "cmpstr" that isn’t returning the right value in some cases, or my qsort call... What’s wrong?
#include <iostream>
#include <cstdlib> //qsort
#include <cstring> //strcmp
using namespace std;
int cmpstr(const void* a, const void* b){ // função auxiliar do qsort
const char* aa = (const char*)a;
const char* bb = (const char*)b;
return strcmp(aa, bb);
}
char equipe[1000][5000][50]; //array de arrays de arrays de caracteres
int main()
{
int qtd_alunos, qtd_times, qtd_membros;
cin>>qtd_alunos>>qtd_times;
qtd_membros = qtd_alunos/qtd_times;
for(int j=0; j<qtd_membros; j++){ //recebe nomes
for(int i=0; i<qtd_times; i++){
cin>>equipe[i][j];
}
}
for(int j=0; j<qtd_times; j++){ //ordena cada equipe [deveria ordenar]
qtd_membros = qtd_alunos/qtd_times;
qsort(equipe[j], qtd_membros, sizeof(char*), cmpstr);
}
for(int i=0; i<qtd_times; i++){ //exibe a composição de cada equipe
cout<<"Time "<<i+1<<'\n';
qtd_membros = qtd_alunos/qtd_times;
for(int j=0; j<qtd_membros;j++){
cout<<equipe[i][j]<<'\n';
}
cout<<'\n';
}
return 0;
}