Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Lectura y ordenación de líneas en C  (Leído 682 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Tram
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 5


« en: 21/08/2008, 12:37:36 »

Hola,

tengo el siguiente código en C, donde simplemente se leen las líneas que el usuario teclea (líneas, no palabras, y como máximo habrá 52 líneas)  y las almacena en un array.
Está hecho así porque en las condiciones se exigía que no se utilizasen arrays de 2 dimensiones, ni "string.h", ni variables globales.

El código me funciona (si hubiese algún error decídmelo..)

Código:
#include <stdio.h>
#include <stdlib.h>

int main(void){

char lineas[52*80];
char *puntero=lineas;
int i;


printf("Escriba lineas de texto\n");

for(i=0; i<52 && (gets(puntero)!=NULL); i++){

if(strcmp(puntero,"fin") == 0) break;
puntero = strchr(lineas, '\0');

}

puts(lineas);

}

El problema lo encuentro ahora que debo ordenar alfabéticamente las líneas almacenadas por el método de selección (cualquier otro valdría pero sugieren ese). No sé cómo sacar las líneas del array puesto que están todas una detrás de otra. Alguna sugerencia?
Gracias
En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #1 en: 21/08/2008, 12:59:17 »

Que luego de leer cada línea también guardes el caracter de salto \n que marque el final de cada línea.

Ejemplo:

Hola mundo\nChau Mundo\n

Saludos.

PD: Supuse que "línea" significa todo el texto ingresado hasta la pulsación de ENTER.
En línea

Tram
Wizard
****

Prestigio: 0
Desconectado Desconectado

Mensajes: 5


« Respuesta #2 en: 21/08/2008, 13:39:24 »

Gracias, acabo de añadirlo  Sonrisa

Ahora mi duda es... si tengo por ejemplo:

Hola mundo\nQue tal\nBien\nMe llamo Luis\n ...

y tengo que ordenarlo, al coger el elemento menor "Bien" e intercambiarlo por el primero,... como tiene tamaños diferentes, no se colocaría encima de otros caracteres? No sé si me explico.

Osea al colocar "Hola mundo" donde estaba "Bien", luego debería desplazarse hacia la izquierda "Que tal" para que haya hueco suficiente para colocar "Hola mundo" donde estaba "Bien", no?
En línea
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« Respuesta #3 en: 21/08/2008, 14:01:35 »

Podes usar una estructura de datos adicional para trabajar la ordenación (array de dos dimensiones, lista enlazada, etc) y luego descargar todo nuevamente en el array de char.
O bien tenes que desplazar...
Todo depende de lo que necesites, mayor velocidad u ocupar la menor cantidad de memoria.

Saludos.
En línea

Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: