PDA

View Full Version : سوال: الگوریتم چاپ بدون تکرار



Farshadsrt
شنبه 25 دی 1395, 12:04 عصر
برنامه ای بنویسید که ۱۰۰ عدد از کاربر بگیرد و بدون‌تکرار چاپ کند؟؟؟

vahid-p
شنبه 25 دی 1395, 13:33 عصر
تمرینات درسی رو مستقیم نمیتونیم جواب بدیم.
اما به هر حال کار سختی نیست هر چند خیلی واضح توضیح ندادید منظور از بدون تکرار چیه دقیقا. برداشت من اینه 100 عددی که میگیره، از هر عدد فقط یک بار چاپ کنه. الگوریتم مختلفی میشه برای این گفت که یکی ممکنه پرفرمنسش بهتر باشه یا ... . ولی کلا چون مقیاس برنامه کوچک هست پرفرمنس هم اهمیتی نداره.
به نظر من یک آرایه از int درست کنید به اندازه 100 (در صورتی که منظور از عدد، عدد صحیح باشه). بعد یک for بنویسید که از 0 تا 99 بشماره به عنوان اندیس آرایه.
خب حالا کافیه عدد ها رو بگیری و در خونه های آرایه قرار بدی.
بعد از حلقه for که عددها رو میگیره توسط تابع Arrays.sort آرایت رو مرتب کن. و پس از مرتب سازی، می دونیم عددهای برابر کنار هم قرار میگیرن، در نتیجه یک متغیر به نام num در نظر بگیر و برابر عنصر اولیه آرایه منهای یک قرار بده (این منهای یک قرار دادن، اهمیتی نداره، فقط هدفم اینه مقدار num برابر مقدار عنصر اول نباشه)
دوباره یک حلقه for بذار که از 0 تا 99 بشماره، اگر هر عنصر آرایه برابر مقدار num نبود (یعنی قبلا چنین عددی چاپ نشده) پس اون عدد رو چاپ کن و num رو برابر عنصر کنونی قرار بده. اگر هم num برابر عنصر کنونی بود، یعنی این عدد در خونه های قبلی آرایه مشاهده شده و نیازی به چاپ کردنش نیست.
البته این روش، ترتیب عددهای ورودی رو به هم میریزه و عددها رو به ترتیب چاپ میکنه. اگر نمیخوای ترتیب رو به هم بریزه، می تونی آرایه ای که عددها رو گرفتی رو مرتب نکنی ولی هر عنصری که میخوای چاپ کنی یک بار جستجو کنی از خونه اول تا یک خونه قبل از خونه فعلی چنین عنصری دیده شده یا نه (اگر دیده شده بود چاپ نمیکنی در غیر این صورت چاپ میکنی).

ضمنا چون احتمالا در زمینه جاوا تازه کار هستید، برای گرفتن عدد از کلاس Scanner استفاده کنید. مثال:


Scanner in=new Scanner(System.in);

int x=in.nextInt();


شما سعی کنید این توضیحات رو به صورت کد بنویسید و اگر باز مشکلی بود کدتون رو اینجا قرار بدید تا بررسی بشه.