Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- ///////////// BLOQUE DECLARATIVO ////////////////////////
- int esFechaValida(int, int, int);
- int CantDiasDelMes(int, int);
- int Bisiesto(int);
- int Cargar(char[30][7], int[], float[]);
- int IngresayValida(int);
- float IngresayValida2(float);
- void DeDolaraPesos(float[], float[], float, int);
- void MostrarVectores(int, int, int, char[], float[], int[], int);
- int SumaVector (float[], int);
- //////////////// FUNCION PRINCIPAL /////////////////////
- int main(){
- int d, m, a, cant, VDia[30] = {0};
- float porcentaje, dolar, VPrecioDolar[30], VPrecioPesos[30], totalpesos = 0, totaldolar = 0;
- char VAuto[30][7];
- printf("------------------DATOS DEL DIA--------------------\n\n");
- do{
- printf("Ingresa la fecha del dia: "); // Ingreso el dia mes y año
- scanf("%d%d%d",&d,&m,&a);
- }while(!(esFechaValida(d,m,a))); // Mientras la fecha no sea valida, volver a preguntar
- do{
- printf("Ingresa la cotizacion del dolar hoy: "); // Ingreso la cotizacion del dolar
- scanf("%f",&dolar);
- }while(dolar <= 0); // Mientras el dolar sea negativo, volver a preguntar
- printf("\n\n------------------DATOS DEL ALQUILER--------------------\n\n");
- cant = Cargar(VAuto, VDia, VPrecioDolar); // Almaceno en 'cant' el total de datos cargados en los vectores
- if(cant != 0) // Mientras que el total de datos no sea 0
- {
- porcentaje = (cant * 100) / 30; // Calculo el porcentaje
- printf("\n\n------------------RESULTADOS DE HOY--------------------\n\n");
- printf("\t\t EL PORCENTAJE DE VENTAS DEL DIA ES %.2f \n\n", porcentaje);
- printf("\t\t ALQUILERES DE AUTOS DEL DIA %d/%d/%d \n", d, m, a);
- printf("\t\t COTIZACION DEL DOLAR: $%.2f \n\n",dolar);
- printf("NRO. VEHICULO \t DIAS DE ALQUILER \t PRECIO EN PESOS \t FECHA DE DEVOLUCION DEL VEHICULO \n");
- MostrarVectores(d, m, a, VDia, VAuto, VPrecioPesos, cant);
- DeDolaraPesos(VPrecioDolar, VPrecioPesos, dolar, 30);
- totalpesos = SumaVector(VPrecioPesos, 30); // Almaceno en 'totalpesos' la suma del vector VPrecioPesos
- totaldolar = SumaVector(VPrecioDolar, 30); // Almaceno en 'totaldolar' la suma del vector VPrecioDolar
- printf("TOTAL RECAUDADO EN ALQUILERES (EN PESOS) \t %.2f \n", totalpesos);
- printf("TOTAL RECAUDADO EN ALQUILERES (EN DOLARES \t %.2f \n", totaldolar);
- }
- else // Si cant es igual a 0, no hacer nada e informar
- {
- printf("\n\n------------------RESULTADOS DE HOY--------------------\n\n");
- printf("\tNO SE CARGARON DATOS HOY\n");
- printf("\tFINALIZANDO PROGRAMA");
- }
- return 0;
- }
- /////////////////////// FUNCIONES /////////////////////////////7
- int esFechaValida(int d, int m, int a)
- {
- int n = 0; // Cargo n con 0
- if(a >= 1990) // Si el año es menor a 1990 no entra y sale con 0.
- {
- if(m >= 1 && m <= 12) // Si el mes no esta entre 1 y 12, no entra y sale con 0
- {
- 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
- {
- n = 1;
- }
- }
- }
- return n;
- }
- int CantDiasDelMes(int m, int a)
- {
- int cdm;
- if(m == 4 || m == 6 || m == 9 || m == 11) // Si son los meses 4, 6, 9 y 11 tienen 30 dias
- {
- cdm = 30;
- }
- else
- {
- if(m == 2) // Si es el mes 2
- {
- cdm = 28 + Bisiesto(a); // Tiene 28 + 1 si es bisiesto o 28 + 0 si no lo es
- }
- else
- {
- cdm = 31; // 31 el resto de dias
- }
- }
- return cdm;
- }
- int Bisiesto(int a)
- {
- if(a%4 == 0 && a%100 != 0 || a%400 == 0) // si se cumple esto
- return 1; // es bisiesto
- else
- return 0; // no es bisiesto
- }
- int Cargar(char VAuto[30][7], int VDia[], float VPrecioDolar[])
- {
- int i = 0; // Pongo i en 0
- char findia[] = "FINDIA"; // Creo un string con la condicion de FIN
- printf("Ingresa la patente del auto de 6 digitos alfanumericos: "); // Ingreso y cargo la patente del auto
- scanf("%s",VAuto[i]);
- fflush(stdin);
- 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
- {
- VDia[i] = IngresayValida(0); // En la posicion i del vector 'VDia' guardo la entrada (int)
- VPrecioDolar[i] = IngresayValida2(0); // En la posicion i del vector 'VPrecioDolar' guardo la entrada (float)
- i++; // Incremento i en 1.
- printf("Ingresa la patente del auto de 6 digitos alfanumericos: ");
- scanf("%s",VAuto[i]);
- fflush(stdin);
- }
- return i;
- }
- void DeDolaraPesos(float VPrecioDolar[], float VPrecioPesos[], float dolar, int ce)
- {
- int i;
- for(i=0 ; i<ce ; i++)
- {
- VPrecioPesos[i] = (VPrecioDolar[i] * dolar); // Recibo la cotizacion del dolar, lo multiplico por los dolares que tengo y lo guardo en VPrecioPesos
- }
- }
- void MostrarVectores(int d, int m, int a, char VAuto[], float VPrecioPesos[], int VDia[], int ce)
- {
- int dia, mes, anio, i;
- for(i=0 ; i<ce ; i++) // Voy de 0 a la cantidad de elementos ingresados
- {
- dia = d + VDia[i]; // Sumo al dia de la fecha, la cantidad de dias que ingreso el usuario
- if(dia > CantDiasDelMes(m,a)) // Si esa cantidad de dias es mayor a la cantida de dias del mes
- {
- do{
- dia = dia - CantDiasDelMes(m,a); // Resto al dia, la cantidad de dias de ese mes
- mes = m+1; // Incremento al mes en 1
- }while(dia <= CantDiasDelMes(m,a)); // Mientras que el dia siga siendo mayor a la Cantidad de dias del mes, volver a preguntar
- if(mes > 12) // Si el mes es mayor a 12
- {
- anio = a+1; // Incremento año en 1
- mes = 1; // Pongo al mes en 1 (enero)
- }
- }
- 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
- }
- }
- int SumaVector(float Vector[], int ce)
- {
- float total = 0;
- int i;
- for(i=0 ; i<ce ; i++)
- {
- total += Vector[i]; // Sumo todos los elementos del vector
- }
- return total;
- }
- int IngresayValida(int lim1)// INT
- {
- int dato;
- do{
- printf("Ingresa la cantidad de dias de alquiler: ");
- scanf("%d", &dato);
- } while(dato <= 0); // Mientras el dato sea negativo, volver a preguntar sino devuelvo el dato
- return dato;
- }
- float IngresayValida2(float lim1)// FLOAT
- {
- float dato;
- do{
- printf("Ingresa el precio diario del alquiler en dolares: ");
- scanf("%f", &dato);
- } while(dato <= 0); // Mientras el dato sea negativo, volver a preguntar sino devuelvo el dato
- return dato;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement