Advertisement
Guest User

Ejercicio 7

a guest
May 23rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. ///////////// BLOQUE DECLARATIVO ////////////////////////
  6.  
  7. int esFechaValida(int, int, int);
  8. int CantDiasDelMes(int, int);
  9. int Bisiesto(int);
  10. int Cargar(char[30][7], int[], float[]);
  11. int IngresayValida(int);
  12. float IngresayValida2(float);
  13. void DeDolaraPesos(float[], float[], float, int);
  14. void MostrarVectores(int, int, int, char[], float[], int[], int);
  15. int SumaVector (float[], int);
  16.  
  17. //////////////// FUNCION PRINCIPAL /////////////////////
  18.  
  19. int main(){
  20.  
  21. int d, m, a, cant, VDia[30] = {0};
  22. float porcentaje, dolar, VPrecioDolar[30], VPrecioPesos[30], totalpesos = 0, totaldolar = 0;
  23. char VAuto[30][7];
  24.  
  25.  
  26. printf("------------------DATOS DEL DIA--------------------\n\n");
  27.  
  28. do{
  29.     printf("Ingresa la fecha del dia: ");   // Ingreso el dia mes y año
  30.     scanf("%d%d%d",&d,&m,&a);
  31. }while(!(esFechaValida(d,m,a)));    // Mientras la fecha no sea valida, volver a preguntar
  32.  
  33.  
  34. do{
  35.     printf("Ingresa la cotizacion del dolar hoy: ");    // Ingreso la cotizacion del dolar
  36.     scanf("%f",&dolar);
  37. }while(dolar <= 0);     // Mientras el dolar sea negativo, volver a preguntar
  38.  
  39. printf("\n\n------------------DATOS DEL ALQUILER--------------------\n\n");
  40.  
  41. cant = Cargar(VAuto, VDia, VPrecioDolar);   // Almaceno en 'cant' el total de datos cargados en los vectores
  42.  
  43. if(cant != 0) // Mientras que el total de datos no sea 0
  44. {
  45.  
  46.     porcentaje = (cant * 100) / 30; // Calculo el porcentaje
  47.  
  48.     printf("\n\n------------------RESULTADOS DE HOY--------------------\n\n");
  49.  
  50.     printf("\t\t EL PORCENTAJE DE VENTAS DEL DIA ES %.2f \n\n", porcentaje);
  51.  
  52.     printf("\t\t ALQUILERES DE AUTOS DEL DIA %d/%d/%d \n", d, m, a);
  53.  
  54.     printf("\t\t COTIZACION DEL DOLAR: $%.2f \n\n",dolar);
  55.  
  56.     printf("NRO. VEHICULO \t DIAS DE ALQUILER \t PRECIO EN PESOS \t FECHA DE DEVOLUCION DEL VEHICULO \n");
  57.  
  58.     MostrarVectores(d, m, a, VDia, VAuto, VPrecioPesos, cant);
  59.  
  60.     DeDolaraPesos(VPrecioDolar, VPrecioPesos, dolar, 30);
  61.  
  62.     totalpesos = SumaVector(VPrecioPesos, 30);  // Almaceno en 'totalpesos' la suma del vector VPrecioPesos
  63.  
  64.     totaldolar = SumaVector(VPrecioDolar, 30);  // Almaceno en 'totaldolar' la suma del vector VPrecioDolar
  65.  
  66.     printf("TOTAL RECAUDADO EN ALQUILERES (EN PESOS) \t %.2f \n", totalpesos);
  67.  
  68.     printf("TOTAL RECAUDADO EN ALQUILERES (EN DOLARES \t %.2f \n", totaldolar);
  69.  
  70. }
  71. else    // Si cant es igual a 0, no hacer nada e informar
  72. {
  73.  
  74.     printf("\n\n------------------RESULTADOS DE HOY--------------------\n\n");
  75.  
  76.     printf("\tNO SE CARGARON DATOS HOY\n");
  77.     printf("\tFINALIZANDO PROGRAMA");
  78.  
  79. }
  80. return 0;
  81.  
  82. }
  83.  
  84. /////////////////////// FUNCIONES /////////////////////////////7
  85.  
  86. int esFechaValida(int d, int m, int a)
  87. {
  88.     int n = 0; // Cargo n con 0
  89.  
  90.     if(a >= 1990) // Si el año es menor a 1990 no entra y sale con 0.
  91.     {
  92.         if(m >= 1 && m <= 12) // Si el mes no esta entre 1 y 12, no entra y sale con 0
  93.         {
  94.             if(d >= 1 && d <= CantDiasDelMes(m,a)) // Si el dia no esta entre 1 y la cantidad de dias de ese mes, no entra y sale con 0, sino se pone en 1
  95.             {
  96.                 n = 1;
  97.             }
  98.         }
  99.  
  100.     }
  101.  
  102. return n;
  103. }
  104.  
  105.  
  106. int CantDiasDelMes(int m, int a)
  107. {
  108.     int cdm;
  109.  
  110.     if(m == 4 || m == 6 || m == 9 || m == 11) // Si son los meses 4, 6, 9 y 11 tienen 30 dias
  111.     {
  112.         cdm = 30;
  113.     }
  114.     else
  115.     {
  116.         if(m == 2) // Si es el mes 2
  117.         {
  118.             cdm = 28 + Bisiesto(a); // Tiene 28 + 1 si es bisiesto o 28 + 0 si no lo es
  119.         }
  120.         else
  121.         {
  122.             cdm = 31; // 31 el resto de dias
  123.         }
  124.     }
  125.  
  126. return cdm;
  127. }
  128.  
  129.  
  130. int Bisiesto(int a)
  131. {
  132.  
  133. if(a%4 == 0 && a%100 != 0 || a%400 == 0) // si se cumple esto
  134.     return 1; // es bisiesto
  135. else
  136.     return 0; // no es bisiesto
  137. }
  138.  
  139.  
  140. int Cargar(char VAuto[30][7], int VDia[], float VPrecioDolar[])
  141. {
  142.     int i = 0; // Pongo i en 0
  143.     char findia[] = "FINDIA"; // Creo un string con la condicion de FIN
  144.  
  145.     printf("Ingresa la patente del auto de 6 digitos alfanumericos: "); // Ingreso y cargo la patente del auto
  146.     scanf("%s",VAuto[i]);
  147.     fflush(stdin);
  148.  
  149.     while(strcmp(VAuto[i],findia) != 0 && i < 30) // Mientras que la patente del auto sea distinta a "FINDIA" y la variable 'i' no sobrepase el tamaño del vector
  150.     {
  151.         VDia[i] = IngresayValida(0); // En la posicion i del vector 'VDia' guardo la entrada (int)
  152.  
  153.         VPrecioDolar[i] = IngresayValida2(0); // En la posicion i del vector 'VPrecioDolar' guardo la entrada (float)
  154.  
  155.         i++; // Incremento i en 1.
  156.  
  157.         printf("Ingresa la patente del auto de 6 digitos alfanumericos: ");
  158.         scanf("%s",VAuto[i]);
  159.         fflush(stdin);
  160.     }
  161.  
  162. return i;
  163. }
  164.  
  165.  
  166. void DeDolaraPesos(float VPrecioDolar[], float VPrecioPesos[], float dolar, int ce)
  167. {
  168.     int i;
  169.  
  170.     for(i=0 ; i<ce ; i++)
  171.     {
  172.         VPrecioPesos[i] = (VPrecioDolar[i] * dolar); // Recibo la cotizacion del dolar, lo multiplico por los dolares que tengo y lo guardo en VPrecioPesos
  173.     }
  174. }
  175.  
  176. void MostrarVectores(int d, int m, int a, char VAuto[], float VPrecioPesos[], int VDia[], int ce)
  177. {
  178.     int dia, mes, anio, i;
  179.  
  180.     for(i=0 ; i<ce ; i++)   // Voy de 0 a la cantidad de elementos ingresados
  181.     {
  182.         dia = d + VDia[i];  // Sumo al dia de la fecha, la cantidad de dias que ingreso el usuario
  183.  
  184.         if(dia > CantDiasDelMes(m,a))   // Si esa cantidad de dias es mayor a la cantida de dias del mes
  185.         {
  186.             do{
  187.                 dia = dia - CantDiasDelMes(m,a);    // Resto al dia, la cantidad de dias de ese mes
  188.                 mes = m+1;                          // Incremento al mes en 1
  189.               }while(dia <= CantDiasDelMes(m,a)); // Mientras que el dia siga siendo mayor a la Cantidad de dias del mes, volver a preguntar
  190.  
  191.             if(mes > 12)    // Si el mes es mayor a 12
  192.             {
  193.                 anio = a+1; // Incremento año en 1
  194.                 mes = 1;    // Pongo al mes en 1 (enero)
  195.             }
  196.         }
  197.  
  198.         printf("%s \t %d \t %.2f \t %d/%d/%d\n\n\n", VAuto[i], VDia[i], VPrecioPesos[i], dia, mes, anio);   // Imprimo los vectores en el valor 'i' y la fecha con el dia acumulado
  199.     }
  200. }
  201.  
  202.  
  203. int SumaVector(float Vector[], int ce)
  204. {
  205.     float total = 0;
  206.     int i;
  207.  
  208.     for(i=0 ; i<ce ; i++)
  209.     {
  210.         total += Vector[i]; // Sumo todos los elementos del vector
  211.     }
  212.  
  213. return total;
  214. }
  215.  
  216.  
  217. int IngresayValida(int lim1)// INT
  218. {
  219.     int dato;
  220.  
  221.     do{
  222.         printf("Ingresa la cantidad de dias de alquiler: ");
  223.         scanf("%d", &dato);
  224.     }   while(dato <= 0);   // Mientras el dato sea negativo, volver a preguntar sino devuelvo el dato
  225.  
  226. return dato;
  227. }
  228.  
  229.  
  230. float IngresayValida2(float lim1)// FLOAT
  231. {
  232.     float dato;
  233.  
  234.     do{
  235.         printf("Ingresa el precio diario del alquiler en dolares: ");
  236.         scanf("%f", &dato);
  237.     }   while(dato <= 0);   // Mientras el dato sea negativo, volver a preguntar sino devuelvo el dato
  238.  
  239. return dato;
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement