سوال اول


توجه: این سوال صرفا مهارت برنامه‌نویسی شما به زبان جاوا را مورد بررسی قرار می‌دهد و ارتباطی با برنامه‌نویسی اندروید ندارد.🔗

فایل RepeatInString.java را دانلود کنید. در این فایل یک کلاس به نام RepeatInString وجود دارد که یک متد خالی با نام StringInString و به صورت زیر دارد:

public int StringInString(String one, String two)
Plain text

همان‌طور که از امضای آن مشخص است، این متد دو رشته به عنوان ورودی می‌گیرد.

شما باید این متد را به نحوی کامل کنید که تعداد دفعات تکرار رشته‌ی دوم در رشته‌ی اول را بیابد و به عنوان خروجی برگرداند. به نمونه ورودی و خروجی‌هایی که در زیر آورده شده توجه کنید.

ورودی ۱:🔗

StringInString("salam", "sal") 
Plain text

خروجی ۱:🔗

1
Plain text

ورودی ۲:🔗

StringInString("golgoli", "gol")
Plain text

خروجی ۲:🔗

2
Plain text

ورودی ۳:🔗

StringInString("sasasas", "sas")
Plain text

خروجی ۳:🔗

3
Plain text

نکات:🔗

  • در صورتی که هر کدام از رشته‌های ورودی null باشند، متد مورد نظر ۰ برمی‌گرداند.
  • در صورتی که هر کدام از رشته‌های ورودی خالی باشند(یعنی رشته‌هایی با طول صفر باشند) متد مورد نظر ۰ برمی‌گرداند.

آنچه باید آپلود کنید:🔗

فقط فایل RepeatInString.java را به صورت زیپ‌شده آپلود کنید. یعنی وقتی فایل زیپ را باز می‌کنیم، فقط فایل RepeatInString.java را ببینیم.

ساختار درختی فایل ارسالی:

<Your-zip-name>.zip
    └── RepeatInString.java
Plain text

برادر فداکار


دانلود فایل پروژه

جواد و صدرا دو برادر هستند. جواد بیست سال دارد و دانشجوی کامپیوتر است و صدرا نه ساله است و طبیعتا دانش‌آموز دبستان است!

جواد تصمیم گرفته‌است که برای تولد صدرا تبلتی بخرد که روی آن یک بازی سالم بریزد و به او هدیه دهد. از آن‌جایی که جواد خودش یک پا برنامه‌نویس است، می‌خواهد خودش بازی را بنویسد. امّا جواد به دلیل تجربه‌ی کم در برنامه‌نویسی اندروید، پروژه را ناقص گذاشته تا شما تکمیل کنید.

جواد می‌خواهد یک بازی حدس عدد طبیعی بنویسد. به طوری‌که ابتدا یک بازه از اعداد توسط کاربر انتخاب شود. سپس برنامه عددی در بازه‌ی داده‌شده در نظر بگیرد. سپس کاربر با حدس هر عدد توسط کاربر، جوابی از برنامه دریافت می‌کند با این محتوا که عدد انتخابی برابر، کمتر یا بیشتر از عدد درنظر گرفته‌شده است. سپس تعداد حدس‌های کاربر نمایش داده می‌شود.

ابتدا MainActivity اجرا شده و activity_main.xml را به نمایش می‌گذارد. سپس کاربر مقدار کمینه و بیشینه‌ی بازه را در EditTextهای مربوط وارد می‌کند و با زدن دکمه‌ی submit وارد GameActivity (که activity_game.xml را نمایش می‌دهد) می‌شود. سپس با واردکردن حدس خود در قسمت مربوط و زدن دکمه‌ی submit، پیام مربوط در مورد حدس نمایش داده می‌شود.(برابر، کمتر، بیشتر) شما باید تغییرات زیر را در پروژه ایجاد کنید:

  • رنگ پس‌زمینه‌ی LinearLayoutهای اصلی برنامه را به #d3d3d3 تغییر دهید.
  • رنگ پس‌زمینه‌ی دکمه‌ها و EditText های برنامه را به #ffffff تغییر دهید.
  • ورودی EditText ها فقط می‌تواند عدد باشد.
  • پیام راهنمایی edit_max و edit_min و edit_guess به ترتیب برابر Enter max value و Enter min value و Enter your guess باشد.
  • اگر پس از فشردن دکمه‌ی submit در EditText ها مقداری وارد نشده بود، مقدار راهنمایی آن‌ها به Please enter number با رنگ #DC0A14 تغییر کند.
  • اگر مقدار واردشده در edit_min بزرگتر یا مساوی مقدار واردشده در edit_max باشد، در txt_warning عبارت Values are invalid با رنگ #DC0A14 چاپ شود.
  • پس از آن‌که مقادیر کمینه و بیشینه وارد شدند و دکمه‌ فشرده شد، در صورت خطا نداشتن، باید کلاس GameActivity شروع به کار کند. شما باید با استفاده از ساختن نمونه از کلاس Game با مقادیر کمینه و بیشینه، حدس‌های کاربر را مدیریت کنید.
  • اگر حدس واردشده توسط کاربر کمتر از مقدار کمینه‌ی واردشده یا بیشتر از مقدار بیشینه‌ی واردشده باشد، عبارت Number is not in range در txt_result نمایش داده می‌شود.
  • اگر حدس واردشده کمتر یا بیشتر از مقدار درنظر گرفته‌شده در نمونه‌ی ساخته‌شده از Game باشد، به ترتیب پیغام Enter bigger number! و Enter smaller number! در txt_result نمایش داده می‌شود.
  • اگر حدس واردشده درست بود، در txt_result عبارت You won in n tries چاپ شود به طوری‌که n تعداد تلاش‌های کاربر برای حدس‌زدن است. همچنین دکمه و EditText این صفحه باید ناپدید شوند.

