C'de expected expression hatası

mustafaf94

Hectopat
Katılım
18 Mart 2014
Mesajlar
238
Daha fazla  
Cinsiyet
Erkek
Merhabalar,
Ben C de dizilerin satır ve sütunlarının yerlerini değiştiren bir program yazmaya çalışıyorum. Bunun için bazı methodlar yazdım fakat her yazdığım hatalı. Hatayı düzeltme konusunda da ne yapacağımı bilmiyorum. "Expected expression before int" diye bir hata alıyorum ve methodları en üstte tanımladıgım satırlarda ve methodları yazdığım yerlerin ilk satırlarında bu hatalardan olduğunu söylüyor program. Nasıl çözebileceğimi gösterebilir misiniz?


Kod:
#include <stdio.h>
#include <stdlib.h>
int main()
{void readarray(int dizi[int a][int b]);
void printarray(int dizi[int a][int b]);
void swaprows(int dizi[int a][int b])
void swapcolumns(int dizi[int a][int b])
    int r,c,secim;
    printf("\n Enter 2 integer for the array size..\n");
    scanf("%d" , &r);
    scanf("%d" , &c);
    int dizi[r][c];
    readarray(dizi);
    printarray(dizi);
    do{
            printf("\n Please select one of the choices below..\n");
            printf("\n 1-Exchange two rows..\n");
            printf("\n 2-Exchange two columns..\n");
            printf("\n 3-Exit program..\n");
        scanf("%d" , &secim);
        if(secim==1){
            swaprows(dizi);
            printarray(dizi);
        }
        else if(secim==2){
            swapcolumns(dizi);
            printarray(dizi);
        }
        else if(secim==3){
        abort();
        }
 
    }while(secim==1 || 2);
}
    void readarray(int dizi[int a][int b])
    {int i,j;
        printf("\n Please fill the array..\n");
        for( i = 0; i < a; i++)
        {   for( j = 0; j < b; j++)
            {int g=0;
                scanf("%d" , &g);
                    dizi[j]=g;
            }
        }
    }
      void printarray(int dizi[int a][int b])
        {int i,j;
         for( i = 0; i < a; i++)
        {   for( j = 0; j < b; j++)
            {
                printf("%d",dizi[j]);
            }
            printf("\n");
        }
        }
       void swaprows(int dizi[int a][int b])
       {    printf("\n Enter 2 rows to swap  rows..\n");
            int x,y,i;
            scanf("%d" , &x);
            scanf("%d" , &y);
            int array[a];
            for(i=0;i<a;i++){
            array[x]=dizi[x];
            dizi[x]=dizi[y];
            dizi[y]=array[x];
       }
       }
       void swapcolumns(int dizi[int a][int b])
       {    printf("\n Enter 2 rows to swap  columns..\n");
            int x,y,i;
            scanf("%d" , &x);
            scanf("%d" , &y);
            int array[a];
            for(i=0;i<b;i++){
            array[x]=dizi[x];
            dizi[x]=dizi[y];
            dizi[y]=array[x];
       }
       }
 
Son düzenleyen: Moderatör:
İki boyutlu diziyi bu sekilde aktaramazsin. void ( int dizi[][ <sabit bir sayi>] , int n ) tarzi olmali.
void foo( int array[][ 10 ] , int n ); Burada n dizinin satir numarasini gösterir. Dizinin sütün numarasini girmek zorundasin. Ayrica fonksiyon prototiplerinin hepsini ; ile sonladirmalisin. Yani :
Kod:
void readarray(int dizi[][ sabit bir sayi] , n);
void printarray(int dizi[][sabit bir sayi] , n);
void swaprows(int dizi[][sabit bir sayi] , n);
void swapcolumns(int dizi[][sabit bir sayi] , n);
fonksiyon prototipleri ve dolayisiyla tanimlari da bu şekilde olmali.
 
Son düzenleme:
Uyarı! Bu konu 11 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı