Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2011, 09:27
Avatar de mihina
mihina
 
Fecha de Ingreso: mayo-2010
Ubicación: Girona
Mensajes: 32
Antigüedad: 14 años, 6 meses
Puntos: 1
Información Ayuda con ordenacion

Hola y de antemano gracias!

Mi duda es la siguiente: Tengo que ordenar alfabeticamente una lista, el problema que tengo es que la tengo que ir ordenando mientra va leyendo las palabras. No puedo guardarlas todas en una lista y posteriormente ordenarlas. Se deben de ir ordenando segun se va leyendo.

Lo maximo que podio hacer es que me ordene una pequeña parte pero luego la mitad de las palabras no me las ordena y en pantalla solo salen 0.

Aqui os dejo el codigo:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX_PARAULES=2500;
  7. const string M_FI="#";
  8.  
  9. struct Paraula
  10. {
  11.     string paraula;
  12.     int llarg;
  13.     int rep;
  14. };
  15.  
  16. typedef Paraula TaulaParaula[MAX_PARAULES];
  17.  
  18. void introduirParaules(TaulaParaula t, int&n)
  19. {
  20.     string c;
  21.     int pos;
  22.     cin>>c; //palabra nueva
  23.     Paraula temp;
  24.     int j=0;
  25.  
  26.     while(c != M_FI)
  27.     {
  28.         if(n>0){
  29.             for (int i=0; i<n; i++){
  30.                 if(c.compare(t[i].paraula)<0){
  31.                     temp=t[i];
  32.                     //guardamos palabra nueva
  33.                     t[i].paraula=c;
  34.                     t[i].llarg=c.length();
  35.                     t[i].rep=1;
  36.  
  37.                     t[i+1]=temp;
  38.                 }
  39.             }
  40.         }
  41.         else{
  42.             t[n].paraula=c;
  43.             t[n].llarg=c.length();
  44.             t[n].rep=1;
  45.         }
  46.         n++;
  47.         cin>>c;
  48.     }
  49. }
  50.  
  51. int main()
  52. {
  53.     TaulaParaula paraules;
  54.     int n=0;
  55.  
  56.     cout << "ENTRA EL TEXT A ANALITZAR" << endl;
  57.     introduirParaules(paraules,n);
  58.  
  59.     cout << "PARAULES LLEGIDES PER ORDRE ALFABETIC" << endl;
  60.     mostrarParaules(paraules,n);
  61.  
  62.     return 0;
  63. }
Gracias y perdonen por si tengo algun fayo tonto, es que llevo una semana aprendiendo c++.