Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/05/2013, 09:07
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Ordenar lineas bloc de notas

Puedes poner los registros en memoria y hacer las operaciones con el.

De otra manera sera muy engorroso.
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct registro
  5. {
  6.     int id, dia, mes;
  7.     float hora;
  8.     char nombre[15];
  9. };
  10.  
  11. int cmp(const void *a, const void *b) {
  12.     if( ((struct registro*)a)->hora < ((struct registro*)b)->hora )
  13.         return -1;
  14.     else if(((struct registro*)a)->hora > ((struct registro*)b)->hora)
  15.         return 1;
  16.     else
  17.         return 0;
  18. }
  19.  
  20. int main()
  21. {
  22.     FILE *ps, *cf;
  23.     int dia, mes, counter, i;
  24.     struct registro registros[100];
  25.  
  26.  
  27.     ps = fopen("Diaconcitas.txt","a+");
  28.     if(ps == NULL) {
  29.         printf("No se puede abrir el archivo\n");
  30.         return 1;
  31.     }
  32.     cf = fopen("citasp.txt","r");
  33.     if(cf == NULL) {
  34.         fclose(ps);
  35.         printf("No se puede abrir el archivo\n");
  36.         return 1;
  37.     }
  38.  
  39.     printf("Introduce la fecha del dia que deseas ver el listado\n");
  40.     printf("Dia\n");
  41.     scanf("%d", &dia);
  42.     printf("Mes\n");
  43.     scanf("%d", &mes);
  44.    
  45.     counter = 0;
  46.     while(fscanf(cf,"%s con identificacion %d, tiene cita el dia %d-%d a las %f \n", registros[counter].nombre, &(registros[counter].id), &(registros[counter].dia), &(registros[counter].mes), &(registros[counter].hora)) != EOF && counter < 100)
  47.     {
  48.         counter++;
  49.     }
  50.  
  51.     qsort(registros, counter, sizeof(struct registro), cmp);
  52.     for(i = 0; i < counter; i++) {
  53.         if(dia == registros[i].dia && mes == registros[i].mes)
  54.             printf("%s con identificacion %d, tiene cita el dia %d-%d a las %.2f \n", registros[i].nombre, (registros[i].id), (registros[i].dia), (registros[i].mes), (registros[i].hora));
  55.     }
  56.  
  57.  
  58.     fclose(cf);
  59.     fclose(ps);
  60. }