فایل ناقص پروژه را دانلود کنید و تغییرات گفته‌شده را اعمال کنید. توجه فرمایید که به فایل‌های دیگر پروژه دست نزنید.

ساختار فایل ناقص پروژه (فایل‌هایی که باید تغییر دهید با ----> نمایش داده شده اند):

<Your-zip-name>.zip
├───app
│   ├───libs
│   └───src
│       ├───androidTest
│       │   └───...
│       ├───main
│       │   ├───java
│       │   │   └───ir
│       │   │       └───quera
│       │   │           └───numberguess
│       │   │               ├───Game.java    <----
│       │   │               ├───GameActivity.java    <----
│       │   │               └───MainActivity.java    <----
│       │   └───res
│       │       ├───drawable
│       │       ├───layout
│       │           ├───activity_main.xml    <----
│       │           └───activity_game.xml    <----
│       │       ├───mipmap-hdpi
│       │       ├───mipmap-mdpi
│       │       ├───mipmap-xhdpi
│       │       ├───mipmap-xxhdpi
│       │       ├───mipmap-xxxhdpi
│       │       └───values
│       └───test
│           └───java
│               └───ir
│                   └───quera
│                       └───numberguess
└───gradle
    └───wrapper
Plain text
  • تنها فایلهای موجود در آدرس زیر از پروژه شما استفاده خواهد شد بقیه فایلها از پروژه نمونه قرار داده شده خواهند بود. فایلهای اضافی شما قبل از داوری حذف میشود.

