ordenar alfabeticamente

cdga777
04 de Mayo del 2004
necesito saber como organizar alfabeticamente en c unos nombres que estan en un vector

Alejandro_
04 de Mayo del 2004
Hola,

Si se trata de un vector de strings (de la biblioteca estándar), el algoritmo "sort" dejará al vector ordenado alfabeticamente. Un ejemplo:

#include <vector>
#include <string>
#include <iostream>

using namespace std;

int main()
{
vector<string>paises(4);
paises[0] = "Canadá";
paises[1] = "Japón";
paises[2] = "Austria";
paises[3] = "Togo";

sort(paises.begin(), paises.end());

for(unsigned int i=0; i<paises.size(); ++i) {
cout << paises[i] << 'n';
}

return 0;
}

noel solw
04 de Mayo del 2004
El programa anterior es muy interesante, y tambien sencillo, pero me temo que no funcion en C comun.
Supongo que esta escrito en Dev o en Visual C.
Te envio un programa en C++, que puede ser transformado sin problemas a C, si es necesario.

// program k8c22 - page 170
// word sorting, not case-sensitive.
// c++ exercices book - dr. gershon kagan - first edition : 2001
// written in Borland CPP ver 3.1

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <string.h>

#define MAX 20

void BuildTokenArray(char *str,char *tok[])
{
char *sep = " ,.:;?!0123456789";
tok[0] = strtok(str,sep);
for(int i = 0;tok[i];)
tok[++i] = strtok(NULL,sep);
} // BUILD TOKEN ARRAY

void Swap(char* &a,char* &b)
{
char *holder = a;
a = b;
b = holder;
} // SWAP CHAR POINTER

void SortTokenArray(char *tok[])
{
for(int top = 0;tok[top+1];top++)
for(int i = top;i >= 0;i--)
{
if(stricmp(tok[i],tok[i+1]) > 0)
Swap(tok[i],tok[i+1]);
else
break;
}
} // SORT TOKEN ARRAY

void Process()
{
char *str = "Father,mother,sister,brother,grandfather,grandmother,"
"uncle,aunt",
*tok[MAX];
cout << "string : " << str << endl;
BuildTokenArray(str,tok);
SortTokenArray(tok);
cout << "sorted : ";
for(int i = 0;tok[i];i++)
cout << tok[i] << " ";
cout << endl;
} // PROCESS

void main()
{
clrscr();
cout << "word sorting, not case-sensitive.n";
cout << "-----------------------------------------------------"
"-----------------------n";
Process();
cout << "-----------------------------------------------------"
"-----------------------n";
cout << "end of program - good bye ! ! !n";
getch();
} // MAIN

/*
word sorting, not case-sensitive.
----------------------------------------------------------------------------
string : Father,mother,sister,brother,grandfather,grandmother,uncle,aunt
sorted : aunt brother Father grandfather grandmother mother sister uncle
----------------------------------------------------------------------------
end of program - good bye ! ! !
*/