Strona główna » Algorytmy » Artykuły » Trójkąt Floyda
 

Trójkąt Floyda

Trójkąt

Trójkąt Floyda to trójkąt, który powstaje poprzez wypisanie kolejnych liczb naturalnych w kolejnych wierszach z zastrzeżeniem, że w i-tym wierszu może być maksymalnie i elementów. Oznacza to, że w pierszym wierszu jest tylko wartość 1, a w kolejnym 2, 3 itd. Poniżej został przedstawiony tójkąt Floyda dla sześciu wierszy:

  1. 1
  2. 2   3
  3. 4   5   6
  4. 7   8   9   10
  5. 11  12  13  14  15
  6. 16  17  18  19  20  21

Interesujący jest fakt, że liczby znajdujące się w pierwszej kolumnie opisują na ile części można maksymalnie podzielić np. pizzę w i ruchach.

Implementacja

Do narysowania powyższego trójkąta można zastosować algorytm składający się z dwóch pętli. Oto przykładowa funkcja WypiszTrojkatFloyd(). Jako argument przyjmuje jeden argument k czyli ile wierszy ma zostać wypisanych.

  1. static void WypiszTrojkatFloyd(int k)
  2. {
  3. int licznik = 1;
  4. for (int i = 1; i <= k; i++)
  5. {
  6. for (int j = 0; j < i; j++)
  7. {
  8. Console.Write("{0}\t", licznik);
  9. licznik++;
  10. }
  11. Console.WriteLine();
  12. }
  13. }

Pierwsza pętla ma za zadanie przechodzić po kolejnych wierszach. Z kolei druga pętla wypisuje i wiersz. Po wypisaniu elementu licznik jest zwiększany o 1, aby następna wypisa liczba była kolejna liczbą naturalną. Pomiędzy elementami wiersza wypisany jest tabulator, aby wyrównać kolejne elementy w kolumnach.

Testowanie funkcji

W celu przetestowania powyższej funkcji można skorzystać z poniższego fragmentu kodu, który wczytuje ile wierszy trójkąta ma zostać wypisanych.

  1. static void Main(string[] args)
  2. {
  3. Console.Write("Ile rzędów wypisać?\n k = ");
  4. int k = Convert.ToInt32(Console.ReadLine());
  5. WypiszTrojkatFloyd(k);
  6. Console.ReadKey();
  7. }

Zadania

Zadanie 1

Napisz funkcję WypiszTrojkatFloyd(), która użyje dokładnie jednej pętli. Nie wolno wykorzystać rekurencji. Przetestuj napisany program.