سلام...خواهش میکنم زودتر کمکم کنین
تابعی میخوام که عنصر n ام را از یک آرایه حذف کنه...؟ (++C)
بازه ممنون...فقط سریعتر :11:
Printable View
سلام...خواهش میکنم زودتر کمکم کنین
تابعی میخوام که عنصر n ام را از یک آرایه حذف کنه...؟ (++C)
بازه ممنون...فقط سریعتر :11:
تا منظورتون از کمک چی باشه .
درخواست پروژه دانشجویی == خلاف قوانین
باید مقادیر آرایه رو از اخر تا محل عنصر n ام شیفت بده.یعنی n+1 رو بریزه تو n و n+2 رو بریزه تو n+1 و همینطور الی آخر.خیلی راحته.نقل قول:
تويه c از تابع strcpy استفاده كنيد.
يا
شما ميخوايد n نومين خونه رو حذف كنيد پس n+1 رو جاي n بريزيد و n+2 رو جاي n+1;
البته تابع بالا نيازي به اين كارا نداره.
اگر كتاب قومي رو داري صفحه 136 رو مطالعه كن.
البته درصورتی که بخواد از رشته استفاده کنه.نقل قول:
البته با strcpy هم باید باز هم یه خونه مشخص رو در یه خونه مشخص دیگه کپی کنه,iکه میشه همون روش بالا.
مشكل كجاست؟ رشته كه فقط شامل a,b و ... نيست. (حتي اعداد هم وقتي وارد رشته ميشوند به طور كاراكتري ذخيره ميشوند.)نقل قول:
خب اصولا بايد همون كار رو بكنه , وگرنه مطرح نميكردم!نقل قول:
چون شما گفته بودید strcpy نیاز به موارد بالا نداره.نقل قول:
در کل اگه قراره از رشته استفاده نشه یه کار اضافی است که از strcpy استفاده کنیم وقتی خیلی راحت میتونیم:
array[i]=array[i+1]
الان هم ميگم !:31:نقل قول:
كدوم ساده تره ؟؟؟کد:gets(m);
scanf("%d",&x);
strcpy(&m[x],&m[x+1]);
puts(m);
جدا از اینکه من نمیدونم شما چطور میخواهید واسه آرایه ای که int تعریف شده ,تابع strcpy رو بکار ببرید; برای شیفت کردن خانه های آرایه باید از حلقه استفاده بشه.دستوری که شما نوشتید برای رشته است و فقط یه خونه رو جا به جا میکنه و نمیتونه کل خونه های آرایه رو شیفت بده.نقل قول:
منظورتون عبارت مقابله :نقل قول:
اين كه انديس خونه اي كه قراره حذف بشه رو مشخص ميكنه !!!کد:scanf("%d",&x);
من نمي خواستم كد رو بزارم ولي ...
کد:#include<stdio.h>
#include<string.h>
#include<conio.h>
main()
{
int x;
char m[20];
gets(m);
scanf("%d",&x);
strcpy(&m[x],&m[x+1]);
puts(m);
getch();
}
اين رو امتحان كنيد و ببينيد جواب ميده يا نه ؟:46:
من میدونم منظورتون از این کد چیه دوست من.ولی این کد شما خونه های ارایه رو شیفت نمیده.واسه حذف یه خونه از آرایه باید خونه ها یکی یکی شیفت داده بشن.(کد شما این کار رو نمیکنه.)و هم اینکه فقط واسه رشته جواب میده(char) و واسه آرایه int جواب نمیده.نقل قول:
برای حذف یک خونه از آرایه باید از یه حلقه استفاده کرد و مقادیر رو یکی یکی شیفت بدیم.
به طور خلاصه:
که x خونه ای هستش که قراره حذف بشه.T تعدادکل خونه های آرایه هستش.این حلقه کل خونه ها رو از خونه ی آخر تا خونه ی مورد نظر شیفت میده.کد:
for (int i=x;i<t;i++)
array[i]=array[i+1];
تابعی که شما میگید دوست من یک خونه ی رشته رو در یک خونه ی دیگه ی رشته میریزه.
اگر در سوال خواسته شده باشه که یه خونه ی رشته رو خذف کنید با استفاده از تابع strcpy و یک حلقهمیشه اینکارو کرد.
(واسه اون قضیه که گفتید strcpy راحت تره):11:
شما مشکلت حل شد بالاخره؟یه خبر بده اینجا.نقل قول:
ممنون.
نقل قول:
چرا كد رو امتحان نميكنيد ؟!:19:
نه شيفت نميده ,ولي كاري كه ميخوايد رو انجام ميده .
اين برنامه رشته رو كپي ميكنه, ولي جايي كه شما مشخص ميكنيد پس در واقع مقدار خونه مورد نظر حذف ميشه.
فرض كنيد :
تويه مثاله بالا اين برنامه 4 رو جاي 3 كپي كرد.(انديس از 0 شروع ميشه)کد:x=2;
m=1234;
khoroji : m=124
نياز به حلقه هم نداره .
من صد در صد حرف pd رو تایید میکنم.نقل قول:
به حرفش گوش کنید.
در برنامه نویسی حتما که نباید از یک روش استفاده کرد.
مهم رسیدن به جواب از راه آسان و سریع است که pd این کار رو کرده.
تمام
حرف شما درسته ولی واسه آرایه int جواب نمیده.باید خونه هارو تماماً شیف داد.نقل قول:
بحث ما سر چیز دیگه است قربان.نقل قول:
اینکه در برنامه نویسی نباید فقط از یک روش استفاده کرد رو خودم شدیداً بهش معتقدم و شعار خود منه.
بحث سر آرایه int هستش.strcpy فقط واسه رشته جواب میده.نقل قول:
مهم رسیدن به جواب از راه آسان و سریع است که pd این کار رو کرده.