Soru - 1 Kullanıcı Tarafından belirlenen bir N sayısına kadar olan tek sayıların karesini A vektörüne, çift sayıların küpünü B vektörüne atan kod parçacığını yazınız.
Cevap - 1
n=50
A=c()
B=c()
for (i in 1:n)
{
if (i %% 2==0)
{
B=append(B,i^3)
} else
{
A=append(A,i^2)
}
}
Soru - 2 Kullanıcı tarafından girilen bir b sayısı ile başlayan M dizisinin elemanları aşağıda gösterildiği gibi devam etmektedir.
M=[a, a2, (a2)3, ((a2)3)4,…] Bu dizinin n. elemanını ekrana yazdıran kod parçacığını yazınız.
Cevap - 2
b=2
n=5
sonuclar=c(b)
deger=b
for (i in 2:n)
{
deger=deger^i
sonuclar=append(sonuclar,deger)
}
Soru - 3 1’den N’e kadar olan sayılar içerisind 3’e kalansız olarak bölündüğü halde 4’e kalansız olarak bölünmeyen sayıları bir A vektötürüne atan kod parçacığını yazınız.
Cevap - 3
n=500
A=c()
for (i in 1:500)
{
if (i %% 3==0 && i %% 4!=0)
{
A=append(A,i)
}
}
Soru - 4 ABCD = ACBD + (CD x D) eşitliği sağlayan 4 basamaklı sayıları bir A vektörüne atan kod parçacığını yazınız.
Cevap - 4
A=c()
for (i in 1000:9999)
{
v1=as.integer(strsplit(as.character(i),"")[[1]])
# ABCD = ACBD + (CD x D)
abcd=i
a=v1[1]
b=v1[2]
c=v1[3]
d=v1[4]
acbd=1000*a+100*c+10*b+d
cd=10*c+d
if (abcd==(acbd+(cd*d))) {
A=append(A,abcd)
}
}
Soru - 5 ABCDE = BCDEA - CDE eşitliğini sağlayan sayılara uydurma sayılar denir. 5 Basamaklı bir XYZWQ sayısının uydurma sayı olup olmadığını kontrol eden kod parçacığını yazınız.
Cevap - 5
sayi=88999
v1=as.integer(strsplit(as.character(sayi),"")[[1]])
# ABCDE = BCDEA - (A x CDE)
abcde=sayi
a=v1[1]
b=v1[2]
c=v1[3]
d=v1[4]
e=v1[5]
bcdea=10000*b+1000*c+100*d+10*e+a
cde=100*c+10*d+e
if (abcde==(bcdea-cde))
paste(abcde,"sayısı uydurma sayıdır.") else
paste(abcde,"sayısı uydurma sayı değildir.")
## [1] "88999 sayısı uydurma sayıdır."
Soru - 6 Bir iş yerinde 7 kasiyer çalışmaktadır. Haftanın her günü bir kasiyer izinlidir. Bir kasiyerin izinli olduğu gün her hafta bir sonraki güne denk gelecek şekilde ötelenmektedir.
Ör: Çalışanlar (A,B,C,D,E,F,G)
hafta Pzt - Sal - Çar - Per - Cum - Cmt - Pzr İzinli A B C D E F G
hafta Pzt - Sal - Çar - Per - Cum - Cmt - Pzr İzinli G A B C D E F
Bu bilgiler ışığında n. haftanın çarşamba gününde izinli olan kasiyerin adını ekrana yazdıran kod parçacığını yazınız…
Cevap - 6
kasiyerler=c("a","b","c","d","e","f","g")
hafta1=kasiyerler
haftalar=data.frame()
haftalar=rbind(haftalar,kasiyerler)
for (i in 1:6)
{
haftalar=rbind(haftalar,c(kasiyerler[(8-i):7],kasiyerler[1:(8-i)]))
}
colnames(haftalar)=c("Pzt","Sal","Çar","Per","Cum","Cmt","Pzr")
#yukarıdaki kod bloğu çalıştırıldığında aşağıdaki gibi bir veri çerçevesi oluşur
# Pzt Sal Çar Per Cum Cmt Pzr
# 1 a b c d e f g
# 2 g a b c d e f
# 3 f g a b c d e
# 4 e f g a b c d
# 5 d e f g a b c
# 6 c d e f g a b
# 7 b c d e f g a
# bu veri çerçevesi 7 haftalık izin çizelgesini göstermektedir ve bu çizelge
# 7 haftada bir başa dönmektedir.
#verilen n değerinin mod 7'si bulunduğunda bu veri çerçevesinin kaçıncı satırının
#dikkate alınacağı anlaşılır.
#hangi günde kimin izinli olduğunu öğrenmek için gün indisi kullanılır.
#pzt=1, sal=2, çar=3, per=4, cum=5, cmt=6, pzr=7
n=32 #32. hafta
kalan= n %% 7
gun=3 #Çarşamba
izinli=haftalar[kalan,gun]
paste(n,".hafta çarşamba günü izinli personel: ",izinli,sep = "")
## [1] "32.hafta çarşamba günü izinli personel: g"
Soru - 7 Kullanıcı tarafından girilen bir metinde sırası ile; 2 harfli kelimeleri K2 3 harfli kelimeleri K3 4 harfli kelimeleri K4 5 harfli kelimeleri K5 6 harfli kelimeleri K6 dizisine aktaran kod parçacığını yazınız…
Cevap - 7
metin="selçuk üniversitesi fen fakültesi, aktüerya bölümü"
kelimeler=strsplit(metin," ")[[1]]
uzunluk=length(kelimeler)
K2=c()
K3=c()
K4=c()
K5=c()
K6=c()
for (i in 1:uzunluk)
{
k_uzunluk=nchar(kelimeler[i])
if (k_uzunluk==2) {K2=append(K2,kelimeler[i])} else
if (k_uzunluk==3) {K3=append(K3,kelimeler[i])} else
if (k_uzunluk==4) {K4=append(K4,kelimeler[i])} else
if (k_uzunluk==5) {K5=append(K5,kelimeler[i])} else
if (k_uzunluk==6) {K6=append(K6,kelimeler[i])}
}
Soru - 8 Girilen bir metindeki kelimeleri ayrıştırarak her kelimeden yanlızca bir tane olacak şekilde Benzersiz_Kelimeler vektörüne aktaran bir fonksiyon yazınız. (Unique fonksiyonu kullanılmayacak!)
Cevap - 8
# bu işlemi "unique" fonksiyonu ile tek hamlede yapabiliriz.
# yenikelimeler=unique(kelimeler)
# Ama soru gereği bunu kullanmamız yasak olduğundan bu fonksiyon ile aynı işe
# yarayan bir fonksiyonu biz yazalım
kelimelere_ayristir = function(metin)
{
kelimeler=strsplit(metin," ")[[1]]
benzersiz_kelimeler=c()
kelime_say=length(kelimeler)
for (i in 1:kelime_say)
{
if (is.element(kelimeler[i], benzersiz_kelimeler)==FALSE)
{
benzersiz_kelimeler=append(benzersiz_kelimeler,kelimeler[i])
}
}
return(benzersiz_kelimeler)
}
yazi="selçuk üniversitesi fen fakültesi aktüerya ve istatistik bölümleri final sınavı soruları selçuk üniversitesi fen fakültesi programlama dersi final sınavı soruları"
kelimelere_ayristir(yazi)
## [1] "selçuk" "üniversitesi" "fen" "fakültesi" "aktüerya"
## [6] "ve" "istatistik" "bölümleri" "final" "sınavı"
## [11] "soruları" "programlama" "dersi"
Soru - 9 Bir metinde yer alan kelimelerin metinde kaç kez geçtiğini yani metin içi frekanslarını hesaplayarak aşağıdaki örnekte gösterildiği gibi “kelime-frekans” olacak şekilde frekanslar isimli bir vektöre aktaran kod parçacığını yazınız.
Ör: Ali ata bak ali topu tut ali koş topu yakala ata bin hızlı koş
Frekanslar(Ali-3,ata-2,bak-1,topu-2,tut-1,koş-2,yakala-1,bin-1,hızlı-1)
Cevap - 9
metin="selçuk üniversitesi fen fakültesi aktüerya ve istatistik bölümleri final sınavı soruları selçuk üniversitesi fen fakültesi programlama dersi final sınavı soruları"
kelimeler=strsplit(metin," ")[[1]]
kelime_say=length(kelimeler)
frekanslar=c()
for (i in 1:kelime_say)
{
frekans=0
for (j in 1:kelime_say)
{
if (kelimeler[i]==kelimeler[j]) {frekans=frekans+1}
}
eklenecek=paste(kelimeler[i],frekans,sep = "-")
if (is.element(eklenecek,frekanslar)==FALSE)
{
frekanslar=append(frekanslar,eklenecek)
}
}
Soru - 10 Kullanıcı tarafından girilen bir kelimeyi aşağıdaki örnekte gösterildiği gibi bir listeye ekleyen kod parçacğını yazınız.
Ör: kelimenin içeriği “Selçuk” olsun. Kelimenin harf sayısı da “hs” olsun.
toplam hs*2-1 defa listeye ekleme yapılacaktır.
Liste_kelimeler
Cevap - 10
a=list()
kelime="ismail"
hs=nchar(kelime)
yenikelime=""
for (i in 1:hs)
{
yenikelime=paste(yenikelime,kelime)
a=append(a,yenikelime)
}
for (i in (hs-1):1)
{
a=append(a,a[i])
}
Soru - 11 Girilen bir saniye değerini aşağıdaki örnekte gösterildiği gibi saat, dakika ve saniye şeklinde ayrıştırarak gösteren fonksiyonuz yazınız.
Ör: 25000 saniye = “6 saat 56 dakika 40 saniye”
Cevap - 11
saniye_ayristir=function(saniye)
{
saniye_kalan=saniye %% 60
dakika=trunc(saniye/60)
dakika_kalan=dakika %% 60
saat=trunc(dakika/60)
paste(saat,"saat",dakika_kalan,"dakika",saniye_kalan,"saniye")
}
saniye_ayristir(25000)
## [1] "6 saat 56 dakika 40 saniye"
Soru - 12 0-360 arasındaki tüm tam sayıları derece olarak değerlendirip her biri için sinüs, cosinüs, tanjant ve cotanjant değerlerini trigonometri isimli bir veri çerçevesine ekleyen kod parçacığını yazınız.
Cevap - 12
trigonometri = data.frame(
Açı=c(),
Sinüs=c(),
Kosinüs=c(),
Tanjant=c(),
Kotanjant=c()
)
for (i in 1:360)
{
x=(i*pi/180)
trigonometri=rbind(trigonometri,c(i,sin(x),cos(x),tan(x),(1/tan(x))))
}
Soru - 13 Uzunluğu m genişliği n olan bir alan kare şeklindeki plakalar ile kaplanacaktır. Bu alan en az kaç adet kare plaka ile kaplanabilir.
Cevap - 13
m=150 #uzunluk
n=120 #genişlik
if (n>m) {enb=n; enk=m} else {enb=m; enk=n}
for (i in enk:1)
{
if (m %% i==0 && n %% i==0)
{
kenar=i
break
}
}
sonuc=(m/kenar)*(n/kenar)
sonuc
## [1] 20
Soru - 14 uzun kenarı m kısa kenarı n olan dikdörtgen şeklindeki bahçenin etrafı eşit aralıktaki boşluklar bırakılarak çitle çevrilecektir. Bu bahçenin etrafını çevirmek için en az kaç adet çite ihtiyaç vardır.
Cevap - 14
m=150 #uzunluk
n=120 #genişlik
if (n>m) {enb=n; enk=m} else {enb=m; enk=n}
for (i in enk:1)
{
if (m %% i==0 && n %% i==0)
{
bosluk=i
break
}
}
sonuc=2*(m/bosluk+1)+2*(n/bosluk-1)
sonuc
## [1] 18
# # # # # #
# uzunluk=150 #
# genişlik=120 #
# 18 Adet #
# # # # # #
Soru - 15 1’den N e kadar olan pozitif tam sayıları, pozitif tam bölenleri ile birlikte bir list’e aşağıdaki örnekte gösterildiği gibi kaydeden kod parçacığını yazınız.
Örnek: n=6 olsun…
sonuclar listesinin çıktısı…
Cevap - 15
n=150
sonuclar=list()
for ( i in 1:150)
{
bolenler=c(paste(i,"sayısının pozitif tam bölenleri: "))
for (j in 1:i)
{
if (i %% j == 0)
{
bolenler=append(bolenler,j)
}
}
sonuclar=append(sonuclar,list(paste(bolenler,collapse = " ")))
}
Soru - 16 “Öğrenci_bilgileri” isimli veri çerçevesinde sırası ile
numara ad soyad Vize Notu Final Notu
şeklinde 4 sütun bulunmaktadır.
bu veri setine sırasıyla aşağıdaki sütunlar eklenecektir.
Veri çerçevesindeki satırlara ulaşarak her bir öğrenci için 5,6 ve 7. sütunları ekleyen kod parçacığını yazınız…
Cevap - 16
ogrenci_bilgileri= data.frame(
numara=c(1,2,3,4,5),
ad_soyad=c("a","b","c","d","e"),
vize=c(50,55,60,65,70),
final=c(60,65,70,75,80)
)
os=nrow(ogrenci_bilgileri) # satır yani öğrenci sayısı
# eklenecek sütünlar için gerekli hesaplamaları yapara 3 vektör oluşturalım.
# bu vektörlerde sırası ile ortalama, geçme durumu ve harf notu yer alacak.
# daha sonra bu vektörleri sütun ekleme komutundan yararlanarak veri çerçevesine
# ekleyebiliriz.
ortalama=c()
gecme_durumu=c()
harf_notu=c()
for (i in 1:os)
{
# ortalama hesabı
ort=round(ogrenci_bilgileri$vize[i]*0.4+ogrenci_bilgileri$final[i]*0.6)
ortalama=append(ortalama,ort)
#########
#geçme durumu sorgusu
if (ort>=60) {durum="geçti"} else {durum="kaldı"}
gecme_durumu=append(gecme_durumu,durum)
#########
#harf sorugusu
if (ort>=85) {harf="AA"} else
if (ort<85 && ort>=80) {harf="BA"} else
if (ort<80 && ort>=75) {harf="BB"} else
if (ort<75 && ort>=70) {harf="CB"} else
if (ort<70 && ort>=60) {harf="CC"} else
if (ort<60) {harf="FF"}
harf_notu=append(harf_notu,harf)
#############
}
# oluşturulan vektörler öğrenci bilgileri veri çerçevesine yeni birer sütun
# olarak ekleniyor.
ogrenci_bilgileri=cbind(ogrenci_bilgileri,ortalama,gecme_durumu,harf_notu)
Soru - 17 girilen bir metinden aşağıdaki vektörde yer alan noktalama işaretlerini kaldıran fonksiyonu yazınız.
Cevap - 17
noktalamasil=function(metin)
{
Noktalama=c(".",",",":",";","!","?","-","_")
yenimetin=""
harf_say=nchar(metin)
for (i in 1:harf_say)
{
harf=substr(metin,i,i)
if (is.element(harf, Noktalama)==FALSE)
{
yenimetin=paste(yenimetin,harf,sep = "")
}
}
return(yenimetin)
}
metin="selçuk, :üniversitesi; fen fakültesi_ aktüerya-istatistik böl. final sınavı? soruları!"
noktalamasil(metin)
## [1] "selçuk üniversitesi fen fakültesi aktüeryaistatistik böl final sınavı soruları"