fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. // Funkcja generująca tekstową reprezentację zbioru Cantora
  9. void rysujCantora(int x, int y, int dlugosc, vector<string>& tablica) {
  10. if (dlugosc < 1) return;
  11.  
  12. // Wypełniamy aktualny odcinek znakami '#' w odpowiednim rzędzie (y)
  13. for (int i = x; i < x + dlugosc; i++) {
  14. tablica[y][i] = '#';
  15. }
  16.  
  17. // Jeśli możemy zejść głębiej, dzielimy odcinek na 3 części
  18. // i wywołujemy funkcję dla lewej i prawej strony (środek zostaje pusty)
  19. if (y + 1 < tablica.size()) {
  20. int nowaDlugosc = dlugosc / 3;
  21. rysujCantora(x, y + 1, nowaDlugosc, tablica); // Lewa strona
  22. rysujCantora(x + 2 * nowaDlugosc, y + 1, nowaDlugosc, tablica); // Prawa strona
  23. }
  24. }
  25.  
  26. int main() {
  27. int n;
  28. cout << "Podaj rzad zbioru Cantora (n) do narysowania: ";
  29. cin >> n;
  30.  
  31. if (n < 0) return 1;
  32.  
  33. // Obliczenia matematyczne
  34. long long liczba_odcinkow = pow(2, n);
  35. long long mianownik = pow(3, n);
  36.  
  37. // Przygotowanie tablicy do rysowania (szerokość musi być potęgą 3)
  38. int szerokosc = pow(3, n);
  39. vector<string> wizualizacja(n + 1, string(szerokosc, ' '));
  40.  
  41. rysujCantora(0, 0, szerokosc, wizualizacja);
  42.  
  43. // Wyświetlanie wyników
  44. cout << "\nLiczba odcinkow: " << liczba_odcinkow << endl;
  45. cout << "Dlugosc jednego odcinka: 1/" << mianownik << "\n" << endl;
  46.  
  47. // Wyświetlanie rysunku
  48. for (int i = 0; i <= n; i++) {
  49. cout << "n=" << i << ": " << wizualizacja[i] << endl;
  50. }
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0.01s 5288KB
stdin
5
stdout
Podaj rzad zbioru Cantora (n) do narysowania: 
Liczba odcinkow: 32
Dlugosc jednego odcinka: 1/243

n=0: ###################################################################################################################################################################################################################################################
n=1: #################################################################################                                                                                 #################################################################################
n=2: ###########################                           ###########################                                                                                 ###########################                           ###########################
n=3: #########         #########                           #########         #########                                                                                 #########         #########                           #########         #########
n=4: ###   ###         ###   ###                           ###   ###         ###   ###                                                                                 ###   ###         ###   ###                           ###   ###         ###   ###
n=5: # #   # #         # #   # #                           # #   # #         # #   # #                                                                                 # #   # #         # #   # #                           # #   # #         # #   # #