Dosyadan Matris Okuma İşlemi

matrix

Dosyadan Matris Okuma İşlemi özellikle bilgisayar mühendisliğinde okuyan öğrenciler için ödev yaparken gerekli olan bir ayrıntıdır. Hocalar genelde bir text dosyasında belirtilmiş olan bir grafın okunmasını, okunan grafa göre işlem yapılmasını ister. Graf, Adjacency matrix şeklinde oluşturulur. Okunan graf bir diziye aktarılır. Bu dizi üzerinden gerekli işlemler yapılır.

Dosyadan veri okuma işlemi için öncelikli olarak dosya yolunun belirtilmesi gereklidir. Mesela;

FILE *fp = fopen ("matris.txt", "r");

ifadesi sayesinde fp değişkenine matris.txt dosyasını okuması gerektiğini belirtiyoruz. "r" ifadesi read'den geliyor.

Daha sonra bu fp değişkenini for döngüsüne sokup satırları tek tek okutabiliriz. okuttuğumuz değerleri dizi[][] isimli diziye aktarıyoruz. Aşağıda kodları paylaştım, yorum satırları mevcuttur. Unutmayın, dizi boyutunu değiştirerek kendinize uygun hale getirebilirsiniz. Ben 5x5 matrisler için dizi oluşturdum.


#include <stdio.h>

/* ***********Algoritma Uzmanı********** */
/* ********www.algoritmauzmani.com****** */

//kendisine gonderilen dizi parametresiyle matris okuyan c fonksiyonu
void matrisOku(int dizi[5][5])
{

    int i;
  // fp ismindeki dosya tipinde değişken oluşturduk
  // bu değişken, fopen komutuyla belirtilen dosyayı açıyor
  // "r" parametresiyle (read) dosyayı okuma işlemi yapıyor.
  FILE *fp = fopen ("matris.txt", "r");

  // Dosyayı açamazsa hata mesajı gösteriyoruz
  if (fp == NULL) {
    fprintf (stderr, "Dosya acilamadi\n");
    return 255;
  }

  // fscan fonksiyonunun gereği parametre olarak
  // dosya değişkeni adı, satır sayısı ve kaydedilecek yeri belirtiyoruz
  // Matriste sayılar arasında boşlul olduğu için %d ifadeleri arasında
  // Boşluk olmasına dikkat edin
  for (i = 0; fscanf (fp, "%d %d %d %d %d", &dizi[i][0],
                                            &dizi[i][1],
                                            &dizi[i][2],
                                            &dizi[i][3],
                                            &dizi[i][4]) != EOF && i < 5; ++i);

  //Dosyamızı kapatan fonksiyon
  fclose (fp);

}

void algoritmaUzmani();
int main()
{
    int i, j, secim;
    //dizimizi main fonksiyonu içerisinde oluşturduk
    int dizi[5][5];
    //matris fonksiyonumuza boş dizimizi gönderiyoruz, o bize dolu geri getirecek
    matrisOku(dizi);

    printf("\n \n Okunan matris asagidaki gibidir \n");
    // dizimiz iki boyutlu olduğu için for içinde for döngüsü kullandık
    for(i=0; i<5; i++)
    {
        for(j=0; j<5; j++)
        {
            printf("%d ", dizi[i][j]);
        }
        //her satır okunduğunda alt satırı yazdırması için
        printf("\n");
    }

    printf("\n ilgili konuya gitmek icin klavyeden 7 rakamına basin\n");
    scanf("%d", &secim);
    if(secim == 7)
        algoritmaUzmani();
    return 0;
}

//sadece ilgili konuya gitmek icin. diger kodlar ile ilgisi yok
void algoritmaUzmani()
{
     system("C:\\Progra~2\\Google\\Chrome\\Application\\chrome.exe http://www.algoritmauzmani.com/2016/10/dosyadan-matris-okuma-islemi.html");
     printf("\n Eger asagida sistem yolu hatasi aliyorsaniz bunu onemsemeyin");
     if(system)
     {
          system("C:\\Progra~1\\Google\\Chrome\\Application\\chrome.exe http://www.algoritmauzmani.com/2016/10/dosyadan-matris-okuma-islemi.html");
          if(system)
            system("C:\\Progra~2\\Mozill~1\\firefox.exe http://www.algoritmauzmani.com/2016/10/dosyadan-matris-okuma-islemi.html");
            if(system)
                system("C:\\Progra~1\\Mozill~1\\firefox.exe http://www.algoritmauzmani.com/2016/10/dosyadan-matris-okuma-islemi.html");
     }
}
Mutlaka Okuyun!
 BFS Algoritması C Kodu Nasıl Yazılır?
 BFS Algoritması Hazır C Kodu