تمرین سادهتر کوئرا با جاوا
در این نوشته تمرین سادهتر که در وبسایت کوئرا موجود است را برای شما کاربران عزیز حل کردهایم.
تمرین سادهتر کوئرا با جاوا
سوال تمرین
برنامهای بنویسید که ۴ عدد از ورودی بگیرد و حاصل جمع، میانگین، حاصل ضرب، عضو بیشینه و عضو کمینه را در خروجی چاپ کند.
ورودی تمرین
در هر یک از چهار خط ورودی یک عدد صحیح آمده است که قدر مطلق هیچ یک از آنها از ۱۰۰۰ بیشتر نیست.
خروجی تمرین
خروجی پنج خط است که به ترتیب مجموع اعداد، میانگین، ضرب، بیشینه و کمینهی باید در آنها چاپ شوند. نحوهی خروجی دادن به این صورت است که مانند نمونهی پایین باید اول نام خروجی مورد نظر سپس یک فاصله، دونقطه، فاصلهی مجدد و در آخر عدد مورد نظر با دقیقا ۶ رقم اعشار چاپ شود.
مثال تمرین
input : 1 2 3 4 output : Sum : 10.000000 Average : 2.500000 Product : 24.000000 MAX : 4.000000 MIN : 1.000000
حل تمرین
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);
float Numbers[] = new float[4];
Numbers[0] = sc.nextInt();
Numbers[1] = sc.nextInt();
Numbers[2] = sc.nextInt();
Numbers[3] = sc.nextInt();
float Sum = Numbers[0] + Numbers[1] + Numbers[2] + Numbers[3];
float Average;
if(Sum == 0)
Average = Sum - Sum;
else
Average = Sum / 4;
float Product = Numbers[0] * Numbers[1] * Numbers[2] * Numbers[3];
float MAX = Math.max(Numbers[0], Math.max(Numbers[1], Math.max(Numbers[2], Numbers[3])));
float MIN = Math.min(Numbers[0], Math.min(Numbers[1], Math.min(Numbers[2], Numbers[3])));
DecimalFormat df = new DecimalFormat("#.000000");
df.setRoundingMode(RoundingMode.CEILING);
if(Sum == 0)
System.out.println("Sum : 0.000000");
else
System.out.println("Sum : " + df.format(Sum));
if(Average == 0)
System.out.println("Average : 0.000000");
else
System.out.println("Average : " + df.format(Average));
if(Product == 0)
System.out.println("Product : 0.000000");
else
System.out.println("Product : " + df.format(Product));
if(MAX == 0)
System.out.println("MAX : 0.000000");
else
System.out.println("MAX : " + df.format(MAX));
if(MIN == 0)
System.out.println("MIN : 0.000000");
else
System.out.println("MIN : " + df.format(MIN));
}
}
روش حل تمرین
ابتدا با Scanner چهار ورودی را با تابع nextInt میگیریم. در مرحلهی بعد از جمع چهار عدد دریافت شده مقدار SUM را بدست میآوریم. بعد از بدست آوردن SUM مقدار AVERAGE را با جمع اعداد و تقسیم آنها به تعدادشان بدست میآوریم.
نکته در مورد AVERAGE: چون در این محاسبه عملگر تقسیم داریم باید بررسی کنیم که جمع اعداد مقدار 0 نداشته که خطای تقسیم بر صفر بدست بیاید.
در مرحلهی بعد ضرب اعداد را برای مقدار PRODUCT بدست میآوریم. مقدار MIN و MAX را هم با توابع موجود در کتابخانهی MATH جاوا بدست میآوریم. به کمک DecimalFormat میتوانیم اندازهی تعداد اعشار را با یک قالب فرمت بندی تعیین کنیم. در آخر هم مقادیر خروجی را طبق صورت خواسته شده چاپ میکنیم.
منبع سوال: وبسایت کوئرا
اگر روش حل بهتری دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم. اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.



















آیا روش سادهتری برای گرفتن بیشینه و کمینه بدون استفاده از Math وجود داره؟
بله، میشه بدون استفاده از Math هم بیشینه و کمینه رو محاسبه کرد. کافیست با مقایسهی شرطی (if) بین اعداد بزرگتر و کوچکتر رو پیدا کنی.
آیا میشه این کد رو به شکل فانکشنالتر نوشت تا خواناتر بشه؟
بله، میشه فانکشنالتر نوشت. مثلاً با استفاده از Stream API در جاوا 8 به بعد، کد هم کوتاهتر میشه هم خواناتر.
اگر ورودیها منفی باشن، MIN و MAX به درستی محاسبه میشن؟
اگر ورودیها منفی باشن، باز هم مقایسه درست انجام میشه. چون عملگرهای مقایسه (< و >) با اعداد منفی هم به درستی کار میکنن.
با پایتون کد کوتاه میشه؟
بله، با پایتون معمولاً کدها خیلی کوتاهتر میشن. چون توابع آماده و نحو سادهتری داره.
چرا برای ذخیره ورودیها از نوع float استفاده شده و نه int یا double؟
نوع float انتخاب شده چون هم اعداد صحیح و هم اعشاری رو پوشش میده. میشه از int یا double هم استفاده کرد، ولی float برای تمرینهای ساده انتخاب مناسبیه.