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

<<  August 2019  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster