Soru #1

Fibonacci dizisinin elemanlari 1 1 2 3 5 8 13 21 34 55 89 … dizinin elemanlarını for() döngüsü ile oluşturmaya çalışınız.

fib <- c(1,1)  
while (max(fib) < 4e+06) {
  fib <- c(fib, fib[length(fib) - 1] + fib[length(fib)])
}
fib
##  [1]       1       1       2       3       5       8      13      21      34
## [10]      55      89     144     233     377     610     987    1597    2584
## [19]    4181    6765   10946   17711   28657   46368   75025  121393  196418
## [28]  317811  514229  832040 1346269 2178309 3524578 5702887

Soru #2

Örnek veri setinde i. satırda negatif sayı yok ise çıktıda i. satirin ortalaması….dir yazsin. Eğer veri setinde her hangi bir satırda negatif sayı var ise satir i negatif sayı bulunmaktadir. Veri setindeki satırlardaki toplam negatif sayı toplamı üçü geçerse çktıdacok sayida negatif sayisi yazsın ve döngü çalışmayı durdursun.

set.seed(1786)
ornek<-exp(matrix(rnorm(2000),nrow=100))
index1.temp<-sample(1:100,10)
index2.temp<-sample(1:20,10)
for(i in 1:10){
  ornek[index1.temp[i],index2.temp[i]]<--1
}
head(ornek,6)
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]     [,7]
## [1,] 0.5549525 0.3247338 0.5236032 0.3821027 0.4187483 0.1588847 5.226161
## [2,] 0.5671734 1.2431592 0.8812069 2.6695443 0.6984453 1.0838792 1.079946
## [3,] 4.8068457 0.3449856 0.6079096 0.9194116 1.5361330 1.9082522 0.671977
## [4,] 1.3509234 2.3569582 0.1931423 4.0707377 0.3527276 2.3498825 1.198514
## [5,] 0.9012032 0.2310683 0.2317487 1.3809955 0.9168741 0.6237213 1.609403
## [6,] 1.2331483 1.1066056 0.3546027 0.3705946 0.9002303 0.2528151 3.337512
##           [,8]      [,9]     [,10]     [,11]     [,12]     [,13]     [,14]
## [1,] 2.6280057 1.2251526 0.4760966 5.2379018 1.4782655 1.3761338 1.0202608
## [2,] 2.2087385 0.5195551 0.3757409 0.9004808 0.7409205 2.0543842 0.3668661
## [3,] 1.5310016 0.6735007 2.2069776 0.5060078 0.7171477 1.2378655 0.3651527
## [4,] 2.5592899 1.8205257 1.2624052 0.1524106 0.3828322 1.2406799 0.7954326
## [5,] 1.1005990 1.0619758 2.1047783 2.7816902 1.4010878 0.6140937 0.5136842
## [6,] 0.9799103 2.7520425 2.5407624 1.3889136 0.4346808 1.0637950 0.1859157
##          [,15]     [,16]      [,17]     [,18]    [,19]     [,20]
## [1,] 0.1437680 4.1807643  1.7389423 3.0760640 1.550557 4.4838291
## [2,] 3.8674407 1.9349214  0.6333922 0.4862532 5.275571 0.1161029
## [3,] 1.4724240 0.5971116 11.5869157 0.7580736 4.755297 1.0583051
## [4,] 0.1243085 0.8376231  1.3723291 2.0884571 2.506128 1.2094517
## [5,] 6.2971803 0.8422164  1.5335222 0.3079718 2.729447 1.7164885
## [6,] 3.8052219 2.1611055  0.3280288 2.7773368 1.726558 1.3193446
islem <- array()
for(i in 1:nrow(ornek)){
  if(all(ornek[i,]>=0)){
    islem[i] <- print(paste("Satir", i, "ortalamasi", mean(ornek[i,])))
  }else if(sum(ornek[i,]<0)<=3){
    islem[i] <- print(paste("Satir", i, "negatif sayi icermektedir."))
  }else if(sum(ornek[i,]<0)>3){
    islem[i] <- print(paste("Satir", i, "cok sayida negatif sayi icermektedir."))
  }
}
## [1] "Satir 1 ortalamasi 1.81024640410365"
## [1] "Satir 2 ortalamasi 1.38518610357355"
## [1] "Satir 3 ortalamasi 1.91306477718819"
## [1] "Satir 4 ortalamasi 1.4112379414075"
## [1] "Satir 5 ortalamasi 1.4449874985066"
## [1] "Satir 6 ortalamasi 1.45095623366252"
## [1] "Satir 7 ortalamasi 1.28395242730511"
## [1] "Satir 8 ortalamasi 1.09256285552594"
## [1] "Satir 9 ortalamasi 1.42368154628106"
## [1] "Satir 10 negatif sayi icermektedir."
## [1] "Satir 11 ortalamasi 1.63867357063309"
## [1] "Satir 12 negatif sayi icermektedir."
## [1] "Satir 13 ortalamasi 1.47012239341985"
## [1] "Satir 14 ortalamasi 1.68760963291761"
## [1] "Satir 15 ortalamasi 1.51554665095691"
## [1] "Satir 16 ortalamasi 1.99518274468864"
## [1] "Satir 17 ortalamasi 1.47942292790106"
## [1] "Satir 18 ortalamasi 1.4444947260594"
## [1] "Satir 19 ortalamasi 1.54378752827146"
## [1] "Satir 20 ortalamasi 2.17983862702061"
## [1] "Satir 21 ortalamasi 1.48707990280766"
## [1] "Satir 22 ortalamasi 2.10918427665028"
## [1] "Satir 23 ortalamasi 2.53701879215026"
## [1] "Satir 24 negatif sayi icermektedir."
## [1] "Satir 25 negatif sayi icermektedir."
## [1] "Satir 26 ortalamasi 0.981573869823853"
## [1] "Satir 27 ortalamasi 2.10120070726688"
## [1] "Satir 28 ortalamasi 1.58708489312329"
## [1] "Satir 29 ortalamasi 2.07934105483056"
## [1] "Satir 30 ortalamasi 1.62838414992845"
## [1] "Satir 31 ortalamasi 1.06213338682266"
## [1] "Satir 32 ortalamasi 1.30176914432271"
## [1] "Satir 33 ortalamasi 1.22716566563699"
## [1] "Satir 34 ortalamasi 1.68089750840266"
## [1] "Satir 35 ortalamasi 2.04330971448464"
## [1] "Satir 36 ortalamasi 1.62042716634191"
## [1] "Satir 37 ortalamasi 1.49511549814556"
## [1] "Satir 38 negatif sayi icermektedir."
## [1] "Satir 39 ortalamasi 1.64957267061729"
## [1] "Satir 40 negatif sayi icermektedir."
## [1] "Satir 41 ortalamasi 1.61087414481598"
## [1] "Satir 42 ortalamasi 2.51292782080857"
## [1] "Satir 43 ortalamasi 1.29253831341951"
## [1] "Satir 44 ortalamasi 0.995338317972212"
## [1] "Satir 45 ortalamasi 1.06319606969695"
## [1] "Satir 46 ortalamasi 2.08723014108201"
## [1] "Satir 47 ortalamasi 1.63838098483115"
## [1] "Satir 48 ortalamasi 1.58748051253287"
## [1] "Satir 49 ortalamasi 1.36039204193038"
## [1] "Satir 50 ortalamasi 2.5030812334855"
## [1] "Satir 51 negatif sayi icermektedir."
## [1] "Satir 52 ortalamasi 1.1701846988099"
## [1] "Satir 53 ortalamasi 1.39932665703517"
## [1] "Satir 54 ortalamasi 0.851813922412085"
## [1] "Satir 55 ortalamasi 1.38874171912631"
## [1] "Satir 56 ortalamasi 1.28819137534643"
## [1] "Satir 57 ortalamasi 2.40583121888184"
## [1] "Satir 58 ortalamasi 0.954909626512"
## [1] "Satir 59 ortalamasi 1.37212622963709"
## [1] "Satir 60 ortalamasi 1.38257148153171"
## [1] "Satir 61 ortalamasi 1.13360242378072"
## [1] "Satir 62 ortalamasi 0.710679121145175"
## [1] "Satir 63 ortalamasi 1.01854602443719"
## [1] "Satir 64 negatif sayi icermektedir."
## [1] "Satir 65 ortalamasi 1.15965812704672"
## [1] "Satir 66 ortalamasi 0.842555588739729"
## [1] "Satir 67 ortalamasi 1.35084607269106"
## [1] "Satir 68 ortalamasi 1.14463972482843"
## [1] "Satir 69 ortalamasi 1.31510707964177"
## [1] "Satir 70 ortalamasi 1.60246658326134"
## [1] "Satir 71 ortalamasi 1.91370003124893"
## [1] "Satir 72 ortalamasi 2.17726089691906"
## [1] "Satir 73 ortalamasi 1.1509167872398"
## [1] "Satir 74 ortalamasi 3.37881346599407"
## [1] "Satir 75 ortalamasi 1.4458712001827"
## [1] "Satir 76 ortalamasi 1.65784983950186"
## [1] "Satir 77 ortalamasi 1.11154005692112"
## [1] "Satir 78 ortalamasi 1.66369767927207"
## [1] "Satir 79 ortalamasi 1.3726424347633"
## [1] "Satir 80 ortalamasi 1.45540060332781"
## [1] "Satir 81 ortalamasi 1.1547741826877"
## [1] "Satir 82 ortalamasi 3.34868667286079"
## [1] "Satir 83 ortalamasi 2.63518520261191"
## [1] "Satir 84 ortalamasi 1.35479992704511"
## [1] "Satir 85 ortalamasi 1.95680972834867"
## [1] "Satir 86 negatif sayi icermektedir."
## [1] "Satir 87 ortalamasi 1.45020821996795"
## [1] "Satir 88 ortalamasi 1.15091491124661"
## [1] "Satir 89 ortalamasi 1.25524639987064"
## [1] "Satir 90 ortalamasi 0.763787021104584"
## [1] "Satir 91 ortalamasi 1.29539957747794"
## [1] "Satir 92 negatif sayi icermektedir."
## [1] "Satir 93 ortalamasi 1.23735048852641"
## [1] "Satir 94 ortalamasi 2.15189363654345"
## [1] "Satir 95 ortalamasi 1.4852096703456"
## [1] "Satir 96 ortalamasi 1.56903650889034"
## [1] "Satir 97 ortalamasi 1.74906359142209"
## [1] "Satir 98 ortalamasi 2.91382990626373"
## [1] "Satir 99 ortalamasi 1.32444388929016"
## [1] "Satir 100 ortalamasi 1.72039519136943"
ornek[i,]
##  [1] 0.2306306 0.4326504 2.3220752 1.3085742 0.4056920 0.3096230 0.6321737
##  [8] 1.4640684 0.6200461 5.2398278 1.6007486 1.6872310 2.1584657 1.0075204
## [15] 7.0757560 0.6724383 0.3367730 1.2002964 1.0504106 4.6529025

Soru #3

Aşağıdaki üçgen asterisk çıktısını olusturacak olan kodu döngü kullanarak yazınız.

for(i in c(1:15))
  cat( paste0(strrep(" ", 15 - i), strrep("* ", i), "\n") )
##               * 
##              * * 
##             * * * 
##            * * * * 
##           * * * * * 
##          * * * * * * 
##         * * * * * * * 
##        * * * * * * * * 
##       * * * * * * * * * 
##      * * * * * * * * * * 
##     * * * * * * * * * * * 
##    * * * * * * * * * * * * 
##   * * * * * * * * * * * * * 
##  * * * * * * * * * * * * * * 
## * * * * * * * * * * * * * * *
#yada
yildiz <- 1
while (yildiz<100) {
  if (yildiz>=15) {
    break
  } else {cat(paste0(strrep(" ", 15-yildiz), strrep("* ", yildiz), "\n" ))
   }
  yildiz <- yildiz+2
}
##               * 
##             * * * 
##           * * * * * 
##         * * * * * * * 
##       * * * * * * * * * 
##     * * * * * * * * * * * 
##   * * * * * * * * * * * * *
triangle <- 1
while (triangle<120) {
  if (triangle>=15) {
    break
  } else {cat(paste0(strrep(" ", 15-triangle), strrep("* ", triangle), "\n" ))
   }
  triangle <- triangle+2
}
##               * 
##             * * * 
##           * * * * * 
##         * * * * * * * 
##       * * * * * * * * * 
##     * * * * * * * * * * * 
##   * * * * * * * * * * * * *

Soru #4

Aşağıdaki kare asterisk çıktısını olusturacak olan kodu döngü kullanarak yazınız.

sekil <- function(max) {
  bosluk <- max - 1
    for (i in 0:(max-1)) {
        for (j in 0:bosluk) cat(" ")
        for (j in 1:5) cat(" * ")
        cat("\n")
  }
}
sekil(5)
##       *  *  *  *  * 
##       *  *  *  *  * 
##       *  *  *  *  * 
##       *  *  *  *  * 
##       *  *  *  *  *

Soru #5

Aşağıdaki kare asterisk çıktısını olusturacak olan kodu döngü kullanarak yazınız.

sekil <- function(max) {
  bosluk <- max - 1
    for (i in 0:(max-1)) {
        for (j in 0:bosluk) cat(" ")
        for (j in 1:7) cat(" * ")
        cat("\n")
  }
}
sekil(7)
##         *  *  *  *  *  *  * 
##         *  *  *  *  *  *  * 
##         *  *  *  *  *  *  * 
##         *  *  *  *  *  *  * 
##         *  *  *  *  *  *  * 
##         *  *  *  *  *  *  * 
##         *  *  *  *  *  *  *

Soru #6

Aşağıdaki dikdörtgen asterisk çıktısını olusturacak olan kodu döngü kullanarak yazınız.

sekil <- function(max) {
  bosluk <- max - 1
    for (i in 0:(max-1)) {
        for (j in 0:bosluk) cat(" ")
        for (j in 0:9) cat(" * ")
        cat("\n")
  }
}
sekil(4)
##      *  *  *  *  *  *  *  *  *  * 
##      *  *  *  *  *  *  *  *  *  * 
##      *  *  *  *  *  *  *  *  *  * 
##      *  *  *  *  *  *  *  *  *  *
length <- 6
width <- 4
counter <- 1
while (counter<=length) {
  if(counter==1 | counter==length){
  cat(strrep("* ",width),"\n")
  
  } else {cat(strrep("* ",1))
          cat(strrep(" ",2*width-4))
          cat(strrep("* ",1),"\n")
    }
  counter <- counter+1
}
## * * * *  
## *     *  
## *     *  
## *     *  
## *     *  
## * * * *

Soru #7

Pisagor üçlüsü olan ve toplamı 1000 olan sayıların çarpımını bulunuz.

a <- 499
b <- 1
repeat {
 hypo <- sqrt(a^2+b^2)
 sum <- a + b + hypo
 prod <- a*b*hypo
  if (sum >1000){
    a <- a-1
  }else if(sum<1000){
    b <- b+1
  }else if(sum==1000 | b==500 ){
    break
  }
}
a
## [1] 375
b
## [1] 200
hypo
## [1] 425
prod
## [1] 31875000

Soru #8

Eratosthenes yöntemini kullanarak asal sayıları bulunuz “any” komutunu ve %% mod opertorunu kullanabilirsiniz.

primes <- 2:100
curr.prime <- 2
while(curr.prime < sqrt(100)){
  primes[(primes >= curr.prime **2) & (primes %% curr.prime == 0)] <- 0
  curr.prime <- min(primes[primes>curr.prime])
}
primes <- primes[primes!=0] # 0 olanları göstermek istemiyorsan bunu yaz
primes
##  [1]  2  3  5  7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97