elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mantener ordenados strings
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mantener ordenados strings  (Leído 2,354 veces)
RON06

Desconectado Desconectado

Mensajes: 32


Aprendiz


Ver Perfil
Mantener ordenados strings
« en: 21 Febrero 2011, 14:36 pm »

Hola a tod@s!

Quiero hacer un programa que lea una serie de strings(palabras) con una marca al final de todo, en este caso la marca es '#'.

Cada vez que aparezca un nombre repetido se incrementa en 1 el nombre de apariciones.

I si la palabra es nueva, se añade ordenadamente.
Es decir, sin añadirla al final y después ordenar antes de mostrar por pantalla.

En definitiva, tengo problemas en el momento de añadir ordenadamente.

Una muestra de lo que quería que hiciese es esta imagen:



I el codigo que he hecho hasta el momento es el siguiente:
Código:
#include <iostream>
#include <string>

using namespace std;

    // Constantes
    const int N=2000;
    const string FIN="#";

    //Estructura de nombres
    struct Nombre {
        string texto;
        int veces;
    };

    // Declaración de nuevo tipo
    typedef Nombre TablaNombres[N];

void insertarOrdenado(TablaNombres nombres, int& n, string p) {
    //Declaración variables
    int posicion, compara,compara2,i;
    bool encontrada;

    posicion=1;
    encontrada=false;//indica si ha encontrado la posicion de inserción

    while ((posicion<=n) and (not encontrada)) {
          compara=p.compare((nombres[posicion].texto));
          if (compara>=0) {
             encontrada=true;
          }
          else {
                posicion=posicion+1;
          }
    }
    //posicion es la posición de inserción

    compara2=p.compare((nombres[posicion].texto));
    if (compara2==0) {
        nombres[posicion].veces=nombres[posicion].veces+1;

    }
    else {
    //Añadir nuevo

    for (i=n;i>=posicion;i--){
        nombres[i+1]=nombres[i];
    }
    nombres[posicion].texto=p;
    nombres[posicion].veces=1;

    n=n+1;
    }
}


void lecturaNombres(TablaNombres nombres, int& n) {
    //Declaración variables
    string p;
    int c;

    cin >> p;
    c=p.compare(FIN); //c=0 si son iguales

    while (c!=0) {

    insertarOrdenado(nombres,n,p);

    cin >> p;

    }
}


void mostrar(TablaNombres nombres, int n) {
    //Declaración variables
    int i;

    for (i=0; i<n; i++) {
         cout << nombres[i].texto << " - " << nombres[i].veces << endl;
    }
}


int main()
{
    // Declaración de variables
    int n;
    TablaNombres nombres;

    n=0;

    cout << "ESCRIBA LOS NOMBRES A PROCESAR" << endl;

    lecturaNombres(nombres,n);

    cout << "NOMBRES ORDENADOS ALFABETICAMENTE" << endl;

    mostrar(nombres,n);

    return 0;
}


Al compilar no me sale ningún error ni advertencia, pero al ejecutar, después de introducir los nombres separados por un espacio en blanco y con la marca final '#'.
No muestra nada más.

El problema deduzco que es en el InsertarOrdenado, está mal planteado o tiene algún bucle infinito.

Si alguien me puede ayudar muchas gracias  ;D


PD: Se acceptan propuestas de cambios en la manera de estructurar el problema o sugerencias de como solucionarlo.

Revisando días después he visto los errores  ::)


« Última modificación: 23 Febrero 2011, 19:55 pm por RON06 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Lista de strings
Programación Visual Basic
Kizar 6 2,833 Último mensaje 13 Febrero 2006, 17:57 pm
por NYlOn
manejo de strings
Programación Visual Basic
elrecar 6 2,723 Último mensaje 16 Octubre 2007, 20:28 pm
por elrecar
Mantener controles ordenados
Programación Visual Basic
pungados 7 1,968 Último mensaje 2 Diciembre 2007, 02:17 am
por ‭‭‭‭jackl007
comparar strings
Java
alexkof158 2 6,389 Último mensaje 7 Mayo 2008, 19:10 pm
por alexkof158
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines