19 Nisan 2015 Pazar

Satır Temizleme Programı

     (DPU Veri Yapıları ve Algoritmalar 2013 Vize 6.soru)
     5 satırlık 3 sütunluk bir matrisimiz var. Bu matrisi bool türünde iki boyutlu bir dizi tanımlayarak oluşturacağız. Eğer matrisimizin herhangi bir satırındaki bütün değerler true ise bu satırın tamamını false yaparak temizleme işlemini gerçekleştireceğiz.


     Öncelikle kullanıcıdan matrisin elemanlarını alıp, gerekli kontrolleri yapıp temizleme işlemini bitireceğiz. Temizleme işlemini fonksiyon yardımıyla yapacağız.

Kodlar:
#include <iostream>
using namespace std;
void satir_temizle(bool dizi[][3], int satir);//fonksiyon başlığı
void main(){
    setlocale(LC_ALL,"Turkish");
    bool dizi[5][3]; //5satır ve 3sütundan oluşan bool matrisi.
    //matrise elemanları almak için for açtık.
    for(int i=0;i<5;i++){//ilk for satır satır ilerler.
        for(int j=0;j<3;j++){//içteki for sütun sütun ilerler.
        cout << i+1 <<".satırın " << j+1 << ".sütünunu giriniz: ";
            cin>> dizi[i][j];
        }
    }
    cout << "-- Oluşturduğumuz matris:"<<endl;
    //matrisi ekrana yazdırıyoruz.
    for(int i=0;i<5;i++){
        for(int j=0;j<3;j++){
        cout <<"     "<<dizi[i][j]<<" " ;    
        }
    cout << endl;
    }
    cout << " "<< endl;
    cout << "-- Satırları temizlenmiş olan matris: "<<endl;
    satir_temizle(dizi,5);//satir_temizle()fonksiyonu çağrıldı.
system("PAUSE");
}
void satir_temizle(bool dizi[][3],int satir){
    int sayac=0; // sayac değeri 3 olunca silme işlemi gerçekleşecek.
    //matrisin değerlerini kontrol etmek için for döngüsü.
    for(int i=0;i<satir;i++)
    {
        for(int j=0;j<3;j++)
        {
        if(dizi[i][j]) //matrisin i.satır j.sütur elemanı true ise
            sayac++; // sayacı bir arttır, 3sütunda true ise sayac==3 olacaktır.
        }
        //tüm satırlar true ise silme işlemi gerçekleşecek.
        if(sayac==3){ 
        for(int j=0;j<3;j++)
            dizi[i][j]= false; // ilgili satır false yapıldı.
        }
        sayac=0; // sayac diğer satırları kontrol için sıfırlandı.
    }
    //yeni oluşan matrisi ekrana yazdıralım.
    for(int i=0;i<satir;i++)
    {
        for(int j=0;j<3;j++)
        {
        cout <<"     "<<dizi[i][j]<<" " ;
            }
    cout << endl;
    }
}



Çıktıda 1-4 ve 5.satırların temizlendiğini görüyoruz. Çünkü kullanıcı bu satırların tüm elemanlarını true değer girdi.
Çıktı:

Hiç yorum yok:

Yorum Gönder