Menu
CoddyTech

Pętle zagnieżdżone

Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 46 z 88.

Możesz umieścić pętlę wewnątrz innej pętli, aby utworzyć pętlę zagnieżdżoną. Pętla wewnętrzna wykonuje się w całości przy każdej iteracji pętli zewnętrznej, dzięki czemu ten wzorzec jest przydatny podczas pracy z siatkami, tabelami lub kombinacjami.

rows = 2
cols = 3
for i in 1..rows
  for j in 1..cols
    puts "i=#{i}, j=#{j}"
  end
end

To wypisuje sześć wierszy. Dla każdej wartości i pętla wewnętrzna przechodzi przez wszystkie wartości j.

Najpierw i ma wartość 1, a j przyjmuje kolejno wartości 1, 2, 3. Następnie i zmienia się na 2, a j ponownie przyjmuje kolejno wartości 1, 2, 3. rows i cols nigdy się nie zmieniają: tylko mówią pętlom, kiedy mają się zatrzymać.

Praktycznym przykładem jest utworzenie prostego wzoru mnożenia:

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

To wypisuje siatkę produktów 3x3. print pozostawia wartości w tym samym wierszu, a puts "" przechodzi do nowego wiersza po zakończeniu każdego wiersza. Możesz też łączyć różne rodzaje pętli, na przykład umieścić pętlę times wewnątrz pętli for.

challenge icon

Wyzwanie

Łatwy

Wczytaj z wejścia dwie liczby całkowite:

  1. rows — liczba wierszy
  2. cols — liczba kolumn

Użyj zagnieżdżonych pętli, aby wypisać prostokąt złożony z gwiazdek (*) o podanych wymiarach. Każdy wiersz powinien zawierać cols gwiazdek oddzielonych spacjami, a każdy wiersz powinien znajdować się w osobnej linii.

Użyj print do wypisywania gwiazdek w wierszu, a puts, aby przejść do następnej linii po każdym wierszu.

Na przykład, jeśli dane wejściowe to 3 i 4, wynik powinien wyglądać tak:

* * * *
* * * *
* * * *

Jeśli dane wejściowe to 2 i 5, wynik powinien wyglądać tak:

* * * * *
* * * * *

Po ostatnim * w wierszu nie ma spacji.

Użyj nowego licznika dla każdej pętli (na przykład row dla wierszy i col dla gwiazdek w wierszu) i porównuj go z rows lub cols. Nie zmieniaj samych rows i cols: każdy wiersz ponownie potrzebuje cols.

Spróbuj swoich sił

# Wczytaj dane wejściowe
rows = gets.to_i
cols = gets.to_i

# TODO: Napisz swój kod poniżej
# Użyj zagnieżdżonych pętli, aby wyświetlić prostokąt z gwiazdek
# Użyj print do wyświetlania gwiazdek w wierszu, a puts do przejścia do następnego wiersza
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Ruby online