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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda C - Archivos - Ordenamiento
« en: 11 Febrero 2014, 14:39 pm »

Buen dia a todos!
Estoy aprendiendo a programar en C y llegue a la parte de Archivos. Busque muchisimos tutoriales en google y en youtube pero no termino de entender como empezar a resolver los ejercicios. Supongo que dps de ayudarme a dar los primeros pasos lo voy a poder terminar solo..

El modelo de ejercicio que yo quiero hacer es:
En un archivo yo tengo millones de nombres de personas. Necesito guardar los 100 primeros nombres ordenados alfabeticamente en un vector.. el nombre del archivo llega a la funcion como parametro


Habia pensado guardar los primeros 100 de esos millones que me pasan y dps, si encuentra uno anterior, que saque el que estaba y ponga ese, pero no me los terminaria dando alfabeticamente y cre oque quedaria un quilombo... estoy bastante complicado porque no se como arrancar, si me pueden dar una mano se los agradezco muchisimo!

Gracias!
Juan


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda C - Archivos - Ordenamiento
« Respuesta #1 en: 12 Febrero 2014, 02:44 am »

Yo guardaría todos los nombres, los ordeno y cojo los 100 primeros.

¿C o C++? En C++ eso se hace rápido con con una estructura map:
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <map>
  4.  
  5. using namespace std;
  6.  
  7. int main
  8. {
  9.    map<string,bool> Nombres;
  10.    ifstream archivo("Nombre.txt");
  11.    string aux;
  12.  
  13.    if (!archivo) throw "Archivo no encontrado...";
  14.  
  15.    while (archivo.good())
  16.    {
  17.         getline(archivo,aux);
  18.         Nombres[aux] = true;
  19.    }
  20.  
  21.    string Nombres[100];
  22.    int i = 0;
  23.  
  24.    for (map<string,bool>::iterator it = Nombres.begin(); it != Nombres.end(); it++)
  25.    {
  26.         cout<<"Guardando: "<<it->first<<endl;
  27.         Nombres[i++] = it->first;
  28.    }
  29.    return 0;
  30. }


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
juanjuanjuanjuan

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda C - Archivos - Ordenamiento
« Respuesta #2 en: 12 Febrero 2014, 02:56 am »

Gracias por la respuesta!

El lenguaje es C

En el ejercicio me dicen que solamente se puede usar 1 vector, asi que no puedo ordenar los millones de nombres e imprimir los 100 primeros (yo tmb habia pensado eso jajaj)

Creo que la idea es guardar los 100 primeros en orden alfabetico y despues ir "actualizando" esos 100 primeros a medida que se recorre el archivo donde estan los otros millones de nombres, se entiende?

O sea, si fuera con numeros, guarda primero 0 3 y 9, dps encuentra un 8 entoncs borra el 9 y pone el 8, dps encuentra un 1 y corre el 3 al lugar del 8 y pone el 1 en lugar del 3 y asi...

Graciassssss!
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda C - Archivos - Ordenamiento
« Respuesta #3 en: 12 Febrero 2014, 03:40 am »

Bueno en C se complica un poco más el asunto al no poder usar contenedores STL. Pero tampoco mucho más.

El algoritmo ya lo tienes tú hecho realmente:

1º Leer los primeros 100 nombres.
2º Lo ordenas alfabeticamente.
3º ¿No quedan más nombres por leer? Terminado.
4º Lee el siguiente nombre.
5º ¿Va después del último nombre?. Si es así volvemos al paso 3.
6º Coges la posición donde debería ir, sobreescribes el nombre que estaba antes. Vuelves al paso 3.

El paso 6º puede ser un poco más complejo de ver, lo pongo con más detalle:

1º ¿Va antes del primer nombre? Devolvemos esa posicion y ya hemos terminado.
2º Recorremos el array desde 1 hasta 100.
3º ¿Va antes del nombre actual? Terminamos el bucle y devolvemos la posición actual.
4º En caso contrario volvemos al paso 2.


Todo esto puede sonar un poco complicado así leído, por eso te invito a que intentes ir escribiendo código ya. No te lo pienses mucho.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
juanjuanjuanjuan

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda C - Archivos - Ordenamiento
« Respuesta #4 en: 12 Febrero 2014, 04:14 am »

Bueno en C se complica un poco más el asunto al no poder usar contenedores STL. Pero tampoco mucho más.

El algoritmo ya lo tienes tú hecho realmente:

1º Leer los primeros 100 nombres.
2º Lo ordenas alfabeticamente.
3º ¿No quedan más nombres por leer? Terminado.
4º Lee el siguiente nombre.
5º ¿Va después del último nombre?. Si es así volvemos al paso 3.
6º Coges la posición donde debería ir, sobreescribes el nombre que estaba antes. Vuelves al paso 3.

El paso 6º puede ser un poco más complejo de ver, lo pongo con más detalle:

1º ¿Va antes del primer nombre? Devolvemos esa posicion y ya hemos terminado.
2º Recorremos el array desde 1 hasta 100.
3º ¿Va antes del nombre actual? Terminamos el bucle y devolvemos la posición actual.
4º En caso contrario volvemos al paso 2.


Todo esto puede sonar un poco complicado así leído, por eso te invito a que intentes ir escribiendo código ya. No te lo pienses mucho.

Eso es exactamente lo que pense! Me alegra saber que por ahi voy bien jaja. El problema es que voy a necesitar usar la parte de ficheros (los nombres me los dan en un archivo y los tengo que sacar de ahi) y tambien voy a necesitar MUCHO de punteros (es un tema que tengo un poco flojo)

Por eso les pido ayuda.. hace 1 semana que estoy tratando de resolverlo y a lo maximo que llegue es a esto que me escribiste recien..

Si alguno me puede dar una mano con el codigo, se lo super agradezco!




Edito: para comparar los nombres y ordenarlos, tendria que usar la funcion "strcmp"


« Última modificación: 13 Febrero 2014, 00:53 am por juanjuanjuanjuan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Ordenamiento en Java
Java
ErnestS3 1 3,866 Último mensaje 25 Noviembre 2010, 01:51 am
por ErnestS3
AYUDA metodo de ordenamiento selccion
Programación C/C++
lecxe 2 2,446 Último mensaje 18 Diciembre 2011, 21:26 pm
por eltongabinghiman
Ayuda con Programa en c/c++ para Ordenamiento.
Programación C/C++
BKsiragon 1 2,240 Último mensaje 15 Enero 2013, 01:08 am
por durasno
Ayuda con ordenamiento de vector
.NET (C#, VB.NET, ASP)
josezamp 2 2,067 Último mensaje 31 Octubre 2014, 12:05 pm
por Senior++
Ayuda con ordenamiento de nombres y numeros
Java
Tada 3 1,948 Último mensaje 2 Abril 2016, 23:44 pm
por LaiaxanIV
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines