Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

expected identifier before numeric constant hatası

Konu, 'C / C++' kısmında arabat tarafından paylaşıldı.

  1. arabat

    arabat Üye

    Kayıt:
    18 Aralık 2008
    Mesajlar:
    128
    Beğenilen Mesajlar:
    0
    Meslek:
    vb'ydi...
    Şehir:
    İstanbul, Turkey
    arkadaşlar hatayı anlayamadım ve internette bulamadım.

    neyden kaynaklandığını açıklarsanız sevinirim.

    kod aşağıda..

    not;hatayı 32.satır için veriyor..

    Kod:
    #include <cstdlib>
    #include <iostream>
    #define BOYUT 10
    using namespace std;
    
    
    void kabarcikSiralama(int *,int);
    
    
    int main(int argc, char *argv[])
    {
        int a[] = {85,98,7,33,94,7,5,73,90,2},i = 0;
        
        cout << "dizilerin orj sirasi ; " ;
        
        for (i = 0 ; i < BOYUT ; i++)
            cout << a[i]<<"  " ;
        
        cout << endl;
        
        kabarcikSiralama(a,BOYUT);
        
        cout << "dizilerin siralanmis hali;" ;
        
        for (i = 0 ; i < BOYUT ; i++)
            cout << a[i]<<"  " ;
         
         cout << endl;
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    
    void kabarcikSiralama(int * a,BOYUT){
         void yerdegis(int * ,int *);
         
         int tur,j;
         for (tur = 0 ; tur < BOYUT - 1 ; tur++ )
             for ( j = 0 ; j < BOYUT-1 ; j++ )
                 if(a[j] > a[j + 1] )
                            yerdegis( &a[j],&a[j+1] );
                            
    }
         
    void yerdegis(int *eleman1Ptr,int * eleman2Ptr){
         int temp = *eleman1Ptr;
         *eleman1Ptr = *eleman2Ptr;
         *eleman2Ptr = temp;
         }
    
    
    
     
  2. wingless

    wingless Aktif Üye

    Kayıt:
    28 Mart 2011
    Mesajlar:
    412
    Beğenilen Mesajlar:
    0
    "void kabarcikSiralama(int * a,BOYUT)"


    İkinci parametrenin amacı nedir?
     
  3. arabat

    arabat Üye

    Kayıt:
    18 Aralık 2008
    Mesajlar:
    128
    Beğenilen Mesajlar:
    0
    Meslek:
    vb'ydi...
    Şehir:
    İstanbul, Turkey
    şu define olayından dolayı orada olması gerekmez mi?.
     
  4. wingless

    wingless Aktif Üye

    Kayıt:
    28 Mart 2011
    Mesajlar:
    412
    Beğenilen Mesajlar:
    0
    Neden gereksin ki?
     
  5. Furkan Onka Uğur

    Furkan Onka Uğur Moderatör Yetkili Kişi

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    3,711
    Beğenilen Mesajlar:
    48
    Şehir:
    Ankara
    Aslında derleyicinin verdiği uyarı anlaşılabilirmiş (derlemeden çözemedim:)). int tipinde olması gereken bir yere sabit veriyoruz. Kısacası önişlemci çalıştıktan sonra oradaki kod parçacığı şu hali alıyor:

    Kod:
    void kabarcikSiralama(int * a, 10)
    
    Ben kodu şu şekilde değiştirdim. Biraz daha işlevsel oluyor (dizinin ilk n elemanını sırala vs. gibi, aslında bu kod için çok önemli değil)
    Kod:
    #include <iostream>
    
    #define BOYUT 10
    
    using namespace std;
    
    
    void kabarcikSiralama(int *, int boyut = BOYUT);
    
    
    int main(int argc, char *argv[])
    {
        int a[BOYUT] = {85,98,7,33,94,7,5,73,90,2};
        int i = 0;
        
        cout << "dizilerin orj sirasi; " ;
        
        for (i = 0; i < BOYUT; i++)
        {
            cout << a[i] << "  " ;
        }
        
        cout << endl;
        
        kabarcikSiralama(a);//artık kabarcikSiralama(a,5) gibi ifadeler de mümkün (ilk 5 elemanı sırala)
        
        cout << "dizilerin siralanmis hali; " ;
        
        for (i = 0; i < BOYUT; i++)
        {
            cout << a[i] <<"  " ;
        }
         
        cout << endl;
        
    //  system("PAUSE"); buna gerek yok:)
        return 0;
    }
    
    void kabarcikSiralama(int * a , int boyut)
    {
         void yerdegis(int * ,int *);
         
         int tur = 0;
         int j = 0; //duyuruldukları yerde ilkleyelim
         for ( ; tur < boyut - 1 ; tur++ )
         { //küme parantezlerini koymak ilerisi için daha iyi
            for ( j = 0 ; j < boyut -1 ; j++ )
            {
                 if(a[j] > a[j + 1] )
                 {
                    yerdegis( &a[j] , &a[j+1] );
                 }
            }
        }
                            
    }
         
    void yerdegis(int *eleman1Ptr,int * eleman2Ptr)
    {
         int temp = *eleman1Ptr;
         *eleman1Ptr = *eleman2Ptr;
         *eleman2Ptr = temp;
    }