ورود

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



پیام حیاتی
دوشنبه 28 آذر 1390, 23:09 عصر
سلام
این کدهای برنامه:
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 خطا میگیره؟

saban56
سه شنبه 29 آذر 1390, 01:22 صبح
متغیر های small و big در متد main تعریف شدن و local variable محسوب می شوند پس نیاز به مقدار دهی اولیه دارند.


int big = 0;
int small = 0;

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

hosein.zare
سه شنبه 29 آذر 1390, 23:42 عصر
طبق فرمایش Rejnev (http://barnamenevis.org/member.php?99991-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);

h.gheidrlou
شنبه 03 مرداد 1394, 23:07 عصر
سلام
میشه این کد را بر ای سی شارپ بنویسید لطفا
در سی شارپ باید این کد را چطوری بنویسم کارم به همین کد گیر گرده حسابی
لطفا راهنمایی کنید

محمد فدوی
یک شنبه 04 مرداد 1394, 15:39 عصر
سلام
این کدهای برنامه:
...
اما به متغیرهای 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());
}
}

موفق باشید.

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

ahmad.mo74
یک شنبه 04 مرداد 1394, 16:54 عصر
http://www.tutorialspoint.com/java/java_bitwise_operators_examples.htm

http://www.tutorialspoint.com/java/java_basic_operators.htm

محمد فدوی
یک شنبه 04 مرداد 1394, 17:19 عصر
;2244638']فرق & و && را متوجه نشدم میشه لطفا بیشتر توضیح بدهید. (اعمال بر روی بیت ها و عطف منطقی)
همین قدر میدونم که & شروط دو طرف برسی میکنه و بعد نتیجه را برمی گردونه اما && اگر طرف چپ 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);
این درحالیه که در جاوا نمی‌شه از اپراتور‌های منطقی برای اعداد استفاده کرد (توی خیلی از زبان‌ها مثل سی‌ و سی‌پلاس‌پلاس و... می‌شه)