Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Programlama dersinde hocamızın vermiş olduğu bir ödev. Biraz görsellik kattım işin içine (bu yüzden kodlar biraz karışık oldu). Program sizden en başta Büyük matris ve Küçük matris için satır sütun sayısı istiyor. Daha sonra büyük matrise rastgele(1-10 arası) sayılar atanıyor ve ekrana bastırılıyor. Sağ tarafta , girilen küçük matris boyutlarına göre , siyah bir kutu içinde pencere açılıyor ve buraya ” Aranacak Dizi Elemanları ” giriliyor… Sonuç olarak girilen desen büyük desen içinde bulunursa , bulunan deseni de kare içine alıp gösteriyor… Not : Dizi elemanlarını girerken tek tek girip her girişte entera basabilirsiniz. Veya bir satırı aralarında boşluk bırakarak girip , satırın son elemanını girip entera basabilirsiniz…
Kod: Kodu kopyalamak için üzerine çift tıklayın!
#include<stdio.h>#include<conio.h>#include<windows.h>#include<time.h>#include<stdlib.h>void git(int x,int y) // Git Fonksiyonu İmleci İstediğimiz Koordinatlara Götürmeye Yarar...{ COORD koordinat; koordinat.X=x; koordinat.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),koordinat);}main(){ int a,b,i,j,sonuc=0,bx=0,by=0,kx=1,ky=0,k,l,uygunluk=0; int m1[30][30]; int m2[15][15]; system("color f0"); system("title Matris içinde Matris"); srand(time(NULL)); while(kx>bx || ky>by) { printf("Buyuk Dizi icin \nSatir = "); //Büyük Matrisin ve Küçük Matrisin Boyutlarını Alıyoruz... scanf("%d",&bx); printf("Sutun = "); scanf("%d",&by); printf("---------\nKucuk Dizi icin\nSatir = "); scanf("%d",&kx); printf("Sutun = "); scanf("%d",&ky); if(bx>25) bx=25; // Matrisin Boyutları Belli Bir Yerden Sonra Ekrana Sığmayacağından if(by>25) by=25; // Bazı kısıtlandırmalar getiriyoruz... if(kx>12) kx=12; if(ky>12) ky=12; if(bx<1) bx=1; if(by<1) by=1; if(kx<1) kx=1; if(ky<1) ky=1; if(kx>bx || ky>by) system("cls"); } system("cls"); for(a=0;a<=bx-1;a++) { for(b=0;b<=by-1;b++) //Büyük Diziye Rastgele Sayılar Atıyoruz... { m1[b][a]=rand()%10; git(2*a+1,2*b+1); printf("%d",m1[b][a]); } } git(53,1); printf("Aranacak Dizi"); for(i=1;i<=2*kx+3;i++) { for(j=1;j<=2*ky+3;j++) // Dizi Arama Bölümünün Çerçevesini Yazdırıyoruz... { if(i==1 || i==2*kx+3 || j==1 || j==2*ky+3) { git(50+i,2+j); putchar(219); } } } for(i=0;i<=kx-1;i++) { for(j=0;j<=ky-1;j++) // Aranacak Dizi Elemanlarını Giriyoruz... { git(50+2*j+3,2+2*i+3);
[I] scanf("%d",&m2
[j]); } } for(a=0;a<=bx-1;a++) { for(b=0;b<=by-1;b++) { if(m1[b][a]==m2[0][0]) //İlk Eleman Yakalandığında Diğer Elemanlar Karşılaştırılıyor... { uygunluk=0; for(k=0;k<=kx-1;k++) { for(l=0;l<=ky-1;l++) { if(m1[b+k][a+l]==m2[k][l]) // Dizi Elemanlarını Karşılaştırıyoruz... uygunluk++; // Eğer Elemanlar Birbirini Tutuyorsa "uygunluk" değişkenini bir artırıyoruz. // Ve uygunluk Değeri "kx*ky" değerine ulaşıyorsa , İki Dizi Elemanları } // Birbirini Tutuyor demektir...Bu Durumda Bulunan Diziyi Kare içine Alıyoruz. } if(uygunluk==kx*ky) { sonuc=1; for(i=0;i<=2*kx;i++) { for(j=0;j<=2*ky;j++) { git(2*a+i,2*b+j); if(i==0 && j==0) putchar(218); else if(i==2*kx && j==0) putchar(191); else if(i==0 && j==2*ky) /* Çerçeve Kenarlıkları*/ putchar(192); else if(i==2*kx && j==2*ky) putchar(217); else if(i==0 || i==2*kx) putchar(179); else if(j==0 || j==2*ky) putchar(196); } } } } } } git(51,2*ky+8); if(sonuc==0) printf("ARANILAN DIZI BULUNAMADI..."); else printf("ARANILAN DIZI BULUNDU..."); getch();}