PDA

View Full Version : سوال: کد هموار سازی



f_g1348
دوشنبه 16 شهریور 1394, 13:18 عصر
سلام
دوستان من می خوام کدی بنویسم که بتونه دره های یک نمودار رو هموار کنه .
الگوریتم بدین صورت کار می کنه :
ابتدا یک دنباله ای از اعداد رو دریافت می کنه ( مثلا درون یک آرایه یک بعدی n عدد وجود دارد )
سپس از یکی یکی اعداد را پیمایش می کند تا دره را پیدا کند ، بدین صورت که هر عدد را با قبلی و بعدی خودش مقایسه می کنه و اگر از هر دوتا کوچکتر بود ، یعنی آن عدد دره می باشد .
حالا باید اون نقطه یا عدد را هموار کند بدین صورت که آن عدد و بعدی و قبلی رو با هم جمع کرده و بر سه تقسیم می کند و حاصل را به جای آن نقطه می گذارد .
به این نوع هموار سازی ، هموار سازی دو نقطه ای گویند ( یکی قبل و یکی بعد )
پیاده سازی این روش کاری نداره ولی
سوال :
من می خوام قبل از هموار سازی از کاربر یه عدد گرفته بشه ( مثلا r ) که میشه هموار سازی r نقطه ای ، و بعد هموار سازی انجام بشه
مشکل من در شروع پیمایش آرایه است مثلا وقتی r برابره 4 است و دومین عدد در حاله خوندنه قبلش فقط یه عدده نه دو عدد که بشه از فرمول محاسبش کرد
ممنون میشم راهنماییم کنید

FastCode
دوشنبه 16 شهریور 1394, 13:42 عصر
فکر میکنم باید از نقطه r/2 شروع کنید. تا نقطه n-((r+1)/2)
در ضمن سوالتون رو باید در بخش الگوریتم بپرسید.نه اینجا

f_g1348
دوشنبه 16 شهریور 1394, 15:20 عصر
دوست عزیز می دونم باید حلقه for بنویسم که از دومین خانه تا n-1 حرکت می کنه ( برای پیمایش اعداد ورودی ) . مشکلم در پیمایش خانه های مجاوره
قطعا هر طرفه عدد بایدr/2 عدد رو با خوده عدد جمع و تقسیم بر r+1 کرد ولی مشکل زمانیه که در یکی از طرفین عدد تعداد اعداد کمتر از r/2 باشه

FastCode
دوشنبه 16 شهریور 1394, 20:19 عصر
اگر از اولین نقطه شروع نکنید تعداد نقطه لازم در قبل از نقطه ی انتخابی وجود خواهد داشت

reza_ali202000
سه شنبه 17 شهریور 1394, 00:29 صبح
for(int n=1;n<x;n++)
if(n<n-1 && n<n+1)
n=((n-1)+(n+1)/2;

این برا دوتایی هس.
برا چندتایی هم فقط کافیه قبل از شرط یه حلقه بزاری

f_g1348
سه شنبه 17 شهریور 1394, 13:22 عصر
اینا همه درست
مشکله من چک کردن تعداد نقاط قبل از نقطه هدفه
مثلا قراره 8 نقطه چک بشه ، پس 4 نقطه قبل و 4 نقطه بعد به همراه خود عدد با هم جمع میشن و تقسیم بر 9 میشن . حالا فرض کنید عدد هدف سومین نقطه آرایه باشه پس دو تا نقطه قبل از اونه نه چهارتا . باید یه شرطی بزارم تا چک کنه نقاطی که قراره جمع بشن در بازه آرایه وجود داشته باشن . مشکله من همین شرطس