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

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster