Título: Estructuras y archivos en c++ Publicado por: Luifs en 7 Junio 2013, 21:04 pm Alguien me podria ayudar con mi codigo
Citar #include <stdio.h> int main(){ printf("\nBienvenidos al lector \n"); FILE* miarchivo; char* nombrearchivo= "texto1.txt"; char lectura[80]; int i; miarchivo= fopen(nombrearchivo, "r"); for(i=0; i<10; i++) { if(miarchivo==NULL)return -1; fscanf(miarchivo," %[^\n]",&lectura); printf("Linea %d: %s \n",i+1,lectura); } fclose(miarchivo); } Solamente me muestra el contenido del archivo este es el contenido del archivo de texto as 10 08 as 20 15 as 30 35 as 70 94 as 90 75 as 84 74 as 75 12 as 08 15 as 25 98 as 12 15 Pero ahora necesito que me ordene del mayor al menor segun las cantidades que estan en medio y luego del mayor al menor segun las cantidades de la tercera columna.. Título: Re: Estructuras y archivos en c++ Publicado por: Puntoinfinito en 7 Junio 2013, 21:54 pm Pues no hagas el output directamente, simultáneamente puedes guardar todo en alguna matriz y con condicionales vas mostrando de mayor a menor. Crea por ejemplo una matriz para la columna del medio y para la última.
Código: int columna_Medio[10]; Entonces en cambio de hacer scanf guardar en variables. Código: lectura = columna_Medio[i] Para eso no podrás leer toda una linea de golpe, sino de espacio en espacio e ir almacenando. Después de esto, podrías crear una función para que quede más bonito :3 que se ocupe de hacer comparaciones del palo: Código: while (true) { Título: Re: Estructuras y archivos en c++ Publicado por: Luifs en 7 Junio 2013, 22:02 pm Y no puedes asignar cada campo a una estructura?
Título: Re: Estructuras y archivos en c++ Publicado por: Puntoinfinito en 7 Junio 2013, 22:46 pm No se a que te refieres exactamente, si te refieres a poner cada uno de los cadena de números, sí, podrías hacerlo. Puedes hacer otra división de matrices dentro de otras y tenerlo mejor ordenado.
Código: int asdf[10][3]; Y vas poniendo del asdf[0] (primera linea) el segundo valor ([1]) debe compararse con tal: Código: if (asdf[0][1] == "aksdjsakld") etc { Saludooos Título: Re: Estructuras y archivos en c++ Publicado por: Luifs en 8 Junio 2013, 00:00 am Disculpa como podria hacer que me ordene del mayor al menor tomando en cuenta la columna del centro
Citar #include <stdio.h> struct { char nombre[35]; int venta; int importe; } productos; int main(){ printf("\nBienvenidos al lector \n"); FILE* miarchivo; char* nombrearchivo= "texto1.txt"; int i; miarchivo= fopen(nombrearchivo, "r"); for(i=0; i<10; i++) { fscanf(miarchivo,"%s",&productos.nombre); printf("Linea %d: %s ",i+1,productos.nombre); fscanf(miarchivo,"%d",&productos.venta); printf(" %d ",productos.venta); fscanf(miarchivo,"%d",&productos.importe); printf(" %d \n",productos.importe); } (http://sphotos-b.ak.fbcdn.net/hphotos-ak-prn2/954857_541571919223042_106937381_n.jpg) Título: Re: Estructuras y archivos en c++ Publicado por: rir3760 en 8 Junio 2013, 02:27 am Los pasos en lo general son:
1) Declaras un array de estructuras para almacenar ahí cada uno de los registros. 2) Lees cada registro, lo políticamente correcto es utilizar fgets para leer una linea de texto y a continuación sscanf para extraer los tres campos pero, por sencillez, puedes empezar con fscanf. 3) Una vez tienes todos los registros en memoria los ordenas manualmente mediante una función propia o utilizando la función qsort (prototipo en <stdlib.h>). Sin importar el caso te conviene crear una función que compare dos registros y te diga su relación (si el primero es menor, igual o mayor que el segundo). Empieza a desarrollarlo tu solo y te ayudamos en las partes donde tengas dificultades. Un saludo |