C ile NxN Matristen Sarmal Dizi Oluşturma İşlemi

Batuhan Düzgün tarafından yayınlanmıştır 9. January 2011 11:28

 
/**
Batuhan Düzgün - Sakarya University - Computer Engineering Departmant - 2010-2011
**/

#include <stdio.h>
#include <conio.h>

void MatrisElemanlariAl();
void MatrisiSarmalaDonustur();
int MatrisTarandimi();
void DiziyiEkranaYaz();

int N;
int Matris[100][100];
int SarmalDizi[10000];
int GlobalSayac=0;
int KosegeneUlastimi=0;
int Bayrak=0;

int main()
{
    MatrisElemanlariAl();
    MatrisiSarmalaDonustur();
    DiziyiEkranaYaz();
    getch();
    return 0;
}

void MatrisElemanlariAl()
{
    printf("NxN 'lik bir matris giriniz...\n");
    scanf("%d",&N);
    int i,j;
    
    for(i=1; i<=N; i++)
    {
             for(j=1; j<=N; j++)
             {
                      printf("Matris[%d][%d]= ? degerini giriniz...\n",i,j);
                      scanf("%d",&Matris[i][j]);
             }
    }
}

void MatrisiSarmalaDonustur()
{
     int i,j;
     
     SarmalDizi[GlobalSayac]=Matris[1][1];
     Matris[i][j]=(-1000000000);
     GlobalSayac++;
     i=2; j=1;
     
     while(MatrisTarandimi()!=1)
     {
         if(KosegeneUlastimi==0)
         {
                 if(Bayrak==0)
                 {
                      int k=0;
                      int t=j;
                                    
                      for(k=i; k>0; k--)
                      {
                            SarmalDizi[GlobalSayac]=Matris[k][t];
                            Matris[k][t]=(-1000000000);
                            t++;
                            GlobalSayac++;     
                      }
                    if(i!=N || j!=N)
                    {
                      int Gecici=i;
                      i=j; 
                      j=Gecici+1;
                                   
                      Bayrak=1;
                    }
                    else
                    {
                        KosegeneUlastimi=1;
                        int Gecici=j;
                        j=i;
                        i=Gecici+1;
                        Bayrak=1;
                    }
                  }
                  else if(Bayrak==1)
                  {
                        int k;
                        int t=j;
                        
                        for(k=i; k<=j; k++)
                        {
                            SarmalDizi[GlobalSayac]=Matris[k][t];
                            Matris[k][t]=(-1000000000);
                            t--;
                            GlobalSayac++;     
                        }
                        
                     if(j!=N || i!=N)
                     {
                        int Gecici=j;
                        j=i;
                        i=Gecici+1;
                        
                        Bayrak=0;
                     } 
                     else
                     {
                         KosegeneUlastimi=1;
                         int Gecici=i;
                         i=j;
                         j=Gecici+1;
                         Bayrak=0;
                     }   
                  }
          }
          else if(KosegeneUlastimi==1)
          {
               if(Bayrak==0)
               {
                      int k=0;
                      int t=j;
                                   
                      for(k=i; k>=j; k--)
                      {
                            SarmalDizi[GlobalSayac]=Matris[k][t];
                            Matris[k][t]=(-1000000000);
                            t++;
                            GlobalSayac++;     
                      }
                      
                      int Gecici=j;
                      j=i; 
                      i=Gecici+1;
                                   
                      Bayrak=1;
               }
               else if(Bayrak==1)
               {
                     int k;
                     int t=j;
                        
                     for(k=i; k<=j; k++)
                     {
                            SarmalDizi[GlobalSayac]=Matris[k][t];
                            Matris[k][t]=(-1000000000);
                            t--;
                            GlobalSayac++;     
                     }
                        
                     int Gecici=i;
                     i=j;
                     j=Gecici+1;
                        
                     Bayrak=0;
               }
          }
     }  
     
     SarmalDizi[GlobalSayac]=Matris[N][N];
     Matris[N][N]=(-1000000000); 
     GlobalSayac++;  
}

int MatrisTarandimi()
{
    int Bittimi=0;
    int i,j;
    
    for(i=1; i<=N; i++)
    {
             for(j=1; j<=N; j++)
             {
                  if(Matris[i][j]==(-1000000000))
                  {
                           Bittimi++;
                  }
             }
    }
    
    if(Bittimi==((N*N)-1))
    {
         Bittimi=1;
    }
    else
    {
        Bittimi=0;
    }
    
    return Bittimi;
}

void DiziyiEkranaYaz()
{
     int i;
     
     for(i=0; i<GlobalSayac; i++)
     { 
            printf("%d - ",SarmalDizi[i]);    
     }
}
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Qt ve C++

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  July 2018  >>
MoTuWeThFrSaSu
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

Yazıları geniş takvimde göster