• 22-10-2018, 13:09:54
    #1
    Merhaba,

    Dinamik olarak bilinmeyenler ve denklemler elde ediyorum. Bunları aşağıdaki şekildeki gibi matrise atmam gerekiyor ancak nedense bir türlü yapamadım.

  • 22-10-2018, 14:59:28
    #2
    Maybell adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Dinamik olarak bilinmeyenler ve denklemler elde ediyorum. Bunları aşağıdaki şekildeki gibi matrise atmam gerekiyor ancak nedense bir türlü yapamadım.

    Bu şekilde anlattığınızda kolay kolay bir yardım çıkacağına pek inanmıyorum, komple sorunun cevabını bekliyorsunuz, ne yaptığınızı ve nerede sıkıntı yaşadığınızı kodlarıyla birlikte atarsanız eminim ki yardım etmek isteyen bir çok insan yardım edecektir.
  • 22-10-2018, 19:43:41
    #3
    oguzhane adlı üyeden alıntı: mesajı görüntüle
    Bu şekilde anlattığınızda kolay kolay bir yardım çıkacağına pek inanmıyorum, komple sorunun cevabını bekliyorsunuz, ne yaptığınızı ve nerede sıkıntı yaşadığınızı kodlarıyla birlikte atarsanız eminim ki yardım etmek isteyen bir çok insan yardım edecektir.
    Merhaba hocam,

    Attığım kısım projenin sadece küçük bir kısmı, açıkcası bence net bir şekilde ifade ettiğimi düşünüyorum.
    Proje ile bilinmeyenli denklemler elde ediyorum, bu denklemleri daha sonra matris yardımıyla çözerek bilinmeyenleri bulacağım.
    Bu denklemlerin bilinmeyen sayısı artabilirde azalabilirde, denklem sayısı artabilirde azalabilirde.
  • 23-10-2018, 17:02:23
    #4
    Maybell adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Dinamik olarak bilinmeyenler ve denklemler elde ediyorum. Bunları aşağıdaki şekildeki gibi matrise atmam gerekiyor ancak nedense bir türlü yapamadım.


    gösterdiğin şekle göre dizi oluşturulacaksa bu dizi "dizi[4][5];" şeklinde tanımlanır.ben dizi[4] bölümünü satır olarak düşünüyorum ama bu kişinin kabulüne göre değişir fark oluşturmaz.senin vermiş olduğun sayıları istediğin şekilde eklemek gerekirse ilk eleman dizi[0] dan başlar ve diz[4] ile 5. eleman olarak son bulur.buna göre ;

    dizi[0][4]=15;
    dizi[1][4]=2;
    dizi[2][4]=8;
    dizi[3][4]=33;

    gibi tanımlama yapılabilir.
    ilk satırdaki sayılar için:

    dizi[0][0]=4; dizi[0][1]=-2; dizi[0][2]=-1; dizi[0][3]=3; dizi[0][4]=15;

    gibi tanımlanabilir.
  • 23-10-2018, 19:47:49
    #5
    Dracorex adlı üyeden alıntı: mesajı görüntüle
    gösterdiğin şekle göre dizi oluşturulacaksa bu dizi "dizi[4][5];" şeklinde tanımlanır.ben dizi[4] bölümünü satır olarak düşünüyorum ama bu kişinin kabulüne göre değişir fark oluşturmaz.senin vermiş olduğun sayıları istediğin şekilde eklemek gerekirse ilk eleman dizi[0] dan başlar ve diz[4] ile 5. eleman olarak son bulur.buna göre ;

    dizi[0][4]=15;
    dizi[1][4]=2;
    dizi[2][4]=8;
    dizi[3][4]=33;

    gibi tanımlama yapılabilir.
    ilk satırdaki sayılar için:

    dizi[0][0]=4; dizi[0][1]=-2; dizi[0][2]=-1; dizi[0][3]=3; dizi[0][4]=15;

    gibi tanımlanabilir.
    hocam denklem ve bilinmeyenler dinamik olarak geldiğini başta izah ederek açıklamışım.
    matrisi manuel doldurursam algoritma oluşturmuş olmam...
  • 27-10-2018, 05:07:29
    #6
    Maybell adlı üyeden alıntı: mesajı görüntüle
    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
  • 27-10-2018, 11:53:07
    #7
    Dracorex adlı üyeden alıntı: mesajı görüntüle
    #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
    Burada tam olarak ne yaptınız anlayamadım, pointer dinamik belleklerle işimiz yoktu.
    Daha basit bir algoritma ile matrisi doldurdum teşekkürler.
  • 27-10-2018, 12:55:00
    #8
    Maybell adlı üyeden alıntı: mesajı görüntüle
    Burada tam olarak ne yaptınız anlayamadım, pointer dinamik belleklerle işimiz yoktu.
    Daha basit bir algoritma ile matrisi doldurdum teşekkürler.
    dinamik belleğe ihtiyacın olduğunu düşünmüştüm ben de dinamik matris verdim sana ama hallettiysen iyi kolay gelsin.