app/src/main/*

توجه: وجود پوشه app در ریشه فایل فشرده الزامی می‌باشد.🔗

ساختار درختی فایل‌های مورد داوری:

<Your-zip-name>.zip
├───main
│   │   AndroidManifest.xml
│   │
│   ├───java
│   │   └───ir
│   │       └───quera
│   │           └───numberguess
│   │                   Game.java
│   │                   GameActivity.java
│   │                   MainActivity.java
│   │
│   └───res
│       ├───drawable
│       ├───layout
│       │       activity_game.xml
│       │       activity_main.xml
│       │
│       ├───mipmap-hdpi
│       │       ic_launcher.png
│       │       ic_launcher_round.png
│       │
│       ├───mipmap-mdpi
│       │       ic_launcher.png
│       │       ic_launcher_round.png
│       │
│       ├───mipmap-xhdpi
│       │       ic_launcher.png
│       │       ic_launcher_round.png
│       │
│       ├───mipmap-xxhdpi
│       │       ic_launcher.png
│       │       ic_launcher_round.png
│       │
│       ├───mipmap-xxxhdpi
│       │       ic_launcher.png
│       │       ic_launcher_round.png
│       │
│       └───values
│               colors.xml
│               strings.xml
│               styles.xml
Plain text
  • توجه کنید که پروژه zip شده باید مستقیما در ریشه فایل zip قرار گیرد.

ورود کاربران


فایل : دانلود فایل پروژه

شرکت Quera به دنبال تولید اپلیکیشن موبایل اندروید برای سایت خود است، اولین قدم برای این منظور تولید صفحه ورود کاربران است. برای این منظور طراح گرافیکی این شرکت یک قالب اولیه برای این صفحه آماده کرده و بر روی ساختار XML پیاده سازی کرده است، وظیفه شما آن است که فرآیند submit را پیاده سازی نمایید. ابتدا باید کنترل صحت داده های ورودی بررسی شود. کنترل صحت داده ها به این صورت می باشد که:

  • هر کدام از ورودی ها باید مقدار داشته باشد در غیر این صورت پیام راهنمایی درون آن به Enter Email یا Enter Password با رنگ #FF0000 تغیر می کند.

نمونه خروجی

  • مقدار وارد شده در ورودی Email باید آدرس یک ایمیل بر اساس استاندارد RFC 5322 باشد.

  • مقدار وارد شده در Password باید حداقل ۸ کاراکتر باشد، این کارکاتر ها می توانند حروف کوچک و بزرگ، عدد و علائم @#$%& باشد که در هر پسورد حداقل یک حرف کوچک، یک حرف بزرگ، یک عدد و یکی از علائم مجاز باید حضور داشته باشد.

  • در صورت مغایرت مقدار وارد شده درون هر ورودی با شرایط فوق پیام خطای Password is not valid یا Email is not valid در بالای صفحه و در قسمت تعیین شده نمایش داده می شود. توجه کنید که در صورت اشتباه بودن هر دو ورودی هر دو پیام باید نمایش داده شوند و با کاراکتر \n از هم جدا شوند (ترتیب اهمیتی ندارد).

پس از بررسی صحت ورودی ها در صورت صحیح بودن آنها یک درخواست HTTP به یک سرور خارجی ارسال می شود. این درخواست از نوع POST می باشد که در بدنه آن یک JOSN شامل کلید های email و password به همراه مقادیر وارد شده می باشد. این درخواست به آدرس quera.ir/accounts/login ارسال می شود و پیام بازگردانی شده با فرمت HTTP درون ResultActivty نمایش داده می شود. برای ارسال این درخواست حتما از HttpURLConnection استفاده نمایید.

برای پاسخ به این سوال ابتدا فایل زیپ مربوط به این سوال را دانلود نمایید، داخل این فایل یک پروژه اندروید وجود دارد، پس از انجام تغییرات فوق پروژه اندروید را دوباره زیپ نموده و بر روی سایت بارگذاری نمایید. توجه نمایید که بجز فایل های مشخص شده به دیگر فایل های موجود در پروژه دست نزنید.**

ساختار فایل ناقص پروژه برای دانلود (فایل‌هایی که باید تغییر دهید با ----> نمایش داده شده اند):

<Your-zip-name>.zip
└───LoginPage
    ├───app
    │   ├───libs
    │   └───src
    │       ├───androidTest
    │       │   └───...
    │       ├───main
    │       │   │   AndroidManifest.xml
    │       │   ├───java
    │       │   │   └───ir
    │       │   │       └───quera
    │       │   │           └───loginpage
    │       │   │                   MainActivity.java    <----
    │       │   │                   ResultActivity.java    <----
    │       │   │
    │       │   └───res
    │       │       ├───drawable
    │       │       ├───layout
    │       │       │       activity_main.xml    <----
    │       │       │       activity_result.xml    <----
    │       │       │
    │       │       ├───mipmap-hdpi
    │       │       ├───mipmap-mdpi
    │       │       ├───mipmap-xhdpi
    │       │       ├───mipmap-xxhdpi
    │       │       ├───mipmap-xxxhdpi
    │       │       └───values
    │       │               colors.xml
    │       │               strings.xml
    │       │               styles.xml
    │       │
    │       └───test
    │           └───...
    └───gradle
        └───...
Plain text
  • تنها فایلهای موجود در آدرس زیر از پروژه شما استفاده خواهد شد بقیه فایلها از پروژه نمونه قرار داده شده خواهند بود. فایلهای اضافی شما قبل از داوری حذف میشود.

app/src/main/*

ساختار درختی فایل ارسالی:

<Your-zip-name>.zip
├───main
│   ├───java
│   │   └───ir
│   │       └───quera
│   │           └───loginpage
│   │                   MainActivity.java
│   │                   ResultActivity.java
│   └───res
│       ├───drawable
│       ├───layout
│       │       activity_main.xml
│       │       activity_result.xml
│       ├───mipmap-hdpi
│       │       ...
│       ├───mipmap-mdpi
│       │       ...
│       ├───mipmap-xhdpi
│       │       ...
│       ├───mipmap-xxhdpi
│       │       ...
│       ├───mipmap-xxxhdpi
│       │       ...
│       └───values
│               colors.xml
│               strings.xml
│               styles.xml
│
└───test
    └───...
Plain text
  • توجه کنید که پروژه zip شده باید مستقیما در ریشه فایل zip قرار گیرد.