HomoCivicus

6th task

Sep 10th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. // getting to know how many triangles we have
  6. int inputAmountOfTriangles();
  7. // creating an array of double given size
  8. vector <vector <int>> createArrayOfCoordinates(int trianglesAmount);
  9. // getting a scale coefficient
  10. int inputScaleCoef();
  11. // filling the first part of the array with coordinates of points
  12. vector <vector <int>> fillArrayOfCoordinates(vector <vector <int>> triangles, int count = 0);
  13. // the inner "loop" for coordinates' input
  14. vector <vector <int>> inputTriangleCoordinates(vector <vector <int>> triangles,
  15.     int currentTriangle, int count = 0);
  16. // the outer "loop" for the scale coef's applying
  17. vector <vector <int>> applyScaleCoef(int scaleCoef, vector <vector <int>> triangles,
  18.     int count = 0);
  19. // the inner "loop" for the scale coef's applying
  20. vector <vector <int>> scaleCoordinates(vector <vector <int>> triangles, int scaleCoef,
  21.     int currentTriangle, int count = 0);
  22. // filling the second part of the array with coordinates of vectors
  23. vector <vector <int>> createArrayOfVectors(vector <vector <int>> triangles, int count = 0);
  24. // printing vectors' coordinates
  25. void printVectors(vector <vector <int>> triangles, int count = 0);
  26. // the printing itself
  27. void printVectorCoordinates(vector <vector <int>> triangles, int currentTriangle, int count = 0);
  28.  
  29. int main() {
  30.     freopen("input.txt", "r", stdin);
  31.     freopen("output.txt", "w", stdout);
  32.  
  33.     printVectors(
  34.         createArrayOfVectors(
  35.             applyScaleCoef(
  36.                 inputScaleCoef(),
  37.                 fillArrayOfCoordinates(
  38.                     createArrayOfCoordinates(
  39.                         inputAmountOfTriangles()
  40.                     )
  41.                 )
  42.             )
  43.         )
  44.     );
  45.  
  46.     return 0;
  47. }
  48.  
  49. int inputAmountOfTriangles() {
  50.     int trianglesAmount;
  51.     cin >> trianglesAmount;
  52.  
  53.     return trianglesAmount;
  54. }
  55.  
  56. vector <vector <int>> createArrayOfCoordinates(int trianglesAmount) {
  57.     const int coordinatesAmount = 6;
  58.     vector <vector <int>> triangles(trianglesAmount * 2, vector <int>(coordinatesAmount));
  59.  
  60.     return triangles;
  61. }
  62.  
  63. int inputScaleCoef() {
  64.     int coef;
  65.     cin >> coef;
  66.  
  67.     return coef;
  68. }
  69.  
  70. vector <vector <int>> fillArrayOfCoordinates(vector <vector <int>> triangles, int count) {
  71.     if (count < triangles.size() / 2) {
  72.         return fillArrayOfCoordinates(inputTriangleCoordinates(triangles, count), count + 1);
  73.     }
  74.     else {
  75.         return triangles;
  76.     }
  77. }
  78.  
  79. vector <vector <int>> inputTriangleCoordinates(vector <vector <int>> triangles,
  80.     int currentTriangle, int count) {
  81.  
  82.     if (count < triangles[currentTriangle].size()) {
  83.         cin >> triangles[currentTriangle][count];
  84.         return inputTriangleCoordinates(triangles, currentTriangle, ++count);
  85.     }
  86.     else {
  87.         return triangles;
  88.     }
  89. }
  90.  
  91. vector <vector <int>> applyScaleCoef(int scaleCoef, vector <vector <int>> triangles,
  92.     int count) {
  93.  
  94.     if (count < triangles.size() / 2) {
  95.         return applyScaleCoef(scaleCoef, scaleCoordinates(triangles, scaleCoef, count), count + 1);
  96.     }
  97.     else {
  98.         return triangles;
  99.     }
  100. }
  101.  
  102. vector <vector <int>> scaleCoordinates(vector <vector <int>> triangles, int scaleCoef,
  103.     int currentTriangle, int count) {
  104.  
  105.     if (count < triangles[currentTriangle].size()) {
  106.         triangles[currentTriangle][count] *= scaleCoef;
  107.         return scaleCoordinates(triangles, scaleCoef, currentTriangle, ++count);
  108.     }
  109.     else {
  110.         return triangles;
  111.     }
  112. }
  113.  
  114. vector <vector <int>> createArrayOfVectors(vector <vector <int>> triangles, int count) {
  115.     if (count < triangles.size() / 2) {
  116.         triangles[triangles.size() / 2 + count][0] = triangles[count][2] - triangles[count][0];
  117.         triangles[triangles.size() / 2 + count][1] = triangles[count][3] - triangles[count][1];
  118.         triangles[triangles.size() / 2 + count][2] = triangles[count][4] - triangles[count][2];
  119.         triangles[triangles.size() / 2 + count][3] = triangles[count][5] - triangles[count][3];
  120.         triangles[triangles.size() / 2 + count][4] = triangles[count][0] - triangles[count][4];
  121.         triangles[triangles.size() / 2 + count][5] = triangles[count][1] - triangles[count][5];
  122.  
  123.         return createArrayOfVectors(triangles, ++count);
  124.     }
  125.     else {
  126.         return triangles;
  127.     }
  128. }
  129.  
  130. void printVectors(vector <vector <int>> triangles, int count) {
  131.     if (count < triangles.size() / 2) {
  132.         printVectorCoordinates(triangles, triangles.size() / 2 + count);
  133.         return printVectors(triangles, ++count);
  134.     }
  135. }
  136.  
  137. void printVectorCoordinates(vector <vector <int>> triangles, int currentTriangle, int count) {
  138.     if (count < triangles[currentTriangle].size()) {
  139.         cout << triangles[currentTriangle][count] << " ";
  140.         return printVectorCoordinates(triangles, currentTriangle, ++count);
  141.     }
  142.     else {
  143.         cout << "\n";
  144.     }
  145. }
Add Comment
Please, Sign In to add comment