تمرین چاپ برعکس با جاوا
در این نوشته تمرین “دنباله فیبوناچی به صورت برگشتی” که در وبسایت کوئرا موجود است را برای شما کاربران عزیز حل کردهایم.
تمرین چاپ برعکس با جاوا
سوال تمرین
برنامهای بنویسید که در هر مرحله یک عدد را از ورودی دریافت کند و تا زمانی که رقم صفر وارد نشده به کار خود ادامه دهد. پس از وارد شده رقم صفر این برنامه باید اعداد وارد شده را به صورت برعکس ترتیب وارد شدن چاپ نماید.
ورودی تمرین
نحوه ورودی دادن این گونه است که در هر خط یک عدد وارد میشود. تعداد اعداد در ورودی کمتر از ۱۰۰۰ است. تضمین میشود که تنها یک بار عدد ۰ در انتهای ورودی ظاهر شود و دیگر اعداد در ورودی، اعداد طبیعی حداکثر ۱۰۰۰ شوند.
خروجی تمرین
در خروجی باید در هر خط یک عدد چاپ شود.
مثال تمرین
input : 3 4 7 4 9 0 output : 9 4 7 4 3
کد تمرین
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
int number;
String result = "";
int counter = 0;
while (true) {
number = sc.nextInt();
if(number == 0)
break;
if(counter==0)
result = String.valueOf(number);
else
result = String.valueOf(number) + '\n' + result;
counter++;
}
System.out.println(result);
}
}
روش حل تمرین
ابتدا یک حلقهی بی نهایت while را با true میسازیم. سپس هر بار یک عدد را با کمک Scanner دریافت میکنیم. در بخش بعد یک شماره با نام counter داریم که اگر بار اول اجرای حلقه بود عینا عدد را در خروجی میگذاریم.
نکته: برای نمایش خروجی نهایی از متغیری با نام result استفاده کردهایم.
در دفعات بعدی حلقه بررسی میکنیم در صورتی که عدد صفر بود از حلقه خارج میشویم و مقدار خروجی را چاپ میکنیم. اگر صفر وارد نشده بود مقدار عدد جدید را به ابتدای ورودی میچسبانیم و یک کاراکتر new line که با \n ایجاد میشود را اضافه میکنیم.
حل سوال توسط کاربران
کد 1
package ArraysAndInformation;
import java.util.Scanner;
public class ReversePrint {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n[] = new int[1000];
int x;
for (int i = 0; ; i++) {
n[i] = scan.nextInt();
x = i;
if (n[i] == 0) break;
}
for (int i = (x – 1); i >= 0; i–)
System.out.println(n[i]);
}
}
کد 2
import java.util.Scanner;
public class temp {
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int num = 0, end, start, p;
int[] numbers = new int[1000];
int i = 0;
do {
num = get.nextInt();
numbers[i] = num;
i++;
} while (num != 0);
{
start = 0;
end = numbers.length - 1;
while (end > start) {
p = numbers[start];
numbers[start] = numbers[end];
numbers[end] = p;
end--;
start++;
}
for (int item : numbers) {
if(item!=0) {
System.out.println(item + " ");
}
else {
continue;
}
}
}
}
}
منبع سوال: وبسایت کوئرا
اگر روش حل بهتری دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم. اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.



















این تمرین بیشتر روی درک مفاهیم دادهساختار تمرکز داره یا صرفاً منطق حلقهها؟
این سوال بیشتر تمرکز بر یادگیری ساختمان داده دارد.
این تمرین بیشتر مهارت الگوریتمی میخواد یا صرفاً دقت توی نحوهی پیادهسازیه؟
این تمرین بیشتر روی نحوهی پیادهسازی و دقت در جزئیات تأکید داره. البته کمی منطق الگوریتمی هم لازمه، ولی تمرکز اصلی روی اینکه بتونی مراحل رو درست و تمیز کدنویسی کنی هست.
آیا این مدل تمرینها توی آزمونهای استخدامی هم مطرح میشن؟
بله، تمرینهایی از این جنس خیلی وقتها توی آزمونهای استخدامی و مصاحبهها مطرح میشن. بیشتر برای سنجش توانایی حل مسئله و تسلط روی پایههای زبان جاوا استفاده میشن.
میشود جواب سوال ها را به صورت پایتون بنویسید
در مرحله های بعدی این کار انجام میشود
با تشکر از مشارکتتون توی این نوشته.
کد شما به عنوان کد کاربران به محتوای این نوشته اضافه شد.
بسیار عالی، ممنون از مشارکت شما.