Ruby - pętle - next

  • Rejestracja: dni
  • Ostatnio: dni
0

cześć
Nie rozumiem takowego zadania:

Stwórz pętlę for, która sumuje elementy w zmiennej sum z tablicy numbers. Sumuj tylko i wyłącznie te elementy które nie są podzielne przez 3.

Taki mam kod

Kopiuj
sum = 0
for element in numbers # tutaj zrób pętlę po tablicy numbers
	if x!/3# tutaj dodaj warunek i funkcję next
	next
        end
	sum += x
end

Wiem że coś tu jest źle ale nie wiem w jaki sposób zbudować owy warunek :/

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
2

W Ruby (podobnie jak w wielu innych językach) jest operator modulo/reszty: %. Czyli twój warunek powinien wyglądać tak: element % 3 != 0.

Jednak całe zadanie znacznie lepiej wykonać używając metod z Enumerable:

Kopiuj
numbers.select { |element| element % 3 == 0 }.sum

Ogólnie używanie for w Ruby jest złą praktyką.

  • Rejestracja: dni
  • Ostatnio: dni
0

A mógłbyś mi to zrobić w zapisie for? Bo muszę zrobić zadanie za pomocą tego zapisu a innego nie akceptuje.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0
Kopiuj
sum = 0
for e in arr
	next if e % 3 == 0
	sum = sum + e
end
  • Rejestracja: dni
  • Ostatnio: dni
0

dziwne, nie działa :/ ogarnij to zadanie i na wzór jego trzeba zrobić .. :/ Ja też próbowałem i lipa :/
Za pomoc bardzo dziękuję.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

Podaj cały kod, który piszesz, bo to MUSI działać jeśli używasz tego dobrze.

  • Rejestracja: dni
  • Ostatnio: dni
0

tak ma wygl kod

Kopiuj
sum = 0
for # tutaj zrób pętlę po tablicy numbers
	# tutaj dodaj warunek i funkcję next
	sum += x
end

treść zadania
Stwórz pętlę for, która sumuje elementy w zmiennej sum z tablicy numbers. Sumuj tylko i wyłącznie te elementy które nie są podzielne przez 3.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

No to przecież dostałeś dokładny kod od @kq. W czym problem?

  • Rejestracja: dni
  • Ostatnio: dni
0

w tym że platforma nie akceptuje kodu i nie przepuszcza do kolejnego zadania. Sprawdź sobie zadanie..

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Pewnie ta platforma wymaga użycia konkretnych nazw zmiennych. Gdybyś chociaż spróbował zrozumieć podanego Ci trzylinijkowca to by nie było problemu.

  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
next if e % 3 != 0

To mu będzie opuszczać liczby niepodzielne przez 3 a jemu chodziło o to żeby takie sumować

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.