• 30-04-2007, 13:23:30
    #1
    S.a ustalar,
    bir ödevim var iki matrisin çarpılması ile ilgili..

    -Çok büyük boyutlu matrislerle işlem yapabilmeli (Mesela 1000x1000 gibi). Hangi boyuttan sonra programın çalışmadığı belirlenmeli.
    -Matrisler bir dosyadan okunacak (FILE,fopen,close) veya ekrandan girilecek.
    -Programda far, huge, * ve farcalloc gibi tanımlamalar bulunmalı (İki boyutlu indisler (A[i][j] gibi) yerine *A pointer tanımlamaları)
    -C++ (Dos için) programı kullanılmalı

    diye bi ödev verdiler.. işin kötüsü ne matris biliyorum nede c++ bana yardım edermisiniz? final sınavım yerine bu geçecekmiş, yani çok önemli
    Hoca hiç derslere girmedi, sorduğu sorulara bak
  • 30-04-2007, 15:10:36
    #2
    #include <stdio.h>
    int main()
    {
    int i, j;
    int matrix1[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int matrix2[3][3] = {0, 2, 4, 6, 8, 1, 3, 5, 7};
    int sonucmatrix[3][3] ;
    for (i = 0; i < 3; i ++)
    {
    for (j = 0; j < 3; j ++)
    {
    sonuc [i][j] = matrix1[i][j] + matrix2[i][j] ;
    printf ("%4d ", sonucmatrix [i][j]) ;
    }
    printf ("\n");
    }
    return 0;
    }





    buyur ...
    bizim bu denem 1. vize sorumuzdu
  • 30-04-2007, 15:14:52
    #3
    üstte verdiğim basit hali idi (biz onla yırtmıştık ) mantığı ordan anlayabilirsin

    ama senin isteklerine göre tüm istediğin özellikler olan program kolay gelsin


    -------

    #include<stdio.h>
    #include<stdlib.h>

    FILE *A;
    FILE *B;
    FILE *C;

    void main()
    {
    int x[2],y[2],k,i,j,d[2],a[10][10],b[10][10],c[10][10];

    /* Dosyalarin Acildigi Bolum*/
    A=fopen("A.txt","r");
    if(A==NULL)
    {
    printf("a dosyasi acilmadi");
    exit(1);
    }
    B=fopen("B.txt","r");
    if(B==NULL)
    {
    printf("b dosyasi acilmadi");
    exit(1);
    }
    C=fopen("C.txt","w+");
    if(C==NULL)
    {
    printf("carpim dosyasinda hata");
    exit(1);
    }

    /*Dosyadan Okutuldugu Bolum*/
    for( i=0;i<2;i++){fscanf(A, "%d",&x[i]);}
    for( i=0;i<2;i++){fscanf(B, "%d",&y[i]);}

    /*Ekranda Gosterildigi Bolum*/
    printf("A matrisi satir sutun degerleri");
    for(i=0;i<2;i++){printf("%d",x[i]);}
    printf("B matrisi satir sutun degerleri");
    for(k=0;k<2;k++){printf("%d",y[k]);}

    /*kontrollerin yapıldığı*/
    if(x[1]!=y[0])
    {
    printf("matrisler carpilamaz!");
    exit(1);
    }
    if(x[1]>10||x[0]>10)
    {
    printf("10 dan buyuk deger girmeyin!!");
    printf("");
    exit(1);
    }
    if(y[0]>10||y[1]>10)
    {
    printf("10 dan buyuk deger girmeyin!!");
    exit(1);
    }

    /* matrislerin dosyadan okutulduğu bolum*/
    for(i=0;i<x[0];i++)
    {
    for(j=0;j<x[1];j++){fscanf(A,"%d",&a[i][j]);}
    }
    for(i=0;i<y[0];i++)
    {
    for(j=0;j<y[1];j++){fscanf(B,"%d",&b[i][j]);}
    }

    /* matrislerin carpıldığı bolum*/
    for(i=0;i<x[0];i++)
    {
    for(j=0;j<y[1];j++)
    {
    c[i][j]=0;
    for(k=0;k<y[0];k++)
    {
    c[i][j]=c[i][j]+a[i][k]*b[k][j];
    }
    }
    }
    fprintf(C,"%d",x[0]);
    fprintf(C,"%d",y[1]);
    for(i=0;i<x[0];i++)
    {
    for(j=0;j<y[1];j++)
    {
    fprintf(C, "%d ",c[i][j]);
    }
    fprintf(C,"");
    }
    fclose(A);
    fclose(B);
    fclose(C);
    }
  • 30-04-2007, 15:17:49
    #4
    maniakcoder adlı üyeden alıntı: mesajı görüntüle
    #include <stdio.h>
    int main()
    {
    int i, j;
    int matrix1[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int matrix2[3][3] = {0, 2, 4, 6, 8, 1, 3, 5, 7};
    int sonucmatrix[3][3] ;
    for (i = 0; i < 3; i ++)
    {
    for (j = 0; j < 3; j ++)
    {
    sonuc [i][j] = matrix1[i][j] + matrix2[i][j] ;
    printf ("%4d ", sonucmatrix [i][j]) ;
    }
    printf ("\n");
    }
    return 0;
    }





    buyur ...
    bizim bu denem 1. vize sorumuzdu
    matrix he güsel
    bu arada son eklediğin mesajdakileri nette gördüm fakat.. kafamı karıştıran biyer var..
    Alıntı
    (İki boyutlu indisler (A[i][j] gibi) yerine *A pointer tanımlamaları)
    demiş hoca, şimdi bu kodlar buna uygunmu? yoksa bu indisleri değiştirmek zorundamıyım ben anlamadım bişi yaw, anlayarak yapmak istiyorum da hoca bide açıklama fln ekliyo, nerde ne yapıldığı falan cart curt.. ben biraz araştırıyım en iyisi şu indisleri pointerları fln
    bu arada çok sağol yardımın için

    ----

    hımmm indisler dizi içersindeki char oluyo galiba a[b][c] de 2 boyutlu indis oluyo demekki bunu öğrendik sırada pointerlar var

    ---

    pointerları bi türlü anlayamadım, pffff
  • 09-03-2008, 13:06:07
    #5
    bakın sisteme ya bende aynı okulda okuyorum hoca donem başinda derse girdi.
    herkes odev seçti finallerde teslim edicez.
    4 saat lık ders hoca derse artık girmicekmiş sizce bu hocanın aldığı para helalmi.
    biz biliyorduk ta niye geldik, veya boyle olacaksa 4 saat niye ayırıyorlar ...
    bu kafa ile bu ülke hiç bir yere gidemez...
    sonra meydanlara çıkıyorlar Türkiye Laik Tir laik kalacak olaya bak ya adamlar kurmuş ne güzel sistem ...)))
  • 09-03-2008, 13:10:15
    #6
    kardeşim benim sorunum da Dizi değişkende pointer nasıl kullanılıyor gerçek anlamda ne işe yarıyor bu teknik olarak nasıl bir avantajı var dizi değişken pointer örnek kodu atabilirmisiniz...
  • 20-12-2008, 14:14:39
    #7
    Sondan başa doğru tariyorum programları
    burada verilen örnekler hep statik yani dizi boyutları belli oysaki değişken olmalı yani dinamik dizi kullanılmalı bu sayede istediğin boyutta çalışabilirsin. Görsel olarakda matrislerin toplama ve carpma işlemlerinide memo icerisinde uygun sekilde gosterdim.Program C++ Builder 6 uyumludur. Fakat download edilen dosyanın içindeki tüm exeler sistem ve bilgisayar bağımsızdır. Tüm windows makinelerde calısır.
    yayınladığım tüm kodlar tamamen kendi kodlarımdır.
    Matris Toplama ve Çarpma Hazırprogram