Adı Soyadı : Öğrenci No :

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Adı Soyadı : Öğrenci No :"

Transkript

1 Adı Soyadı : Öğrenci No : Soru Toplam Not F.Ü TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖL. YMT111 FİNAL SINAVI Güz (12 OCAK 2015) SORULAR Toplam 3 soru 120 Puan, cevaplarınızı soru üzerinde bırakılan boşluklara yazınız, süre 60 dakikadır. Soru 1: Soru 1: 40 Kişilik bir sınıfın isim listesi, vize notu, final notu kullanıcı tarafından uygun olan değişkenlere girilmektedir. Bu notlar ile aşağıdaki formüle uygun olarak öğrencinin ortalama notunu hesaplayan sonuçları LISTE.txt dosyasına aşağıdaki formatta kaydeden bir C programı yazınız. (20 puan) Ortalama = Vize * Final * 0.6 LISTE.TXT Ad Vize Final Ortalama Ali QWERTY ,4 Veli ASDFG ,0 Ahmet ZXCVB ,0... Soru2: Kullanıcıdan alınan 20 sayının içerisindeki 7 e bölünebilen en büyük sayıyı bulan bir C programı yazınız? (20 puan) Soru3: Popüler arama motorlarında (Google, Bing, vb) kullanıcılar yanlış kelime girmiş olsalar bile olası sonuçlar listelenebilmektedir. Kullanıcı birkaç harfi yanlış, eksik veya kelimedeki harflerin yerlerini hatalı girdiği takdirde arama motorları En Çok Aranılan Kelimeler arasındaki en yakın olan kelimeyi ÖNERİLENKELİME için olan sonuçlar da gösteriliyor şekil göstermektedir. (80 puan) Göreviniz, temel bir BunuMuDemekIstediniz işlemini gerçekleştiren C programını yazmaktır. Bu program aşağıdaki isterleri sağlamalıdır. a. Olası yazım hatalarına çözüm bulunmalıdır. i. Bilgiayar ----> s harfi eksik ii. Bilgiyasar ----> harfler yer değiştirmiş iii. Bilgisayat ----> yanlış yazım b. En Çok Aranılan Kelimeler bir KELIME.TXT dosyasında virgüllerle ayrılarak yazılmıştır. (Bu dosyanın var olduğu kabul edilerek program yazılacaktır.) c. En az 4 harfli kelimeler için işlem yapılmalıdır. Başarılar Dilerim Yrd. Doç. Dr. Mustafa ULAŞ

2 Cevap 1: #include<stdio.h> #include<conio.h> char ad[40][20],soyad[40][20]; int sinifmevcudu,i,j,vize[40],final[40]; float ortalama[40]; main(){ FILE *fp=fopen("liste.txt","w"); fprintf(fp,"ad\t\tsoyad\t\tvize\tfinal\tortalama"); for(i=0;i<40;i++){ printf("%d.ogrenci Adı : ",i+1); scanf("%s",&ad[i]); printf("%d.ogrenci Soyadı : ",i+1); scanf("%s",&soyad[i]); printf("%d.ogrenci Vize : ",i+1); scanf("%d",&vize[i]); printf("%d.ogrenci Final : ",i+1); scanf("%d",&final[i]); ortalama[i] = vize[i] * final[i] * 0.6; fprintf(fp,"\n%s\t\t%s\t\t%d\t%d\t%.1f",ad[i],soyad[i],vize[i],final[i],ortalama[i]); fclose(fp);

3 Cevap 2: #include<stdio.h> #include<conio.h> int i,sayi[20],enbuyukyediyebolunen=0; main(){ for(i=0;i<5;i++){ printf("%d. Sayi : ",i+1); scanf("%d",&sayi[i]); if(sayi[i]%7==0&&enbuyukyediyebolunen<sayi[i]){ enbuyukyediyebolunen=sayi[i]; if(enbuyukyediyebolunen==0) printf("\nseri icerisinde 7 'e bolunen sayi yoktur."); else printf("\nseri icerisindeki y'e bolunen en buyuk sayi: %d",enbuyukyediyebolunen);

4 Cevap 3: #include<stdio.h> #include<conio.h> #include<string.h> #include<math.h> int i,k,t,aranilankelimeuzunluk,bulunankelimeuzunluk,kelimesayisi; int benzerlikpuani,encokbenzeyen=0,encokbenzeyenpuan=0,hic=1; char kelimedosya[5000],kelimedizi[1000][20],aranilan[20]; char parcaara[2]; int varmi(char kelime[],char ara[]){ int z,x,puan=0; for(z=0;z<=strlen(kelime)-1;z++){ puan=0; for(x=0;x<strlen(ara);x++){ if(kelime[z+x]==ara[x]){ puan++; if(strlen(ara)==puan) return 1; return 0; main(){ printf("aranilan kelime : "); scanf("%s",aranilan); aranilankelimeuzunluk=strlen(aranilan); FILE *fp=fopen("kelimeler.txt","a+"); fscanf(fp,"%s",kelimedosya); for(i=0,kelimesayisi=0;kelimedosya[i];i++){ if(kelimedosya[i]==','){ kelimesayisi++; k=0; else{ kelimedizi[kelimesayisi][k]=kelimedosya[i]; k++; aranilankelimeuzunluk = strlen(aranilan); bulunankelimeuzunluk = 10000; for(t=0;t<=kelimesayisi;t++){ i=0; benzerlikpuani= 0; do{ parcaara[0]=aranilan[i]; if(aranilan[i+1]) parcaara[1]=aranilan[i+1]; else parcaara[1]=null; benzerlikpuani += varmi(kelimedizi[t],parcaara); i=i+2; while(aranilan[i]); if(benzerlikpuani>=encokbenzeyenpuan&&benzerlikpuani>=aranilankelimeuzunluk/2.0- aranilankelimeuzunluk/5.0){ if(abs(strlen(kelimedizi[t])-bulunankelimeuzunluk) > abs(strlen(kelimedizi[t])-aranilankelimeuzunluk)){ encokbenzeyen=t; encokbenzeyenpuan=benzerlikpuani; bulunankelimeuzunluk = strlen(kelimedizi[t]); hic=0; if(hic==0) printf("\n\en cok benzeyen kelime : %s",kelimedizi[encokbenzeyen]); else printf("\n\naranilan kelimeye benzeyen hic bir kelime bulunamadi."); fclose(fp); getch();

5

6