Napisz program, który dla dywanu Sierpińskiego stopnia n obliczy stosunek pola zajmowanego przez białe kwadraty do pola zajmowanego przez czarne kwadraty. Stopień 0 oznacza, że dywan Sierpińskiego jest cały czarny. Stopień 1 to 8 pól czarnych i 1 białe. Pamiętaj o użyciu odpowiedniego typu danych w celu wyświetlenia wyniku.
Swój program przetestuj dla dywanu Sierpińskiego, którego stopień wynosi 10.
Specyfikacja problemu:
Dane:
n – liczba naturalna; stopień dywanu Sierpińskiego
Wynik:
Program wyświetla stosunek pola zajmowanego przez białe kwadraty do pola zajmowanego przez czarne kwadraty.
Przykładowe wyjście:
Linia 1. 0 kropka 802032.
RgoHMOJuKRGpx
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny cmath zamknij nawias ostrokątny.
Linia 4. long long poleCzarne otwórz nawias okrągły int i zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. if otwórz nawias okrągły i znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. return 1 średnik.
Linia 7. zamknij nawias klamrowy.
Linia 9. return 8 asterysk poleCzarne otwórz nawias okrągły i minus 1 zamknij nawias okrągły średnik.
Linia 10. zamknij nawias klamrowy.
Linia 12. long long poleBiale otwórz nawias okrągły int i zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. return pow otwórz nawias okrągły 3 przecinek 2 asterysk i zamknij nawias okrągły minus poleCzarne otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 14. zamknij nawias klamrowy.
Linia 16. double stosunekBialegoDoCzarnego otwórz nawias okrągły int i zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. return double otwórz nawias okrągły poleBiale otwórz nawias okrągły i zamknij nawias okrągły zamknij nawias okrągły prawy ukośnik poleCzarne otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 18. zamknij nawias klamrowy.
Linia 20. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. int n znak równości 10 średnik.
Linia 22. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny stosunekBialegoDoCzarnego otwórz nawias okrągły n zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 24. return 0 średnik.
Linia 25. zamknij nawias klamrowy.
21
Ćwiczenie 2
Napisz program, który wypisze tablicę dwuwymiarową o rozmiarze 27 na 27 powstałą według następującej zasady:
tab[i][j] = C[i] || C[j]
C[n] – n‑ty bit w zbiorze Cantora trzeciego stopnia
Aby uzyskać C[n] należy utworzyć zbiór Cantora składający się z 27 części (trzeci stopień).
Poprawne wyjście:
Linia 1. 111111111111111111111111111.
Linia 2. 101000101000000000101000101.
Linia 3. 111111111111111111111111111.
Linia 4. 101000101000000000101000101.
Linia 5. 101000101000000000101000101.
Linia 6. 101000101000000000101000101.
Linia 7. 111111111111111111111111111.
Linia 8. 101000101000000000101000101.
Linia 9. 111111111111111111111111111.
Linia 10. 101000101000000000101000101.
Linia 11. 101000101000000000101000101.
Linia 12. 101000101000000000101000101.
Linia 13. 101000101000000000101000101.
Linia 14. 101000101000000000101000101.
Linia 15. 101000101000000000101000101.
Linia 16. 101000101000000000101000101.
Linia 17. 101000101000000000101000101.
Linia 18. 101000101000000000101000101.
Linia 19. 111111111111111111111111111.
Linia 20. 101000101000000000101000101.
Linia 21. 111111111111111111111111111.
Linia 22. 101000101000000000101000101.
Linia 23. 101000101000000000101000101.
Linia 24. 101000101000000000101000101.
Linia 25. 111111111111111111111111111.
Linia 26. 101000101000000000101000101.
Linia 27. 111111111111111111111111111.
RUBj39JiR5iKR
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny cmath zamknij nawias ostrokątny.
Linia 4. const bool BLACK znak równości 1 średnik.
Linia 5. const bool WHITE znak równości 0 średnik.
Linia 7. void koloruj otwórz nawias okrągły int x przecinek int rozmiar przecinek bool asterysk tablica przecinek bool kolor zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny rozmiar średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. tablica otwórz nawias kwadratowy x plus i zamknij nawias kwadratowy znak równości kolor średnik.
Linia 10. zamknij nawias klamrowy.
Linia 11. zamknij nawias klamrowy.
Linia 13. void zbiorCantora otwórz nawias okrągły int x przecinek int kroki przecinek bool asterysk tablica zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. if otwórz nawias okrągły kroki znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 15. koloruj otwórz nawias okrągły x przecinek 1 przecinek tablica przecinek BLACK zamknij nawias okrągły średnik.
Linia 16. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 17. int rozmiar znak równości pow otwórz nawias okrągły 3 przecinek kroki minus 1 zamknij nawias okrągły średnik.
Linia 19. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 3 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. if otwórz nawias okrągły i znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. koloruj otwórz nawias okrągły x plus rozmiar przecinek rozmiar przecinek tablica przecinek WHITE zamknij nawias okrągły średnik.
Linia 22. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 23. zbiorCantora otwórz nawias okrągły x plus i asterysk rozmiar przecinek kroki minus 1 przecinek tablica zamknij nawias okrągły średnik.
Linia 24. zamknij nawias klamrowy.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy.
Linia 27. zamknij nawias klamrowy.
Linia 29. void mnozenieZbioruCantora otwórz nawias okrągły int kroki zamknij nawias okrągły otwórz nawias klamrowy.
Linia 30. int tablica podkreślnik rozmiar znak równości pow otwórz nawias okrągły 3 przecinek kroki zamknij nawias okrągły średnik.
Linia 31. bool asterysk tablica znak równości new bool otwórz nawias kwadratowy tablica podkreślnik rozmiar zamknij nawias kwadratowy średnik.
Linia 33. zbiorCantora otwórz nawias okrągły 0 przecinek kroki przecinek tablica zamknij nawias okrągły średnik.
Linia 35. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tablica podkreślnik rozmiar średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny tablica podkreślnik rozmiar średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 37. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny otwórz nawias okrągły tablica otwórz nawias kwadratowy i zamknij nawias kwadratowy kreska pionowa kreska pionowa tablica otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 38. zamknij nawias klamrowy.
Linia 40. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 41. zamknij nawias klamrowy.
Linia 43. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 44. zamknij nawias klamrowy.
Linia 46. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 47. mnozenieZbioruCantora otwórz nawias okrągły 3 zamknij nawias okrągły średnik.
Linia 49. return 0 średnik.
Linia 50. zamknij nawias klamrowy.
31
Ćwiczenie 3
Napisz program, który narysuje dywan Sierpińskiego trzeciego stopnia pokolorowany według następujących zasad:
Każdy czarny element dywanu wypisywany jest na ekran jako 0.
Każdy biały element dywanu wypisywany jest w zależności od swojego rozmiaru cyframi od 1 do 9 – kwadratowi o boku 3Indeks górny nn odpowiada liczba n‑1.
Poprawne wyjście:
Linia 1. 000000000000000000000000000.
Linia 2. 010010010010010010010010010.
Linia 3. 000000000000000000000000000.
Linia 4. 000222000000222000000222000.
Linia 5. 010222010010222010010222010.
Linia 6. 000222000000222000000222000.
Linia 7. 000000000000000000000000000.
Linia 8. 010010010010010010010010010.
Linia 9. 000000000000000000000000000.
Linia 10. 000000000333333333000000000.
Linia 11. 010010010333333333010010010.
Linia 12. 000000000333333333000000000.
Linia 13. 000222000333333333000222000.
Linia 14. 010222010333333333010222010.
Linia 15. 000222000333333333000222000.
Linia 16. 000000000333333333000000000.
Linia 17. 010010010333333333010010010.
Linia 18. 000000000333333333000000000.
Linia 19. 000000000000000000000000000.
Linia 20. 010010010010010010010010010.
Linia 21. 000000000000000000000000000.
Linia 22. 000222000000222000000222000.
Linia 23. 010222010010222010010222010.
Linia 24. 000222000000222000000222000.
Linia 25. 000000000000000000000000000.
Linia 26. 010010010010010010010010010.
Linia 27. 000000000000000000000000000.
R1B55aLrIe89E
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny cmath zamknij nawias ostrokątny.
Linia 4. void koloruj otwórz nawias okrągły int x przecinek int y przecinek int rozmiar przecinek int asterysk asterysk tablica przecinek int kolor zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny rozmiar średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny rozmiar średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. tablica otwórz nawias kwadratowy x plus i zamknij nawias kwadratowy otwórz nawias kwadratowy y plus j zamknij nawias kwadratowy znak równości kolor średnik.
Linia 8. zamknij nawias klamrowy.
Linia 9. zamknij nawias klamrowy.
Linia 10. zamknij nawias klamrowy.
Linia 12. void dywanSierpinsiego otwórz nawias okrągły int x przecinek int y przecinek int kroki przecinek int asterysk asterysk tablica zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. if otwórz nawias okrągły kroki znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. koloruj otwórz nawias okrągły x przecinek y przecinek 1 przecinek tablica przecinek 0 zamknij nawias okrągły średnik.
Linia 15. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 16. int rozmiar znak równości pow otwórz nawias okrągły 3 przecinek kroki minus 1 zamknij nawias okrągły średnik.
Linia 18. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 3 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 19. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny 3 średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. if otwórz nawias okrągły i znak równości znak równości 1 ampersant ampersant j znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. koloruj otwórz nawias okrągły x plus rozmiar przecinek y plus rozmiar przecinek rozmiar przecinek tablica przecinek kroki zamknij nawias okrągły średnik.
Linia 22. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 23. dywanSierpinsiego otwórz nawias okrągły x plus i asterysk rozmiar przecinek y plus j asterysk rozmiar przecinek kroki minus 1 przecinek tablica zamknij nawias okrągły średnik.
Linia 24. zamknij nawias klamrowy.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy.
Linia 27. zamknij nawias klamrowy.
Linia 28. zamknij nawias klamrowy.
Linia 30. void narysujDywanSierpinskiego otwórz nawias okrągły int kroki zamknij nawias okrągły otwórz nawias klamrowy.
Linia 31. int tablica podkreślnik rozmiar znak równości pow otwórz nawias okrągły 3 przecinek kroki zamknij nawias okrągły średnik.
Linia 32. int asterysk asterysk tablica znak równości new int asterysk otwórz nawias kwadratowy tablica podkreślnik rozmiar zamknij nawias kwadratowy średnik.
Linia 34. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tablica podkreślnik rozmiar średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 35. tablica otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości new int otwórz nawias kwadratowy tablica podkreślnik rozmiar zamknij nawias kwadratowy średnik.
Linia 36. zamknij nawias klamrowy średnik.
Linia 38. dywanSierpinsiego otwórz nawias okrągły 0 przecinek 0 przecinek kroki przecinek tablica zamknij nawias okrągły średnik.
Linia 40. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tablica podkreślnik rozmiar średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 41. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny tablica podkreślnik rozmiar średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 42. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny tablica otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 43. zamknij nawias klamrowy.
Linia 45. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 46. delete tablica otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 47. zamknij nawias klamrowy średnik.
Linia 49. delete otwórz nawias kwadratowy zamknij nawias kwadratowy tablica średnik.
Linia 50. zamknij nawias klamrowy.
Linia 52. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 53. narysujDywanSierpinskiego otwórz nawias okrągły 3 zamknij nawias okrągły średnik.
Linia 55. return 0 średnik.
Linia 56. zamknij nawias klamrowy.