fork download
  1. //==============================================================================//
  2. // Programa de cotización del servicio de transporte de mercadería en C++ //
  3. // Autores: //
  4. // -Julio Rodrigo Huamán Guerrero (U202012908) //
  5. // -Quispe Pumayalli Angel Anthony (U20231A692) //
  6. // -Orizano Salvador Diego Elias (U20191E833) //
  7. // -Noriega Suárez, María Alejandra (U202321787) //
  8. //==============================================================================//
  9. #include <iostream>
  10. #include <cmath>
  11. #include <ctime>
  12. using namespace std;
  13.  
  14.  
  15. int CalcularCantidadVehiculos(int peso) {
  16. int cantidadVehiculos = 0;
  17. double pesoRestante=0.0;
  18. if (peso >= 0 && peso < 4) {
  19. cantidadVehiculos = 1;
  20. } else if (peso >= 4 && peso <= 5) {
  21. cantidadVehiculos = 1;
  22. } else if (peso >= 6 && peso <= 8) {
  23. cantidadVehiculos = 1;
  24. } else if (peso > 8) {
  25. cantidadVehiculos = peso / 8;
  26. pesoRestante = peso - (cantidadVehiculos * 8);
  27. if (peso % 8 != 0) {
  28. cantidadVehiculos++;
  29. }
  30. }
  31. return cantidadVehiculos;
  32. }
  33.  
  34. int main() {
  35. // Declaración de variables
  36. double distancia, costoAdicional, costoFinalVehiculo, costoTotal = 0.0;
  37. double pesoRestante=0.0, costoAuxiliares;
  38. string tipoCarga, tipo_vehiculo;
  39. char desea_auxiliares, agregar_vehiculo;
  40. int peso,auxiliares, cantidadVehiculos;
  41.  
  42. // Costo del servicio por el vehículo pequeño
  43. const double costo_vehiculo_pequeno = 100.0;
  44. // Costo del servicio por el vehículo mediano
  45. const double costo_vehiculo_mediano = 150.0;
  46. // Costo del servicio por el vehículo pesado
  47. const double costo_vehiculo_pesado = 200.0;
  48. // Cada vehículo siempre tendrá un chofer y un auxiliar y costo del servicio por estos es:
  49. const double chofer_y_auxiliar = 150.0;
  50.  
  51. // Iniciamos el bucle do-while
  52. do {
  53. // Iniciamos el costo final del vehículo actual en 0.
  54. costoFinalVehiculo = 0.0;
  55. costoAdicional = 0.0; // Aseguramos que costoAdicional se inicialice en cada iteración
  56.  
  57. // Datos de entrada
  58. cout << "Ingrese el peso de la carga en toneladas: ";
  59. cin >> peso;
  60.  
  61. cout << "Ingrese el tipo de carga (MATPEL, IQBF o REFRIGERADO): ";
  62. cin >> tipoCarga;
  63.  
  64. cout << "Ingrese la distancia del viaje en kilómetros: ";
  65. cin >> distancia;
  66.  
  67. cout << "¿Desea que el servicio tenga auxiliares? (s/n): ";
  68. cin >> desea_auxiliares;
  69.  
  70. if (desea_auxiliares == 's' || desea_auxiliares == 'S') {
  71. cout << "Ingrese la cantidad de auxiliares adicionales deseados: ";
  72. cin >> auxiliares;
  73. // Calcular costo adicional por auxiliares
  74. costoAuxiliares = auxiliares * 50.0;
  75. } else {
  76. auxiliares = 0;
  77. costoAuxiliares = 0.0;
  78. }
  79.  
  80. // Validar el tipo de vehículo y cantidad de vehículos necesarios según el peso
  81. // Vehículo pequeño (3 toneladas máximo)
  82. if (peso < 4) {
  83. tipo_vehiculo = "Pequeno";
  84. cantidadVehiculos = CalcularCantidadVehiculos (peso);
  85. costoFinalVehiculo = costo_vehiculo_pequeno + (distancia * 1.20) + peso * 1.1;
  86. cout << "\nTipo de vehículo: " << tipo_vehiculo << endl;
  87. cout << "Cantidad de vehículos: " << cantidadVehiculos << endl;
  88.  
  89. } else if (peso >= 4 && peso <= 5) { // Vehículo mediano (de 4 a 5 toneladas)
  90. tipo_vehiculo = "Mediano";
  91. cantidadVehiculos = CalcularCantidadVehiculos (peso);
  92. costoFinalVehiculo = costo_vehiculo_mediano + distancia * 1.50 + peso * 1.3;
  93. cout << "\nTipo de vehículo: " << tipo_vehiculo << endl;
  94. cout << "Cantidad de vehículos: " << cantidadVehiculos << endl;
  95.  
  96. } else if (peso >= 6 && peso <= 8) { // Vehículo pesado (de 6 a 8 toneladas)
  97. tipo_vehiculo = "Pesado";
  98. cantidadVehiculos =CalcularCantidadVehiculos (peso) ;
  99. costoFinalVehiculo = costo_vehiculo_pesado + distancia * 1.70 + peso * 1.5;
  100. cout << "\nTipo de vehículo: " << tipo_vehiculo << endl;
  101. cout << "Cantidad de vehículos: " << cantidadVehiculos << endl;
  102.  
  103. } else if (peso > 8) { // Si se necesita más de un vehículo
  104. tipo_vehiculo = "Pesado";
  105. cantidadVehiculos =CalcularCantidadVehiculos (peso);
  106. costoFinalVehiculo = costo_vehiculo_pesado + (cantidadVehiculos * (distancia * 1.70)) +
  107. (pesoRestante * 1.5) + peso * 1.5;
  108. cout << "\nTipo de vehículo: " << tipo_vehiculo << endl;
  109. cout << "Cantidad de vehículos: " << cantidadVehiculos << endl;
  110. }
  111.  
  112. // Calcular costo adicional según el tipo de carga
  113. if (tipoCarga == "MATPEL") {
  114. // Costo adicional del 10% del costo final si la carga es MATPEL
  115. costoAdicional = 0.10 * costoFinalVehiculo;
  116. } else if (tipoCarga == "IQBF") {
  117. // Costo adicional del 15% del costo final si la carga es IQBF
  118. costoAdicional = 0.15 * costoFinalVehiculo;
  119. } else if (tipoCarga == "REFRIGERADO") {
  120. // Costo adicional del 20% del costo final si la carga es REFRIGERADO
  121. costoAdicional = 0.20 * costoFinalVehiculo;
  122. }
  123.  
  124. // Calcular costo total del vehículo actual
  125. costoFinalVehiculo += costoAdicional + chofer_y_auxiliar + costoAuxiliares;
  126. // Sumar al costo total general
  127. costoTotal += costoFinalVehiculo;
  128.  
  129. // Preguntar si se desea agregar otro vehículo
  130. cout << "\n¿Desea agregar otro tipo de vehículo? (s/n): ";
  131. cin >> agregar_vehiculo;
  132.  
  133. } while (agregar_vehiculo == 's' || agregar_vehiculo == 'S');
  134.  
  135. // Mostrar el costo total del servicio
  136. cout << "\n--------------------------------------------------" << endl;
  137. cout << "El costo total del servicio es: " << costoTotal << " soles" << endl;
  138.  
  139. // Numero de compra (aleatorio)
  140. const int N = 1; // Cantidad de terminos a generar
  141. const int d = 6; // Numero de digitos de c/d termino
  142. const int TOT = 5000; // Capacidad maxima del vector
  143. int lista[TOT]; // Vector (arreglo unidimensional)
  144. int i; // Controla el indice (posicion) de un elem
  145. int vmax, vmin; // Valores maximo y minimo del rango
  146.  
  147. vmin = pow(10, (d-1));
  148. vmax = pow(10, d) - 1;
  149. i = 0 ;
  150.  
  151. while ( i < N ) {
  152. lista[i] = rand() % (vmax - vmin + 1) + vmin ;
  153. i = i + 1;
  154. }
  155. // Proceso Principal
  156. cout << "\nNUMERO DE COMPRA:" << endl;
  157. for ( i = 0 ; i < N ; i = i + 1){
  158.  
  159. if ( (i) % 5 == 0 ) {
  160. cout << endl;
  161. }
  162. cout << lista[i] << "\t";
  163. }
  164.  
  165. return 0;
  166. }
Success #stdin #stdout 0s 5268KB
stdin
Standard input is empty
stdout
Ingrese el peso de la carga en toneladas: Ingrese el tipo de carga (MATPEL, IQBF o REFRIGERADO): Ingrese la distancia del viaje en kilómetros: ¿Desea que el servicio tenga auxiliares? (s/n): 
Tipo de vehículo: Pesado
Cantidad de vehículos: 9088

¿Desea agregar otro tipo de vehículo? (s/n): 
--------------------------------------------------
El costo total del servicio es: 109404 soles

NUMERO DE COMPRA:

789383