Guest User

Untitled

a guest
Oct 23rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include "Car.h"
  5. #include "Plane.h"
  6. #include "Rocket.h"
  7. #include "Vehicle.h"
  8. using namespace std;
  9.  
  10. void setEngine(Engine &engine, string engineManufacturer, string engineType,
  11. double power, int rpm) {
  12. engine.engineManufacturer = engineManufacturer;
  13. engine.engineType = engineType;
  14. engine.power = power;
  15. engine.rpm = rpm;
  16. }
  17.  
  18. void readCars(Car *cars, ifstream &inFile, int numOfCars) {
  19. for (int i=0; i < numOfCars; i++) {
  20. string manufacturer;
  21. inFile >> manufacturer;
  22. string model;
  23. inFile >> model;
  24. int numOfWheels;
  25. inFile >> numOfWheels;
  26. //
  27. string engineType;
  28. inFile >> engineType;
  29. string engineManufacturer;
  30. inFile >> engineManufacturer;
  31. double power;
  32. inFile >> power;
  33. int rpm;
  34. inFile >> rpm;
  35. setEngine(cars->getEngine(), engineType, engineManufacturer, power, rpm);
  36. //
  37. double topSpeed;
  38. inFile >> topSpeed;
  39. string color;
  40. inFile >> color;
  41. int numOfDoors;
  42. inFile >> numOfDoors;
  43. double mileage;
  44. inFile >> mileage;
  45. int maxPassengers;
  46. inFile >> maxPassengers;
  47. cars->setManufacturer(manufacturer);
  48. cars->setModel(model);
  49. cars->setNumOfWheels(numOfWheels);
  50. cars->setTopSpeed(topSpeed);
  51. cars->setColor(color);
  52. cars->setNumOfDoors(numOfDoors);
  53. cars->setMileage(mileage);
  54. cars->setMaxPassengers(maxPassengers);
  55. }
  56. }
  57. void readRockets(Rocket *rockets, ifstream &inFile, int numOfRockets) {
  58. for (int i=0; i < numOfRockets; i++){
  59. int numOfEngines;
  60. inFile >> numOfEngines;
  61. //
  62. string engineType;
  63. inFile >> engineType;
  64. string engineManufacturer;
  65. inFile >> engineManufacturer;
  66. double power;
  67. inFile >> power;
  68. int rpm;
  69. inFile >> rpm;
  70. setEngine(rockets->getEngine(), engineType, engineManufacturer, power, rpm);
  71. //
  72. double topSpeed;
  73. inFile >> topSpeed;
  74. int numOfWheels;
  75. inFile >> numOfWheels;
  76. bool isSelfLanding;
  77. inFile >> isSelfLanding;
  78. double cargoLimit;
  79. inFile >> cargoLimit;
  80. rockets->setNumOfEngines(numOfEngines);
  81. rockets->setTopSpeed(topSpeed);
  82. rockets->setNumOfWheels(numOfWheels);
  83. rockets->setIsSelfLanding(isSelfLanding);
  84. rockets->setCargoLimit(cargoLimit);
  85. }
  86. }
  87. void readPlanes(Plane *planes, ifstream &inFile, int numOfPlanes) {
  88. for (int i=0; i < numOfPlanes; i++) {
  89. string planeType;
  90. inFile >> planeType;
  91. int numOfEngines;
  92. inFile >> numOfEngines;
  93. //
  94. string engineType;
  95. inFile >> engineType;
  96. string engineManufacturer;
  97. inFile >> engineManufacturer;
  98. double power;
  99. inFile >> power;
  100. int rpm;
  101. inFile >> rpm;
  102. setEngine(planes->getEngine(), engineType, engineManufacturer, power, rpm);
  103. //
  104. double topSpeed;
  105. inFile >> topSpeed;
  106. int numOfWheels;
  107. inFile >> numOfWheels;
  108. double wingspan;
  109. inFile >> wingspan;
  110. string businessType;
  111. inFile >> businessType;
  112. int maxOccupancy;
  113. inFile >> maxOccupancy;
  114. planes->setPlaneType(planeType);
  115. planes->setNumOfEngines(numOfEngines);
  116. planes->setNumOfWheels(numOfWheels);
  117. planes->setTopSpeed(topSpeed);
  118. planes->setWingspan(wingspan);
  119. planes->setBusinessType(businessType);
  120. planes->setMaxOccupancy(maxOccupancy);
  121. }
  122. }
  123.  
  124. void printVehicles(Vehicle **vehicles, Car* cars, Plane* planes, Rocket* rockets, int numOfTypes[3]) {
  125. for (int i = 0; i < 3; i++) {
  126. for (int j = 0; j < numOfTypes[i]; j++) {
  127. vehicles[i][j].print();
  128. }
  129. }
  130. }
  131.  
  132. void deleteVehicles(Vehicle **vehicles, Car *cars, Plane *planes, Rocket *rockets) {
  133.  
  134. }
  135.  
  136. int main(int argc, char* argv[]) {
  137. ifstream inFile;
  138. string fileName = argv[1];
  139. int numOfCars = atoi(argv[2]);
  140. int numOfPlanes = atoi(argv[3]);
  141. int numOfRockets = atoi(argv[4]);
  142. int numOfTypes[] = {numOfCars, numOfPlanes, numOfRockets};
  143. inFile.open(fileName);
  144. if (inFile.fail()) {
  145. cout << "Error! File does not exist." << endl;
  146. return 1;
  147. }
  148. // Create 3 objects
  149. Car *cars = new Car[numOfCars];
  150. Plane *planes = new Plane[numOfPlanes];
  151. Rocket *rockets = new Rocket[numOfRockets];
  152. // Call function(s) to read the input file
  153. readCars(cars, inFile, numOfCars);
  154. readPlanes(planes, inFile, numOfPlanes);
  155. readRockets(rockets, inFile, numOfRockets);
  156. inFile.close();
  157. // Create double pointer vehicle to store all vehicle types
  158. Vehicle **vehicles = new Vehicle *[3];
  159. // Print function will be called from child class (not Base Class)
  160. printVehicles(vehicles, cars, planes, rockets, numOfTypes);
  161. // Clean up new memory allocation after using
  162. deleteVehicles(vehicles, cars, planes, rockets);
  163. return 0;
  164. }
Add Comment
Please, Sign In to add comment