Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 1. Napisać program, który ustawia elementy danego ciągu liczb całkowitych nieujemnych w
- # następującym porządku: zera, jedynki, liczby podzielne przez 2, liczby podzielne przez 3 i
- # niepodzielne przez 2, liczby podzielne przez 5 i niepodzielne przez 2 i 3 itd.
- # 2. Dana jest liczba czterocyfrowa. Napisać program drukujący
- zad4 <- function(x) {
- # Na początku tworzymy Liste o nazwię lista o długości ciągu liczb, który zostanie użyty jako argument funkcji
- Lista <- vector("list", length = length(x))
- # Sortujemy teraz ten ciąg rosnąco
- copyX <- sort(x)
- #Teraz po za pętlą, choć nie musimy, wybieramy wartości z ciągu, które są równe 0
- temp <- which(copyX == 0)
- # Używamy if'a, bo nie wiemy czy są tam jakieś 0
- if (length(temp) > 0) {
- # Jeśli są to wrzucamy je do naszej Listy
- Lista[[1]] <- copyX[temp]
- # I usuwamy je z naszego ciągu
- copyX <- copyX[-temp]
- }
- # To samo robimy z jedynkami
- temp <- which(copyX == 1)
- if (length(temp) > 0) {
- Lista[[2]] <- copyX[temp]
- copyX <- copyX[-temp]
- }
- #I teraz pętla while
- # while będzie "kręciło" się dopoki warunek jest prawdziwy
- # w naszym przypadku warunkiem jest to, że wektor z liczbami jest nie pusty (długość) większa niż 0
- # w każdym kroku sprawdzamy, czy są jakieś liczby podzielne przez i (tzn ze reszta z dzielenia np. przez 2 jest równa 0) x%%2=0
- i <- 2
- while (length(copyX) > 0) {
- temp <- which(copyX %% i == 0)
- if (length(temp) > 0) {
- ## Jeśli są jakieś liczby podzielne przez i, to dodaj je do listy i potem usuń z ciągu
- Lista[[i + 1]] <- copyX[temp]
- copyX <- copyX[-temp]
- }
- ## i kręć nowe kółko tym razem dla 2+1=3 i potem dla 4 i potem dla 5 i tak dalej do momentu, aż ciąg copyX zostanie ogolony z ##wszystkich liczb
- i <- i + 1
- }
- return(unlist(Lista))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement