hocam denklem ve bilinmeyenler dinamik olarak geldiğini başta izah ederek açıklamışım.
matrisi manuel doldurursam algoritma oluşturmuş olmam...
#include<stdio.h>
#include<stdlib.h>
int boyut=2,tepe=0,tepe2=0;
int **ekle(int **dizi,int data){
int **dizi2,j,i;
if(dizi==NULL){
dizi=(int**)malloc(sizeof(int)*2);/*bu pointera 2 tane alt dizin oluşturuyoruz.bir dinin elemanının dizin olmasını
istiyorsak çift yıldızlı poiner yapıp bunun altınada kaç tane dizin istiyorsak (malloc ile )o kadar dizin oluşturuyoruz.*/
for(i=0;i<2;i++){
dizi[i]=(int*)malloc(sizeof(int)*5); /*oluşan alt dizinlerin altına 5 tane dizin oluşturuyoruz.
dikkat edersen çift yıldzılı pointera (malloc ile)alt dizin oluştururken (int**) ile başladık.
bun da ise(iny*)'ile*/
}
}
if(tepe+1>=boyut&&tepe2==0){/*bu if altında main de oluşturduğumuz sabit dizi pointer'ı genişletiyor olduğumuz(*her tepe ne zaman boyuta
eşit olursa boyutun 4 katı kadar oluşan dizi2)dizi2 pointerına aktardıktan sonra(**) dizi2'yi dizi'ye tanımlıyoruz.
pointerlar adres gösterdiği için dizi artık dizi2'nin adresini göstermiş oluyor*** */
dizi2=(int**)malloc(sizeof(int)*boyut*4);//genişliyor.*
boyut*=2;
for(i=0;i<boyut;i++){
dizi2[i]=(int*)malloc(sizeof(int)*5);
}
for(i=0;i<tepe;i++){//**aktarım başlıyor
for(j=0;j<5;j++){
dizi2[i][j]=dizi[i][j];
}
}
dizi=dizi2;//***dizi artık dizi2'yi gösteriyor
}//if bitimi
dizi[tepe][tepe2++]=data;
if(tepe2>=5){
tepe2=0;
tepe+=1;
}
return dizi;
}
void yazdir(int **dizi){
int i,j;
for(i=0;i<=tepe;i++){
for(j=0;j<5;j++){
printf("%d ",dizi[i][j]);
}
printf("\n");
}
}
int main(){
int **dizi;
dizi=NULL;
dizi=ekle(dizi,1);
dizi=ekle(dizi,2);
dizi=ekle(dizi,3);
dizi=ekle(dizi,4);
dizi=ekle(dizi,5);
dizi=ekle(dizi,6);
dizi=ekle(dizi,7);
dizi=ekle(dizi,8);
dizi=ekle(dizi,9);
dizi=ekle(dizi,10);
dizi=ekle(dizi,11);
dizi=ekle(dizi,12);
dizi=ekle(dizi,13);
dizi=ekle(dizi,14);
dizi=ekle(dizi,15);
dizi=ekle(dizi,16);
dizi=ekle(dizi,17);
dizi=ekle(dizi,18);
dizi=ekle(dizi,19);
dizi=ekle(dizi,20);
dizi=ekle(dizi,21);
dizi=ekle(dizi,22);
dizi=ekle(dizi,23);
dizi=ekle(dizi,24);
dizi=ekle(dizi,25);
yazdir(dizi);
printf("\ntepe:%d tepe2:%d boyut:%d \n",tepe,tepe2,boyut);
return 0;
}
Eğer dediğin buysa linux'ta yazdım.windows'ta denedim ama yinede düşük ihtimal windows'ta sıkıntı çıkabilir..ek olarak aşağıda ki linki okuyabilirsin.
http://www.cagataycebi.com/programmi...amming_12.html