arkco
خوب داره پيش ميره
پست: 43
عضو شده در: 24 فروردین 1387
محل سکونت: آران و بیدگل
امتياز: 699
|
عنوان: پاسخ به «کمک در مورد سی پلاس پلاس» |
|
|
سلام دوستان
الگوریتم برنامه به این شکله
( برای i=0 ) در مرحله اول می یاد و اولین عدد رو از ورودی دریافت می کنه و چون این عدد ممکن نیست تکراری باشد پس لازم نیست که بررسی شود تکراری هست یا نه
( برای i=هر عددی به جز 0 ) شرط if(i>0) برقرار می شه و سپس وارد حلقه می شیم.در حلقه for(k=0;k<=i-1;k++) عددی که از ورودی در یافت شده با همه اعداد قبل از خودش مقایسه می شه . در صورتی که عدد با اعداد قبل از خودش مساوی یود حلقه ی while(x[i]==x[k]) شروع به کار می کنه و از کاربر می خواد عدد دیگری رو وارد کنه و بعد که عدد دیگری توسط کاربر وارد شد دوباره k=0 می شه و عددی که دوباره از کاربر گرفته شده با تمام اعداد قبل خودش مقایسه می شه و در صورت تکراری بودن دوباره همین قضیه تکرار می شه .
ali048 در پاسخ سوالات شما
در مورد سوال3 شما باید بگم این اتفاق با شرط if(i>0) هیچ وفت نمی افته
و این که چرا از while(x[i]==x[k]) استفاده کردم و به جاش از if(x[i]==x[k]) استفاده کردم اینه که اگر در یک مرحله یک عدد وارد بشه بعد دوباره همون عدد وارد بشه و بعد دوباره همون عدد وارد باشه این عدد تکراری در if از کاربر به عنوان عدد i+1 ام قبول می شه اما در while امکان همچین چیزی نیست چون بی نهایت بار شرط بررسی می شه و وقتی که دیگه x[i]==x[k] نباشه عدد رو به عنوان غدد i+1 ام قبول می کنه و در حافظه جا می ده.
در مورد سوال بعدی این اتفاق نمی افته چون k یکی از i کمتره
در مورد سوال 6 البته اگر من منظور شما را درست متوجه شده باشم این اتفاق تنها در صورتی می افته که اعداد تکراری وارد بشه که البته معمولی هم هست که در صورت تکراری بودن بیش ار 20 مرحله از ورودی عدد دریافت بشه .
در مورد سوال 7 k=0 می شه چون پس از در یافت عددی دیگر دوباره چک کردن اون با اعداد قبل خودش بررسی بشه و خلقه یک بار دیگر از نو انجام بشه .
در مورد سوال 8 باید بگم که continue به این دلیله که در صورت تکراری بودن عدد به اول حلقه برای بررسی مجدد منتقل شود. |
|