ruler.cpp 899 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // ruler.cpp -- using recursion to subdivide a ruler
  2. #include <iostream>
  3. const int Len = 66;
  4. const int Divs = 6;
  5. void subdivide(char ar[], int low, int high, int level);
  6. int main()
  7. {
  8. char ruler[Len];
  9. int i;
  10. for (i = 1; i < Len - 2; i++)
  11. ruler[i] = ' ';
  12. ruler[Len - 1] = '\0';
  13. int max = Len - 2;
  14. int min = 0;
  15. ruler[min] = ruler[max] = '|';
  16. std::cout << ruler << std::endl;
  17. for (i = 1; i <= Divs; i++)
  18. {
  19. subdivide(ruler,min,max, i);
  20. std::cout << ruler << std::endl;
  21. for (int j = 1; j < Len - 2; j++)
  22. ruler[j] = ' '; // reset to blank ruler
  23. }
  24. // std::cin.get();
  25. return 0;
  26. }
  27. void subdivide(char ar[], int low, int high, int level)
  28. {
  29. if (level == 0)
  30. return;
  31. int mid = (high + low) / 2;
  32. ar[mid] = '|';
  33. subdivide(ar, low, mid, level - 1);
  34. subdivide(ar, mid, high, level - 1);
  35. }