واضح آرشیو وب فارسی:سایت ریسک: View Full Version : یه کمک کوچولو Mrs.Elham08-05-2009, 02:10 PM:20:با سلام خدمت دوستان دو تا تمرین دارم اگه امکان داره برام حل کنید: 1-برنامه ای بنویسید که یک عدد را در یک لیست مرتب شده به روش دودو یی جستجو کند(با ارایه مانند تقسیمات متوالی بر 2 یا لوگاریتم عدد در مبنای 2) 2-برنامه ای بنویسید تا مارپیچ زیر را چاپ کند(باتوجه به رسم در روی محور مختصات) 0 0 0 1 1 1 1 0 1 1 - 1- 0 1- 1- 1- 2 : : : : ayshin12-05-2009, 08:25 PMتوی جستجوی دو دویی باید آرایه مرتب باشه: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!دومی رو متوجه نشدم. Mrs.Elham13-05-2009, 02:45 PMبا سلام خدمت دوست عزیز .در این تمرین ارایه رو مرتب کردم بعد به روش شما دودویی نوشتم ولی اخرش خروجی جواب نداد . چیکار باید کرد.در مورد دومی اگر اعداد را روی محور رسم کنیم بصورت مارپیچ در می اید باید برنامه ای نوشت تا این خروجی را بدهد. ayshin13-05-2009, 03:37 PMاین رو باید در نظر بگیرین که جستجوی دودویی دو نوع هست یکی برای لیستهایی که به صورت صعودی مرتب شده اند و یکی برای لیستهایی که به صورت نزولی مرتب شده اند.این کد رو من برای صعودی نوشتم.اجرا هم کردم جواب داد.شما چطور نوشتین مگه؟ارور می ده؟ Mrs.Elham14-05-2009, 12:05 AMتو قسمت 1+cout<<mid ارور میده و اصلا هیچ خروجی نمی ده یعنی اگه یه عدد مثل 8 میدم که جستجو کنه به روش دودویی البته بعد از مرتب کردن نشون نمی ده که عدد 8 در کدام خانه است.مرتب کردن صعودی و نزولی را بلدم. ayshin14-05-2009, 01:56 AMشما همینو کپی کردین؟اگه نه کدتو بذار تا ببینم. Mrs.Elham14-05-2009, 09:56 AMint main() } int a[10]; int n; cout<<"please enter 10 number:"; for(int i=0;i<10;i++) } cin>>n; a[i]=n; { for(i=0;i<10;i++) } for(int j=i+1;j<10;j++) } if(a[j]>a[j] } int temp=a[j]; a[j]=a[i]; a[i]=temp; { { { int x; int dow=0; int up=n-1; int mid; while (dow<=up) } mid =(up+dow)/2; if(a[mid]==x }cout<<mid+1; break; { if(a[mid]>x) up=mid-1; else dow=mid+1; { if(dow>up) cout<<"not find !"; getch(); return 0; { ayshin14-05-2009, 12:11 PMint main() } int a[10]; int n; cout<<"please enter 10 number:"; for(int i=0;i<10;i++) 3 } cin>>n; 1 a[i]=n; { for(i=0;i<10;i++) 3 } for(int j=i+1;j<10;j++) } if(a[j]>a[j] 2 } int temp=a[j]; a[j]=a[i]; a[i]=temp; { { { int x; int dow=0; int up=n-1; 1 int mid; while (dow<=up) } mid =(up+dow)/2; if(a[mid]==x }cout<<mid+1; break; { if(a[mid]>x) up=mid-1; else dow=mid+1; { if(dow>up) cout<<"not find !"; getch(); return 0; { دلیل اینکه جواب نمی ده اینه:به قسمت های 1 نگاه کن.nیه مقدار ثابت نداره.هر بار یه n می گیری.من توی برنامم n داشتم چون نمی خواستم برنامم محدود به مثلا 5 تا عدد باشه.یه آرایه ی 50 تایی تعریف کرده بودم و طبق درخواست کاربر n رو می گرفتم تا به تعدادn عدد دریافت کنم.به تعداد n آرایه پر می شد.بقیه خالی می موند. ضمنا مرتب سازی رو مثل قسمت 2 نوشتی؟فکر کنم اینجا قاطی شده.چون اصلا معلومه که درست نیس. قسمتهای3 رو هم نیگا کن.چون وقتی که یه متغیر رو داخل یه حلقه تعریف کردی وقتی حلقه ی forتموم می شه دیگه I قابل استفاده نیس.پس باید بیرون حلقه تعریفش کنی.:11: ayshin14-05-2009, 12:14 PMاینو نوشتم.ببین کار می کنه.واسه من که کار کرد. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 656]