C++ Örnek kodlar

elektronikmuh

Yönetici
Yönetici
Yönetici
Katılım
13 Ocak 2007
Mesajlar
2,235
Puanları
1,866
Yaş
47
Aşağıdaki kod 10 elemanlı bir dizinin elemanlarını bubble sort sıralama algoritmasını kullanarak sıralar.
Dizinin elemanları yer değiştirlme esnasında pointer kullanılmıştır. Dev C++ v6.5.3 de denenmiştir.
Kod:
#include<iostream>
#include<iomanip>
using namespace std;
void bubleSort (int *, const int);
void swap(int *, int *);
    main ()
    {
        const int arraySize =10;
        int a[arraySize] = {2,6,4,10,12,89,68,45,37};
        bubleSort(a, arraySize);
        for (int i =0; i<arraySize;i++)
            cout<<setw(4) << a[i];
            cout << endl;
            return 0;
    }

// Fonksiyonlar Main dışında olmalı
void     bubleSort(int *array, const int size)
    {
        for(int pass=0; pass<size;pass++)
            for (int j=0; j<size-1; j++)
                if (array[j] > array [j+1])
                    swap (&array[j], &array[j+1]);
    }    
 
// Dizi Elemanlarının adresleri alınarak yerdeğiştirme yapılıyor      
void swap(int *element1Ptr, int *element2Ptr) 
    {
        int hold     = *element1Ptr;
        *element1Ptr = *element2Ptr;
        *element2Ptr = hold;
    }
 
Son düzenleme:
Diğer bir örnekte dizi elemanlarını seçilen sıralama işlemine göre küçükten büyüğe veya büyükten küçüğe sıralar...
Kod:
#include<iostream>
#include<iomanip>
using namespace std;

void bubble (int[], const int,int(*) (int , int));
void swap(int *, int *);
int ascending(int,int);
int descending(int,int);

int main()
{
    const int arraySize =10;
    int order;
    int counter;
    int a[arraySize]={2,6,4,8,10,12,89,68,45,37};
    
    cout<<"Artan siralama icin 1 giriniz, \n"
        <<"Azalan siralama icin 2 giriniz";
    cin >> order;
        
    cout<<"Datalarin hafizadaki orjinal sirasi\n";
        for (counter=0; counter<arraySize; counter++)
            cout<< setw(4)<<a[counter];
        
        if (order==1)
            {
                bubble(a,arraySize,ascending);
                cout<<"\n Artan Sekilde Siralama\n";
            }
                else  //order==2
                {
                    bubble(a,arraySize,descending);
                    cout<<"Azalan Şekilde Sıralama\n";    
                }
        
    for (counter=0; counter<arraySize; counter++)
        cout<<setw(4)<<a[counter];
        
cout<<endl;
return 0;
}
    void bubble(int work[], const int size, int (*compare)(int,int))
        {
            for(int pass=1;pass<size;pass++)
                {
                    for(int count=0; count<size-1; count++)
                        {
                            if((*compare) (work[count], work[count+1]))
                                {
                                    swap(&work[count],&work[count+1]);                                    
                                } //end if
                        }//end for
                } //end for
            
        }//end bubble
        
    void swap(int *element1Ptr, int *element2Ptr) //Pointer kullanarak yer degistirme islemi
    {
        int hold     =    *element1Ptr;
        *element1Ptr =     *element2Ptr;
        *element2Ptr =     hold;
    }
    
    int ascending(int a, int b)
    {
        return b<a; //b a dan küçükse yer değiştir
    }
    
    int descending(int a, int b)
    {
        return b>a; //b a dan büyükse yer değiştir
    }
 
Pointerları anlamak için başlangıç seviyesi için güzel bir C++ örneği
Kod:
#include <iostream>
using namespace std;

int main ()
{
  int firstvalue, secondvalue;
  int * mypointer;

  mypointer = &firstvalue;
  *mypointer = 10;
  mypointer = &secondvalue;
  *mypointer = 20;
  cout << "firstvalue is " << firstvalue << '\n';
  cout << "secondvalue is " << secondvalue << '\n';
  return 0;
}
 
Bunların algoritmasını nasıl yazarız hangi mantıkla?

Ads_z3636.jpg
 

Forum istatistikleri

Konular
128,191
Mesajlar
915,727
Kullanıcılar
449,964
Son üye
lelaxi

Yeni konular

Geri
Üst