Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trójkąt pascala, Jak zrobić trójkąt pascala?
karrts
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.02.2015

Ostrzeżenie: (0%)
-----


Witam.
Mam za zadanie domowe zrobić trójkąt pascala w JS.
Głowię się już kilka godzin i nic nie potrafię wymyślić.
Miałby ktoś jakiś pomysł jakby to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Ale narysować?

1. Canvas
2. Generowanie HTML w JS + CSS


--------------------
Go to the top of the page
+Quote Post
karrts
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.02.2015

Ostrzeżenie: (0%)
-----


Polecenie mam takie

7. Wygeneruj trójkąt Pascala dla n wierszy. Liczbę wierszy podaje użytkownik.
Go to the top of the page
+Quote Post
rad11
post
Post #4





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


http://rosettacode.org/wiki/Pascal%27s_triangle#JavaScript

Zakladka javascript.

  1. <input type="text" id="rows"/>
  2. <input type="submit" id="submit" onclick="createPascalTriangle(document.getElementById('rows').value)"/>
  3. <script type="text/javascript">
  4. // Pascal's triangle object
  5. function pascalTriangle (rows) {
  6.  
  7. // Number of rows the triangle contains
  8. this.rows = rows;
  9.  
  10. // The 2D array holding the rows of the triangle
  11. this.triangle = new Array();
  12. for (var r = 0; r < rows; r++) {
  13. this.triangle[r] = new Array();
  14. for (var i = 0; i <= r; i++) {
  15. if (i == 0 || i == r)
  16. this.triangle[r][i] = 1;
  17. else
  18. this.triangle[r][i] = this.triangle[r-1][i-1]+this.triangle[r-1][i];
  19. }
  20. }
  21.  
  22. // Method to print the triangle
  23. this.print = function(base) {
  24. if (!base)
  25. base = 10;
  26.  
  27. // Private method to calculate digits in number
  28. var digits = function(n,b) {
  29. var d = 0;
  30. while (n >= 1) {
  31. d++;
  32. n /= b;
  33. }
  34. return d;
  35. }
  36.  
  37. // Calculate max spaces needed
  38. var spacing = digits(this.triangle[this.rows-1][Math.round(this.rows/2)],base);
  39.  
  40. // Private method to add spacing between numbers
  41. var insertSpaces = function(s) {
  42. var buf = "";
  43. while (s > 0) {
  44. s--;
  45. buf += " ";
  46. }
  47. return buf;
  48. }
  49.  
  50. // Print the triangle line by line
  51. for (var r = 0; r < this.triangle.length; r++) {
  52. var l = "";
  53. for (var s = 0; s < Math.round(this.rows-1-r); s++) {
  54. l += insertSpaces(spacing);
  55. }
  56. for (var i = 0; i < this.triangle[r].length; i++) {
  57. if (i != 0)
  58. l += insertSpaces(spacing-Math.ceil(digits(this.triangle[r][i],base)/2));
  59. l += this.triangle[r][i].toString(base);
  60. if (i < this.triangle[r].length-1)
  61. l += insertSpaces(spacing-Math.floor(digits(this.triangle[r][i],base)/2));
  62. }
  63. print(l);
  64. }
  65. }
  66.  
  67. }
  68.  
  69. function createPascalTriangle(rows){
  70. rows = parseInt(rows)+1;
  71. var tri = new pascalTriangle(rows);
  72.  
  73. for(i=0;i<tri.triangle.length;i++){
  74. document.write('<br>'+tri.triangle[i]+'<br/>');
  75. }
  76. }
  77. </script>
  78.  


Jezeli chcesz aby to byl trójkat to zmien:

  1. document.write('<br>'+tri.triangle[i]+'<br/>');

na
  1. document.write('<div style="text-align:center;">'+tri.triangle[i]+'</div>');


Ten post edytował rad11 3.02.2015, 20:11:25
Go to the top of the page
+Quote Post
karrts
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.02.2015

Ostrzeżenie: (0%)
-----


Ale to chodzi o to, że wy w szkole dopiero uczyliśmy się:
Prompt,
Pętli (While, Do While, for, if)
I Tablicy,

Czy za pomocą tego jest możliwe wykonanie takiego czegoś?
Go to the top of the page
+Quote Post
rad11
post
Post #6





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To skroc kod tak mam nadzieje ze to Ci wystarczy:
  1. <button onclick="myFunction()">Kliknij</button>
  2. <script type="text/javascript">
  3. //funkcja rysujaca trojkat
  4. function pascalTriangle (rows) {
  5.  
  6. this.rows = rows; // przypisanie parametru do jako obiekt
  7.  
  8. this.triangle = new Array(); //tablica
  9.  
  10. for (var r = 0; r < rows; r++) { //rozpoczynamy petle dopoki r = rows
  11. this.triangle[r] = new Array(); //tworzymy tablice o indeksie r
  12. for (var i = 0; i <= r; i++) { //rozpoczynamy petle dopoki i <= r
  13. if (i == 0 || i == r) // jezeli i = 0 lub i = r
  14. this.triangle[r][i] = 1; // ustawiamy pierwszy rzad na 1
  15. else
  16. this.triangle[r][i] = this.triangle[r-1][i-1]+this.triangle[r-1][i]; //tutaj zachodzi cala operacja tworzenia trojkata
  17. }
  18. }
  19.  
  20. for(i=0;i<this.triangle.length;i++){//rozpoczynamy petle dopoki r < dlugosci tablicy triangle
  21. document.write('<div style="text-align:center;">'+this.triangle[i]+'<div/>');//centrujemy aby uzyskac trojkat
  22. }
  23.  
  24. }
  25. //funkcja pokazujaca prompt i przekazujaca parametr do funkcji rysujacej trojkat
  26. function myFunction() {
  27. var row = prompt("Podaj ilosc rzędów");
  28. if (row != null) {
  29. pascalTriangle(parseInt(row)+1);
  30. }
  31. }
  32.  
  33. </script>
  34.  


Ten post edytował rad11 4.02.2015, 10:18:17
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 15:08