Advertisement
Guest User

Untitled

a guest
Sep 12th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.87 KB | None | 0 0
  1. # 1. Napisać program, który ustawia elementy danego ciągu liczb całkowitych nieujemnych w
  2. # następującym porządku: zera, jedynki, liczby podzielne przez 2, liczby podzielne przez 3 i
  3. # niepodzielne przez 2, liczby podzielne przez 5 i niepodzielne przez 2 i 3 itd.
  4. # 2. Dana jest liczba czterocyfrowa. Napisać program drukujący
  5.  
  6. zad4 <- function(x) {
  7.  
  8.   # Na początku tworzymy Liste o nazwię lista o długości ciągu liczb, który zostanie użyty jako argument funkcji
  9.   Lista <- vector("list", length = length(x))
  10.   # Sortujemy teraz ten ciąg rosnąco
  11.   copyX <- sort(x)
  12.  
  13.   #Teraz po za pętlą, choć nie musimy, wybieramy wartości z ciągu, które są równe 0
  14.   temp <- which(copyX == 0)
  15.   # Używamy if'a, bo nie wiemy czy są tam jakieś 0
  16.   if (length(temp) > 0) {
  17.   # Jeśli są to wrzucamy je do naszej Listy
  18.     Lista[[1]] <- copyX[temp]
  19.   # I usuwamy je z naszego ciągu
  20.     copyX <- copyX[-temp]
  21.   }
  22.  
  23.  # To samo robimy z jedynkami
  24.   temp <- which(copyX == 1)
  25.   if (length(temp) > 0) {
  26.     Lista[[2]] <- copyX[temp]
  27.     copyX <- copyX[-temp]
  28.   }
  29.  
  30.   #I teraz pętla while
  31.   # while będzie "kręciło" się dopoki warunek jest prawdziwy
  32.   # w naszym przypadku warunkiem jest to, że wektor z liczbami jest nie pusty (długość) większa niż 0
  33.   # 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
  34.   i  <- 2
  35.   while (length(copyX) > 0) {
  36.     temp <- which(copyX %% i == 0)
  37.     if (length(temp) > 0) {
  38.  ## Jeśli są jakieś liczby podzielne przez i, to dodaj je do listy i potem usuń z ciągu
  39.       Lista[[i + 1]] <- copyX[temp]
  40.       copyX <- copyX[-temp]
  41.     }
  42. ## 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
  43.     i <- i + 1
  44.   }
  45.  
  46.   return(unlist(Lista))
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement