Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- /*
- * File: main.cpp
- * Author: Renzo Castillo Sanchez - 20101700
- *
- * Created on 2 de septiembre de 2016, 08:05 AM
- */
- //UPPER
- #include <cstdlib>
- #include <cstdio>
- using namespace std;
- void encabezadoPrimario() {
- printf("\n%-20s%-15s%-12s", "ESTACION", "CIUDAD", "DEPARTAMENTO");
- for (int i = 0; i < 91; i++) printf("-");
- printf("\n");
- }
- void encabezadoSecundario() {
- printf("\n%-20s%-10s%-15s%-16s%-12s", "Fecha", "cantidad", "Tiempo Total", "Total Llovido", "Promedio");
- for (int i = 0; i < 91; i++) printf("-");
- printf("\n");
- }
- void imprimeRegistro(int dd, int mm, int aaaa, int horaI, int minI, int segI, int horaF, int minF, int segF){
- printf("\t%02d/%02d/%04d", dd,mm,aaaa);
- printf("\n%-20d%-10s%-15s%-16s%-12s", "") ;
- }
- 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) {
- int tiempoI, tiempoF;
- if ((dd == ddAux) && (mm == mmAux) && (aaaa == aaaaAux)) { //Son iguales acumula
- contFechaRep++;
- horaI = horaI * 3600;
- minI = minI * 60;
- tiempoI = segI + minI + horaI;
- horaF = horaF * 3600;
- minF = minF * 60;
- tiempoF = segF + minF + horaF;
- tiempoTotal += tiempoF - tiempoI;
- } else { //Son diferentes imprime el primero
- }
- }
- int main(int argc, char** argv) {
- int temperatura;
- int dd, mm, aaaa, ddAux, mmAux, aaaaAux;
- int horaI, minI, segI,horaIaux, minIaux, segIaux;
- int horaF, minF, segF,horaFaux, minFaux, segFaux;
- int tamanoHoraI,tamanoHoraIaux;
- int tamanoFecha,tamanoFechaAux;
- int tamanoHoraF, tamanoHoraFaux;
- int volumen;
- char fin;
- int final;
- int contRegistros;
- int contFechaRep;
- int tiempoTotal;
- for (int i = 0; i < 91; i++) printf("=");
- printf("%s\n", "INFORME DE PRECIPITACIONES");
- for (int i = 0; i < 91; i++) printf("=");
- while (1) {
- char c;
- encabezadoPrimario();
- while (1) { //Datos de la estacio
- scanf("%c", &c);
- if (c == ',') {
- c = getchar();
- printf("%-12c", ' ');
- }
- if (c == ':') {
- printf("%c\n", '*');
- break;
- }
- putchar(c);
- }
- for (int i = 0; i < 91; i++) printf("-");
- encabezadoSecundario();
- //while (((c = getchar()) == ' ') || (c == '\t')); //Leera hasta no encontrar espacio
- contRegistros = 0;
- scanf("%d/%d/%d", &dd, &mm, &aaaa); //Lectura Fecha Inicial
- contRegistros++;
- tiempoTotal = 0; //Inicializa el acumuludo
- tamanoHoraI = scanf("%d:%d:%d", &horaI, &minI, &segI);
- tamanoHoraF = scanf("%d:%d:%d", &horaF, &minF, &segF);
- while (1) { //Sale del while cuando las fechas son diferentes
- final = scanf("%d%c", &volumen, &fin); //Lee el volumen y evalua si el siguiente es EOF
- if (final == EOF) break; //Si es fin de Linea sale del bucle
- scanf("%d/%d/%d", &ddAux, &mmAux, &aaaaAux); //Lectura Fecha Secundaria
- tamanoHoraIaux = scanf("%d:%d:%d", &horaIaux, &minIaux, &segIaux);
- tamanoHoraFaux = scanf("%d:%d:%d", &horaFaux, &minFaux, &segFaux);
- if (tamanoFecha == 0)
- break;
- else{
- contFechaRep = 0;
- 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
- }//printf("%d/%d/%d", dd, mm, aaaa);
- if ((dd != ddAux) && (mm != mmAux) && (aaaa != aaaaAux)) { //Si son diferentes coloca f2 en f1 e imprime f1
- imprimeRegistro(dd,mm,aaaa,horaI, minI, segI, horaF, minF, segF,tamanoFecha);
- dd = ddAux;
- mm = mmAux;
- aaaa = aaaaAux;
- }
- }
- if (final == EOF) break;
- //break;
- }
- printf("Resumen: \n");
- printf("Fecha Inicial: Fecha Final\n");
- printf("Cantidad total de registros: \n");
- printf("Cantidad dias registrados: \n");
- printf("Tiempo total de Lluvia: \n");
- printf("Total llovido en el periodo: \n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement