KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr) 1. Kendisine gönderilen iki karakter dizisini birleştirip geriye tek bir dizi döndüren ve daha sonra bu yeni dizinin elemanlarını ascii koduna göre küçükten büyüğe sıralayıp oluşan yeni karakter dizisini ekrana basan kodu yazınız. Yeni dizi dinamik bellek yönetimi kullanılarak oluşturulacaktır. dizi1 ve dizi2 main içerisinde kullanıcıdan alınacaktır. Oluşan yeni dizi fonksiyondan geri döndürülüp main() içerisinde ekrana basılacaktır. Dizileri birleştiren fonksiyon prototipi = char *dizi_birlestir( char dizi1[], int boyut1, char dizi2[], int boyut2 ) Yeni diziyi sıralayan fonksiyon prototipi = char *dizi_sirala( char dizi[]) dizi1= a, l, i dizi2= g, e, l, d, i yenidizi= a, d, e, g, i, i, l, l #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> char *dizi_birlestir(char s1[],int u1,char s2[],int u2) char *s3; s3=(char *)calloc(sizeof(int),u1+u2); for(int i=0;i<u1;i++) s3[i]=s1[i]; for(int i=0;i<u2;i++) s3[i+u1]=s2[i]; return s3; char *dizi_sirala(char d[],int u) char c; char *ptr; for(int i=0;i<u;i++) for(int j=0;j<u;j++) for(int k=j+1;k<u;k++) if(d[j]>d[k]) c=d[j]; d[j]=d[k];
ptr=d; d[k]=c; return ptr; main() char s1[100],s2[100]; int u1,u2; char *ptr1,*ptr2; printf("string 1:"); scanf("%s",s1); printf("string 2:"); scanf("%s",s2); u1=strlen(s1); u2=strlen(s2); char s3[u1+u2]; ptr1 = dizi_birlestir(s1,u1,s2,u2); for(int i=0;i<u1+u2;i++) //printf("%c",*(ptr1+i)); s3[i] = *(ptr1+i); ptr2=dizi_sirala(s3,u1+u2); for(int i=0;i<u1+u2;i++) printf("%c",*(ptr2+i)); getch(); 2. Kullanıcı tarafından girilen 2 adet 8 bitlik binary(ikili) sayıyı karşılaştır() fonksiyonu bit bit karşılaştırıp eğer karşılaştırılan iki bit birbirine eşit ise 0 birbirinden farklı ise 1 değerini veren yeni bir 8 bitlik diziyi oluşturunuz. İlk dizi : 0 0 0 1 1 1 0 1 : 29 İkinci dizi: 1 0 0 1 0 1 0 0 : 148 Üçüncü dizi: 1 0 0 0 1 0 0 1 : 137 #include<stdio.h> #include<conio.h> #include<stdlib.h>
int karsilastir(int x,int y) if (x==y) return 0; return 1; main() char bit1[8],bit2[8],bit[8]; puts("8 bit girin"); for(int i=0;i<8;i++) bit1[i]=getch()-48; if(bit1[i]!=0 && bit1[i]!=1) i-=1; continue; printf("%d",bit1[i]); puts("\n"); for(int i=0;i<8;i++) bit2[i]=getch()-48; if(bit2[i]!=0 && bit2[i]!=1) i-=1; continue; printf("%d",bit2[i]); puts("\n"); for(int i=0;i<8;i++) bit[i] = karsilastir(bit1[i],bit2[i]); printf("%d",bit[i]); puts("\n"); getch(); 3. Bir banka müşterilerine doğum günlerinde mesaj atmak için bir kayıt listesi oluşturmuştur. Kayıt listesinde ad, soyad,.doğum tarihi yer almaktadır. Doğum günü bugüne rastlayan müşterilere mesaj atan dogumgunubul() fonksiyonunu gerçekleyiniz. Struct yapısı kullanmak zorunludur. #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #include<time.h> struct musteri char adsoyad[30]; int telefon; int ay; int gun;
int yil; ; struct bugun int gun; int ay; int yil; kisi; typedef musteri Musteri; void dogumgunubul(musteri musteriler[]) for(int i=0;i<3;i++) kisi.gun=7; kisi.ay=6;kisi.yil=2012; if((kisi.gun==musteriler[i].gun)&&(kisi.ay==musteriler[i].ay)) printf("%s %d. yasiniz kutlu olsun.",musteriler[i].adsoyad,kisi.yilmusteriler[i].yil); main() int i; Musteri musteriler[3]; for( i=0;i<3;i++) printf("\n%d.musterinin adını ve soyadini giriniz",i+1); gets(musteriler[i].adsoyad); printf("\n%d.musterinin telefon numarasini giriniz",i+1); scanf("%d",&musteriler[i].telefon); printf("\n%d.musterinin dogum gunu tarihinin gunun giriniz ",i+1); scanf("%d ",&musteriler[i].gun); printf("\n ayini giriniz"); scanf("%d",&musteriler[i].ay); printf("\n yilini giriniz"); scanf("%d",&musteriler[i].yil); dogumgunubul(musteriler); getch();
KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(II. ogr) 1. Araba üreten bir fabrikada hurdaya çıkacak olan araçların listesi tutulmaktadır. Bu listede aracın modeli, markası, rengi, fiyatı ve üretim yılı bilgileri tutulmaktadır. Bir aracın hurdaya kaldırılabilmesi için o aracın yaşının (bugünkü yıl-üretim yılı) 50 nin üzerinde (50 DÂHİL DEĞİL) olması gerekir. hurdabul() fonksiyonu kullanarak hurdaya çıkacak araçların tüm bilgilerinin yer aldığı listeyi ekrana yaşları büyükten küçüğe sıralı bir şekilde yazdırınız. Struct yapısı kullanılacaktır. Belirtilen fonksiyon haricinde fonksiyon kullanılamaz. #include "stdio.h" #include "stdlib.h" #include "conio.h" struct arac char model[30]; char marka[30]; char renk[30]; int fiyat; int yil; ; void hurdabul (int, struct arac []); int main () int n; printf ("kac arac var?\n"); scanf ("%d",&n); struct arac bilgi[n]; int i=0; printf ("araclarin bilgilerini giriniz\n"); for (i=0;i<n;i++) printf ("%d.arabanin\t",i+1); printf ("modeli: \n");scanf ("%s",&bilgi[i].model); printf ("markasi: \n");scanf ("%s",&bilgi[i].marka); printf ("rengi: \n");scanf ("%s",&bilgi[i].renk); printf ("fiyati: \n");scanf ("%d",&bilgi[i].fiyat); printf ("uretim yili: \n");scanf ("%d",&bilgi[i].yil); printf ("yasi 50 ve daha fazla olan hurda araclarin listesi\n"); hurdabul(n,bilgi); getch ();
void hurdabul (int n, struct arac bilgi[]) int i=0,j=0; for (i=0;i<n;i++) if ((2012-(bilgi[i].yil))>=50) printf ("modeli: %s\n",bilgi[i].model); printf ("markasi: %s\n",bilgi[i].marka); printf ("rengi: %s\n",bilgi[i].renk); printf ("fiyati: %d\n",bilgi[i].fiyat); printf ("uretim yili: %d\n",bilgi[i].yil); 2. Elemanları *5,10+ (rand() fonksiyonu yardımıyla) arasında olacak şekilde 3x5 lik bir tane matris oluşturup Bu matrisin her bir satırını kendi içinde küçükten büyüğe doğru sıralayıp matrisi ekrana yazdıran fonksiyonu yazıp test ediniz. RasgeleMatrislerUret(int A[][5])---matris üretme prototipi SıralaYazdır(int A*+*5+)---matris elemanlarını sıralayıp ekrana yazdırma prototipi Örneğin üretilen matris B*3+*5+=,,5, 8, 9, 7, 6-,,6, 10, 8, 7, 6-,,9, 8, 6, 5, 7, 7- - ise #include "stdio.h" #include "stdlib.h" #include "conio.h" #include "time.h" #define x 3 #define y 5 int main () srand(time(null)); int matris[x][y]=; int i=0,j=0; for (i=0;i<x;i++) for (j=0;j<y;j++) matris[i][j]=rand() %6 +5; for (i=0;i<x;i++) for (j=0;j<y;j++) printf ("%d\t",matris[i][j]); çıktı: B*3+*5+=,,5, 6, 7, 8, 9-,,6, 6, 7, 8, 10-,,5, 6, 7, 7, 8, 9- - olmalıdır.
printf ("\n\n"); printf ("**************************************************************\n"); printf ("dizinin satirlarinin kendi icinde kucukten buyuge sirali hali\n"); printf ("**************************************************************\n\n"); int gecici,a=0; for (i=0;i<x;i++) for (j=0;j<y-1;j++) for (a=0;a<y-1;a++) if (matris[j][a]>matris[j][a+1]) gecici=matris[j][a]; matris[j][a]=matris[j][a+1]; matris[j][a+1]=gecici; for (i=0;i<x;i++) for (j=0;j<y;j++) printf ("%d\t",matris[i][j]); printf ("\n\n"); getch (); 3. Bir matrisin her bir satırındaki elemanların toplamı, her bir sütunundaki elemanların toplamı ve iki köşegenindeki elemanların toplamı birbirine eşit ise buna sihirli matris denir. Kendisine argüman olarak verilen bir matrisin sihirli olup olmadığını test eden SihirliMatris(int A[][3]) prototipinde bir fonksiyon yazıp test ediniz. B[3][3]= 8, 1, 6, 3, 5, 7, 4, 9, 2 matrisi sihirli bir matristir. (8+1+6=3+5+7=4+9+2=8+3+4=1+5+9=6+7+2=8+5+2=6+5+4=15) #include<stdio.h> #include<conio.h> #define boyut 3 bool sihirlimatris(int [][boyut]); main() int dizi[3][3]=2,7,6,9,5,1,
4,3,8; if(sihirlimatris(dizi)) printf("sihirli matristir..."); else printf("sihirli matris değildir..."); getch(); bool sihirlimatris(int dizi[][boyut]) int satir[boyut]=0,sutun[boyut]=0,d1=0,d2=0; int k=0,l=0,m=0; for(int i=0;i<boyut;i++) for(int j=0;j<boyut;j++) if(i==j) d1+=dizi[i][j]; if(boyut-j-1==i) d2+=dizi[i][j]; l=0; k++; int say=satir[0]; int say2=sutun[0]; satir[k]+=dizi[i][j]; sutun[l]+=dizi[i][j]; l++; if(d1!=say d2!=say2) return false; for(int i=0;i<boyut;i++) if(say!=satir[i]) return false; return true;