Advertisement
xlujiax

Lab1_2016_2

Sep 6th, 2016
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.63 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6.  
  7. /*
  8.  * File:   main.cpp
  9.  * Author: Renzo Castillo Sanchez - 20101700
  10.  *
  11.  * Created on 2 de septiembre de 2016, 08:05 AM
  12.  */
  13. //UPPER
  14. #include <cstdlib>
  15. #include <cstdio>
  16.  
  17. using namespace std;
  18.  
  19. void encabezadoPrimario() {
  20.     printf("\n%-20s%-15s%-12s", "ESTACION", "CIUDAD", "DEPARTAMENTO");
  21.     for (int i = 0; i < 91; i++) printf("-");
  22.     printf("\n");
  23. }
  24.  
  25. void encabezadoSecundario() {
  26.     printf("\n%-20s%-10s%-15s%-16s%-12s", "Fecha", "cantidad", "Tiempo Total", "Total Llovido", "Promedio");
  27.     for (int i = 0; i < 91; i++) printf("-");
  28.     printf("\n");
  29. }
  30.  
  31. void imprimeRegistro(int dd, int mm, int aaaa, int horaI, int minI, int segI, int horaF, int minF, int segF){
  32.     printf("\t%02d/%02d/%04d", dd,mm,aaaa);
  33.    
  34.     printf("\n%-20d%-10s%-15s%-16s%-12s", "")  ;  
  35. }
  36.  
  37. void calcularDatosRegistros(int dd, int mm, int aaaa, int horaI, int minI, int segI, int horaF, int minF, int segF, int ddAux, int mmAux, int aaaaAux, int contFechaRep, int tiempoTotal) {
  38.     int tiempoI, tiempoF;
  39.     if ((dd == ddAux) && (mm == mmAux) && (aaaa == aaaaAux)) { //Son iguales acumula        
  40.         contFechaRep++;
  41.         horaI = horaI * 3600;
  42.         minI = minI * 60;
  43.         tiempoI = segI + minI + horaI;
  44.  
  45.         horaF = horaF * 3600;
  46.         minF = minF * 60;
  47.         tiempoF = segF + minF + horaF;
  48.         tiempoTotal += tiempoF - tiempoI;
  49.     } else { //Son diferentes imprime el primero
  50.  
  51.  
  52.     }
  53.  
  54.  
  55. }
  56.  
  57. int main(int argc, char** argv) {
  58.  
  59.     int temperatura;
  60.     int dd, mm, aaaa, ddAux, mmAux, aaaaAux;
  61.     int horaI, minI, segI,horaIaux, minIaux, segIaux;
  62.     int horaF, minF, segF,horaFaux, minFaux, segFaux;
  63.     int tamanoHoraI,tamanoHoraIaux;
  64.     int tamanoFecha,tamanoFechaAux;
  65.     int tamanoHoraF, tamanoHoraFaux;
  66.     int volumen;
  67.     char fin;
  68.     int final;
  69.     int contRegistros;
  70.     int contFechaRep;
  71.     int tiempoTotal;
  72.     for (int i = 0; i < 91; i++) printf("=");
  73.     printf("%s\n", "INFORME DE PRECIPITACIONES");
  74.     for (int i = 0; i < 91; i++) printf("=");
  75.  
  76.     while (1) {
  77.         char c;
  78.         encabezadoPrimario();
  79.         while (1) { //Datos de la estacio
  80.             scanf("%c", &c);
  81.             if (c == ',') {
  82.                 c = getchar();
  83.                 printf("%-12c", ' ');
  84.             }
  85.             if (c == ':') {
  86.                 printf("%c\n", '*');
  87.                 break;
  88.             }
  89.             putchar(c);
  90.         }
  91.         for (int i = 0; i < 91; i++) printf("-");
  92.         encabezadoSecundario();
  93.         //while (((c = getchar()) == ' ') || (c == '\t')); //Leera hasta no encontrar espacio
  94.         contRegistros = 0;
  95.  
  96.         scanf("%d/%d/%d", &dd, &mm, &aaaa); //Lectura Fecha Inicial
  97.         contRegistros++;
  98.         tiempoTotal = 0; //Inicializa el acumuludo
  99.         tamanoHoraI = scanf("%d:%d:%d", &horaI, &minI, &segI);
  100.         tamanoHoraF = scanf("%d:%d:%d", &horaF, &minF, &segF);
  101.         while (1) { //Sale del while cuando las fechas son diferentes            
  102.             final = scanf("%d%c", &volumen, &fin); //Lee el volumen y evalua si el siguiente es EOF
  103.             if (final == EOF) break;    //Si es fin de Linea sale del bucle
  104.             scanf("%d/%d/%d", &ddAux, &mmAux, &aaaaAux); //Lectura Fecha Secundaria    
  105.             tamanoHoraIaux = scanf("%d:%d:%d", &horaIaux, &minIaux, &segIaux);
  106.             tamanoHoraFaux = scanf("%d:%d:%d", &horaFaux, &minFaux, &segFaux);
  107.             if (tamanoFecha == 0)
  108.                 break;
  109.             else{
  110.                 contFechaRep = 0;
  111.                 calcularDatosRegistros(dd, mm, aaaa, horaI, minI, segI, horaF, minF, segF, ddAux, mmAux, aaaaAux, contFechaRep, tiempoTotal); //Compara fechas y acumulara registros y datos del problema si las fechas son iguales
  112.             }//printf("%d/%d/%d", dd, mm, aaaa);
  113.             if ((dd != ddAux) && (mm != mmAux) && (aaaa != aaaaAux)) { //Si son diferentes coloca f2 en f1 e imprime f1
  114.                 imprimeRegistro(dd,mm,aaaa,horaI, minI, segI, horaF, minF, segF,tamanoFecha);
  115.                 dd = ddAux;
  116.                 mm = mmAux;
  117.                 aaaa = aaaaAux;
  118.                
  119.             }
  120.         }
  121.         if (final == EOF) break;
  122.         //break;    
  123.     }
  124.     printf("Resumen:  \n");
  125.     printf("Fecha Inicial:        Fecha Final\n");
  126.     printf("Cantidad total de registros: \n");
  127.     printf("Cantidad dias registrados:   \n");
  128.     printf("Tiempo total de Lluvia:      \n");
  129.     printf("Total llovido en el periodo: \n");
  130.  
  131.     return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement