نمایش نتایج 1 تا 9 از 9

نام تاپیک: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

  1. #1

    مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    سلام
    این کدهای برنامه:

    import java.util.Scanner;
    public class find
    {
    public static void main ( String[] arguments)
    {
    Scanner input = new Scanner ( System.in );
    int a, b, c, d, e;
    int big;
    int small;
    //Get Numbers To User
    System.out.print ( "Input Number One = " );
    a = input.nextInt();
    System.out.print ( "Input Number Two = " );
    b = input.nextInt();
    System.out.print ( "Input Number Three = " );
    c = input.nextInt();
    System.out.print ( "Input Number Four = " );
    d = input.nextInt();
    System.out.print ( "Input Number Five = " );
    e = input.nextInt();
    //Search For Big Number
    if ( a>b & a>c & a>d & a>e)
    big = a;
    if ( b>a & b>c & b>d & b>e)
    big = b;
    if ( c>a & c>b & c>d & c>e)
    big = c;
    if ( d>a & d>b & d>c & d>e)
    big = d;
    if ( e>a & e>b & e>c & e>d)
    big = e;
    //Search For Small Number
    if ( a<b & a<c & a<d & a<e)
    small = a;
    if ( b<a & b<c & b<d & b<e)
    small = b;
    if ( c<a & c<b & c<d & c<e)
    small = c;
    if ( d<a & d<b & d<c & d<e)
    small = d;
    if ( e<a & e<b & e<c & e<d)
    small = e;
    //Print Result ( Find big and small Number )
    System.out.print ( "Big Number = " + big );
    System.out.print ( "Small Number = " + small );

    }
    }

    اما به متغیرهای big , small خطا میگیره؟

  2. #2

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    متغیر های small و big در متد main تعریف شدن و local variable محسوب می شوند پس نیاز به مقدار دهی اولیه دارند.


    int big = 0;
    int small = 0;

  3. #3

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    خارج از گود...
    دوست عزیز، بجای این روش برای پیدا کردن عدد کوچکتر و بزرگتر، روشهای ساده تری هم وجود داره.
    مثلا بعد از این که هر عدد از ورودی خونده شد، با متغیر small مقایسه بشه و در صورت کوچکتر بودن، اون عدد جایگزین بشه. (در این روش لازمه که اسمال در اولین ورودی بدون این که مقایسه بشه، مقدار بگیره).
    برای بزرگترین عدد هم همینطور...
    یا از آرایه استفاده کنید و بعد از ورود اطلاعات، اونها رو در آرایه ریخته و با یک حلقه ساده، و یا مرتب سازی، کوچکترین و بزرگترین رو پیدا کنید.

  4. #4

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    طبق فرمایش Rejnev

            int a = -1, b = 412, c = 1000, d = -2, e = 6;
    int iArr[] = { a, b, c, d, e };

    int big = iArr[0], small = iArr[0];
    for (int i : iArr) {
    big = Math.max(i, big);
    small = Math.min(i, small);
    }
    System.out.println("BIG " + big);
    System.out.println("SMALL " + small);

  5. #5

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    سلام
    میشه این کد را بر ای سی شارپ بنویسید لطفا
    در سی شارپ باید این کد را چطوری بنویسم کارم به همین کد گیر گرده حسابی
    لطفا راهنمایی کنید

  6. #6

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    نقل قول نوشته شده توسط پیام حیاتی مشاهده تاپیک
    سلام
    این کدهای برنامه:
    ...

    اما به متغیرهای big , small خطا میگیره؟
    اولا یه نکته؛ عملگر & برای اعمال روی بیت‌ها به کار می‌ره و برای عملگر عطف منطقی (AND) باید از && استفاده کرد (و همینطور برای OR باید از || استفاده کرد). یعنی شرط اول شما باید به این شکل باشه:

    if (a > b && a > c && a > d && a > e) {
    big = a;
    }


    ثانیا نیازی نیست ماکسیمم و مینیمم رو اینجوری پیدا کنی. می‌تونی از متد Integer.max و Integer.min بصورت تودرتو استفاده کنی:
    import java.util.Scanner;
    import static java.lang.System.out;
    import static java.lang.Integer.max;
    import static java.lang.Integer.min;

    public class MaxMin {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    int a = inputInt(scanner, "Input number one: ");
    int b = inputInt(scanner, "Input number two: ");
    int c = inputInt(scanner, "Input number three: ");
    int d = inputInt(scanner, "Input number four: ");
    int e = inputInt(scanner, "Input number five: ");

    int maximum = max(a, max(b, max(c, max(d, e))));
    int minimum = min(a, min(b, min(c, min(d, e))));

    out.println();
    out.println("Maximum: " + maximum);
    out.println("Minimum: " + minimum);
    }

    private static int inputInt(Scanner scanner, String message) {
    out.print(message);
    return scanner.nextInt();
    }
    }


    سلام
    میشه این کد را بر ای سی شارپ بنویسید لطفا
    در سی شارپ باید این کد را چطوری بنویسم کارم به همین کد گیر گرده حسابی
    لطفا راهنمایی کنید
    اینجا بخش جاواست و خلاف قوانینه که سؤالات سی‌شارپ پرسیده بشه... ولی این معادل سی‌شارپ همین برنامه‌ست:
    using System.IO;
    using System;

    class MaxMin
    {
    public static void Main()
    {
    int a = InputInt("Input number one: ");
    int b = InputInt("Input number two: ");
    int c = InputInt("Input number three: ");
    int d = InputInt("Input number four: ");
    int e = InputInt("Input number five: ");

    int maximum = Math.Max(a, Math.Max(b, Math.Max(c, Math.Max(d, e))));
    int minimum = Math.Min(a, Math.Min(b, Math.Max(c, Math.Max(d, e))));

    Console.WriteLine();
    Console.WriteLine("Maximum: " + maximum);
    Console.WriteLine("Minimum: " + minimum);
    }

    private static int InputInt(string message)
    {
    Console.Write(message);
    return Convert.ToInt32(Console.ReadLine());
    }
    }


    موفق باشید.
    آخرین ویرایش به وسیله محمد فدوی : یک شنبه 04 مرداد 1394 در 15:59 عصر

  7. #7
    [younes]
    مهمان

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    اولا یه نکته؛ عملگر & برای اعمال روی بیت‌ها به کار می‌ره و برای عملگر عطف منطقی (AND) باید از && استفاده کرد (و همینطور برای OR باید از || استفاده کرد). یعنی شرط اول شما باید به این شکل باشه:
    فرق & و && را متوجه نشدم میشه لطفا بیشتر توضیح بدهید. (اعمال بر روی بیت ها و عطف منطقی)
    همین قدر میدونم که & شروط دو طرف برسی میکنه و بعد نتیجه را برمی گردونه اما && اگر طرف چپ false بود دیگه طرف راست برسی نمیکنه و false برمیگردونه.

  8. #8
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد


  9. #9

    نقل قول: مشکل در اجرای برنامه برای پیدا کردن بزرگترین و کوچکترین عدد

    نقل قول نوشته شده توسط [younes] مشاهده تاپیک
    فرق & و && را متوجه نشدم میشه لطفا بیشتر توضیح بدهید. (اعمال بر روی بیت ها و عطف منطقی)
    همین قدر میدونم که & شروط دو طرف برسی میکنه و بعد نتیجه را برمی گردونه اما && اگر طرف چپ false بود دیگه طرف راست برسی نمیکنه و false برمیگردونه.
    اولین تفاوت: اپراتورهای منطقی (یعنی && و ||) حداقل چک رو انجام می‌دن:
    وقتی nتا گزاره رو با هم OR می‌کنیم، طبیعتا صرف اینکه یکیشون True باشه باعث می‌شه کل عبارت True بشه. به همین دلیل اپراتور OR منطقی اگه به اولین گزاره‌ی True برسه بقیه رو دیگه چک نمی‌کنه و مقدار True رو برمی‌گردونه.
    در مقابل، وقتی nتا گزاره رو با هم AND می‌کنیم، وقتی یکیشون False باشه باعث می‌شه کل عبارت False بشه و اپراتور AND منطقی هم اگه به اولین گزاره‌ی False برسه بقیه رو دیگه چک نمی‌کنه و مقدار False رو برمی‌گردونه.
    در حالی که اپراتور AND و OR بیتی تا آخر همه‌ی گزاره‌ها رو چک می‌کنن. این هم باعث کاهش کارایی برنامه می‌شه و هم ممکنه باعث بعضی خطاهای پیش‌بینی نشده بشه...
    یه برنامه‌ی تست بنویسیم:
    import static java.lang.System.out;

    public class AndOrTest {
    private static boolean imTrue() {
    out.println("I'm True");
    return true;
    }

    private static boolean imFalse() {
    out.println("I'm False");
    return false;
    }

    public static void main(String[] args) {
    out.println("\n---------( AND )----------");
    boolean and = imTrue() & imTrue() & imTrue() & imTrue() & imFalse() & imTrue() & imTrue();
    // ^ HERE ^
    out.println("true & true & true & true & false & true & true = " + and);


    out.println("\n--------( ANDAND )--------");
    boolean andand = imTrue() && imTrue() && imTrue() && imTrue() && imFalse() && imTrue() && imTrue();
    // ^ HERE ^
    out.println("true && true && true && true && false && true && true = " + andand);


    out.println("\n----------( OR )----------");
    boolean or = imTrue() | imTrue() | imTrue() | imTrue() | imFalse() | imTrue() | imTrue();
    // ^ HERE ^
    out.println("true | true | true | true | false | true | true = " + or);


    out.println("\n---------( OROR )---------");
    boolean oror = imTrue() || imTrue() || imTrue() || imTrue() || imFalse() || imTrue() || imTrue();
    // ^ HERE ^
    out.println("true || true || true || true || false || true || true = " + or);
    }
    }

    همونطوری که از خروجی هم پیداست، عملگرهای بیتی همه‌ی گزاره‌ها رو تست می‌کنن. درحالی که عملگرهای منطقی فقط تا جایی که لازمه رو چک می‌کنن (که علامت هم گذاشتم)

    دومین تفاوت: اعمال روی اعداد:
    کاربرد اصلی عملگرهای بیتی روی اعداده. خصوصا در مورد کار با پرچم‌ها (Flag). وقتی دو عدد Integer با هم AND می‌شن، بیت‌های اونا نظیر به نظیر با هم AND می‌شن و نتیجه می‌شه عددی که از AND شدن بیت‌های اعداد ورودی ساخته شده. مثلا اگه دو عدد باینری 101 (یعنی ۵) و 110 (یعنی ۶)‌ رو با هم AND کنیم نتیجه می‌شه 100 (یعنی ۴):
    System.out.println(5 & 6);

    همینطور اگه این دو عدد رو با هم OR کنیم، نتیجه می‌شه 111 (یعنی ۷):
    System.out.println(5 | 6);

    این درحالیه که در جاوا نمی‌شه از اپراتور‌های منطقی برای اعداد استفاده کرد (توی خیلی از زبان‌ها مثل سی‌ و سی‌پلاس‌پلاس و... می‌شه)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •