PDA

View Full Version : شیفت دادن یک ارایه دو بعدی به سمت چپ با حذف یک المنت



hosseinghaheri
یک شنبه 21 آذر 1395, 22:00 عصر
سلام خدمت همه ی دوستان.
من در زبان سی نیاز به کدی دارم که اگه یکی از المنت های یک ارایه را حذف کردم ، بقیه المنت های بعد از اون به سمت چپ شیفت داده بشند.
مثلا ارایه زیر را دارم

char arr[10][3]={"000","111","222,"333","444","555","666","777","888","999"};

حالا اگه مقدار arr[4] را خالی کنم ارایم به صورت زیر میشه.

char arr[10][3]={"000","111","222,"333","","555","666","777","888","999"};
حالا من نیاز به تابع یا کدی دارم که ارایه را به صورت زیر واسم مرتب کنه

char arr[10][3]={"000","111","222,"333","555","666","777","888","999",""};

میدونم کار سختی نیست، فکر میکنم با چندتا حلقه فور حل بشه!!
ولی من به خاطر بالا بودن حجم کد هام نیاز دارم که اینکار در قالب یک تابع انجام بشه.
خواستم تابعش را تعریف کنم ولی یه مشکلی هست! چطوری میتونم یه استرینگ دو بعدی را به عنوان ورودی تابع مشخص کنم؟؟؟ این کد را نوشتم ولی ارور داد void sort(char chrstr[][],int index)
ممنون میشم اگه راهنمایی کنید.

maarek
دوشنبه 22 آذر 1395, 09:51 صبح
اینطوری امتحان کن
void sort(int m, int n, char chrstr[m][n],int index)

hosseinghaheri
دوشنبه 22 آذر 1395, 11:21 صبح
ممنون ولی بازم جواب نداد.
این ارور رو میده an array can't have elements of this type

BeginnerProgrammer
دوشنبه 22 آذر 1395, 19:40 عصر
باید بصورت زیر بنویسید:

void sort(int m,int n,char **chrstr)

hosseinghaheri
سه شنبه 23 آذر 1395, 22:22 عصر
باید بصورت زیر بنویسید:

void sort(int m,int n,char **chrstr)

ممنون!
کد شما توی تعریف تابع مشکلی نداشت ولی توی فراخوانی ارور میگیره.
یعنی sort(arr) را کامپایل نمیکنه

hosseinghaheri
سه شنبه 23 آذر 1395, 22:27 عصر
با ین کد حل شد
void sort(char chrstr[][3]) :لبخند: