UTNianos

Versión completa: [Pedidor][Algoritmos] Duda con ejercicio
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas, tengo una duda con el siguiente ejercicio:
Construir un algoritmo que dado un archivo de datos que contiene palabras en minúscula (25 caracteres cada una) de un texto, muestre un listado con todas las palabras que comienzan con a, todas las palabras que comienzan con b y así sucesivamente finalizando con todas las palabras que comienzan con z, ordenadas alfabéticamente.
Las palabras que se repiten en el texto solo deben aparecer una vez en el listado.
Ejemplo:
TEXTO: corte de control es un algoritmo que se aplica solamente en información que este agrupada u ordenada
a : agrupada algoritmo aplica
c: control corte
d: de
e: en es este
……..etc.

Nota: puede utilizar los siguientes subprogramas. NO tiene que desarrollarlas. TIENE que escribir los encabezamientos.

Función PrimeraLetra que recibe un string de 25 caracteres y retorna la primera letra del string.
Función CodificarLetra que recibe una letra y retorna un número entre 1 y 27 que indica su ubicación en el alfabeto (si recibe a retorna 1, si recibe b retorna 2, si recibe c retorna 3, etc)
Procedimiento LeerPalabra que recibe el archivo y retorna una palabra de 25 caracteres.

Bueno mi idea fue hacer un vector , donde en cada posicion hay dos campos: uno con la letra(ya que esta debe aparecer una sola vez) y el otro es una lista donde aparecen todas las palabras que empiezan con esa letra. Mi duda es como hago para que al insertar las palabras en la lista queden ordenadas alfabeticamente? Existe algún procedimiento o funcion de esos que se pueden usar en el final sin desarrollar que puede ser aplicado o hay alguna otra forma?
Seguramente existe algún "insertarOrdenado(lista, elementoNuevo)", que es algo bastante común. Si no, la tendrás que desarrollar: sólo hay que buscar en qué posición hay que ponerla. Tiene que haber alguna forma de comparar los strings, tipo strcmp de C. Si no lo dan por hecho, también tendrás que hacerla.

Por otro lado, puede no ser necesario tener dos elementos en cada posición del vector, te alcanza con la función CodificarLetra para ubicar la posición del vector.
En cuanto al vector podrías usar un campo solo, la letra no te haría falta porque con el índice del vector y la función "CodificarLetra" podrías manejarlo.

En cuanto a la lista fijate el algoritmo de insertar ordenado que seguro te sirve.

Slds
pero insertar ordenado sirve con letras tmb?

los dos elementos en el vector no son para ordenarlo sino para emitir el listado
a : agrupada algoritmo aplica

si metiera la a y la palabra en la lista me saldria
a:agrupada a:algoritmo a:aplica

por eso se me ocurrio hacer dos campos

gracias por la respuesta
Sigue sin necesitar los dos campos, y lo de insertarOrdenado sirve para cualquier cosa, todo depende de la implementación. Si lo hicieron para ordenar letras ordena letras y si números números y si cualquier cosa cualquier cosa.
Bueno mira... empecemos por el principio. Te dice que el archivo esta ordenado alfabeticamente y te pide que informes todas las palabras que empiezan con "a", por lo tanto hace un algoritmo de corte de control (Si no sabes como se hace avisame y te ayudo). La idea del corte de control es que leas todas las palabras que empiezan con "a" y las informes a medida que las lees. El ciclo lo haces hasta que la palabra cambie la letra con la que empieza. Por ej: si la ultima palabra ingresada empieza con "a" y la proxima palabra que ingresa empieza con "b", ya sabes que todas las palabras que siguen empiezan con "b" (hasta que cambie la letra). Eso es basicamente "Cortes de Control" y con eso se resuelve el ejercicio.

No dudes en consultar ! saludos y suerte !!

Con respecto a lo que dijo el usuario "Dios" esta MAL. No es necesario usar un vector y menos un algoritmo INSERTANODO !!!
Los algoritmos inserta nodos son para manejo de memoria dinamica, en este ejercicio en ningun lugar te pide que manejes memoria dinamica. Tampoco necesitas un vector... ya que lo unico que te pide es que informes lo que esta en el archivo ordenado de cierta manera. Los vectores se usan cuando necesitas procesar la info que levantas del archivo.
Lo que dijo el usuario "Dios" no está MAL, estaba respondiendo lo que había preguntado el muchacho inicialmente.

Con respecto a lo que dijo el usuario "mantovani.leandro" está PÉSIMO. En absolutamente ningún lado dice que el archivo esté ordenado de ninguna manera, pero lo está asumiendo gratuitamente, porque PARA COLMO el ejemplo del texto que da NO ESTÁ ORDENADO DE NINGUNA MANERA.

Por otro lado que no te digan que tenés que usar memoria dinámica no es un impedimento para usarla.

Adolfito No dudes en consultar, pero a los que saben, no a cualquier papanatas.
URLs de referencia