PDA

View Full Version : acm1348:computing



ehsanrezaeefar
سه شنبه 11 خرداد 1389, 10:41 صبح
برنامه ای بنویسید که 5 عدد را از ورودی گرفته و با استفاده از 4 عدد اول و 4 عمل اصلی جمع و ضرب و تقسیم و تفریق عدد پنجم را به دست آورد
باسلام به دوستان اين كد java اين برنامه هستش:
import java.util.*;
public class Main{
public static double num[] = new double[5];
public static String p [] ={"abcd","abdc","acbd","acdb","adbc","adcb","bacd","badc","bcad","bcda","bdac","bdca","cabd","cadb","cbad","cbda","cdab","cdba","dabc","dacb","dbac","dbca","dcab","dcba"};
public static boolean flag;
public static void main(String[] args) throws Exception{
Scanner inp=new Scanner(System.in);
double i,j;
while(inp.hasNext()){
num[0] = inp.nextInt();
if(num[0]==-1)break;
num[1] = inp.nextInt();num[2] = inp.nextInt();num[3] = inp.nextInt();num[4] = inp.nextInt();

flag = false;
for(i=0;i<24;i++){
if(find(f(0,i),f(1,i),f(2,i),f(3,i))) break;
}
if(i!=24){
System.out.println((int)num[0]+" "+(int)num[1]+" "+(int)num[2]+" "+(int)num[3]+" "+(int)num[4]+" "+"OK!");
}else System.out.println((int)num[0]+" "+(int)num[1]+" "+(int)num[2]+" "+(int)num[3]+" "+(int)num[4]+" "+"NO!");
}

}
public static double f(double d, double n){
switch(p[(int)n].charAt((int)d)){
case 'a':
return num[0];
case 'b':
return num[1];
case 'c':
return num[2];
case 'd':
return num[3];
}
return 0;
}

public static boolean find(double n1,double n2, double n3, double n4){

double i,j,k,l;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
if(compute(n1,n2,n3,n4,i,j,k)) return true;
return false;
}
public static boolean compute(double n1,double n2,double n3,double n4,double i,double j,double k){

double sum;
sum = 0;

try{
//case1 (A)k(Bj(CiD))
if(i==1)
sum = n3 + n4;
else if(i==2)
sum = n3 - n4;
else if(i==3)
sum = n3 * n4;
else if(i==4)
sum = n3 / n4;

if(j==1)
sum = n2 + sum;
else if(j==2)
sum = n2 - sum;
else if(j==3)
sum = n2 * sum;
else if(j==4)
sum = n2 / sum;

if(k==1)
sum = n1 + sum;
else if(k==2)
sum = n1 - sum;
else if(k==3)
sum = n1 * sum;
else if(k==4)
sum = n1 / sum;
}catch(Exception e){}
if(sum>=num[4]-0.01 && sum<=num[4]+0.01) return true;


sum = 0;
try{
//case2 (A)k((BjC)i(D))
if(j==1)
sum = n2 + n3;
else if(j==2)
sum = n2 - n3;
else if(j==3)
sum = n2 * n3;
else if(j==4)
sum = n2 / n3;

if(i==1)
sum = sum + n4;
else if(i==2)
sum = sum - n4;
else if(i==3)
sum = sum * n4;
else if(i==4)
sum = sum / n4;

if(k==1)
sum = n1 + sum;
else if(k==2)
sum = n1 - sum;
else if(k==3)
sum = n1 * sum;
else if(k==4)
sum = n1 / sum;
}catch(Exception e){}
if(sum>=num[4]-0.01 && sum<=num[4]+0.01) return true;

sum = 0;
try{
//case3 ((AkB)j(CiD))
if(i==1)
sum = n3 + n4;
else if(i==2)
sum = n3 - n4;
else if(i==3)
sum = n3 * n4;
else if(i==4)
sum = n3 / n4;

double sum2=0;
if(k==1)
sum2 = n1 + n2;
else if(k==2)
sum2 = n1 - n2;
else if(k==3)
sum2 = n1 * n2;
else if(k==4)
sum2 = n1 / n2;

if(j==1)
sum = sum2 + sum;
else if(j==2)
sum = sum2 - sum;
else if(j==3)
sum = sum2 * sum;
else if(j==4)
sum = sum2 / sum;

}catch(Exception e){}
if(sum>=num[4]-0.01 && sum<=num[4]+0.01) return true;


sum = 0;
try{
//case4 ((Ak(BjC))iD)
if(j==1)
sum = n2 + n3;
else if(j==2)
sum = n2 - n3;
else if(j==3)
sum = n2 * n3;
else if(j==4)
sum = n2 / n3;


if(k==1)
sum = n1 + sum;
else if(k==2)
sum = n1 - sum;
else if(k==3)
sum = n1 * sum;
else if(k==4)
sum = n1 / sum;

if(i==1)
sum = sum + n4;
else if(i==2)
sum = sum - n4;
else if(i==3)
sum = sum * n4;
else if(i==4)
sum = sum / n4;

}catch(Exception e){}
if(sum>=num[4]-0.01 && sum<=num[4]+0.01) return true;


sum = 0;
try{
//case5 ((AkB)jC)iD)
if(k==1)
sum = n1 + n2;
else if(k==2)
sum = n1 - n2;
else if(k==3)
sum = n1 * n2;
else if(k==4)
sum = n1 / n2;

if(j==1)
sum = sum + n3;
else if(j==2)
sum = sum - n3;
else if(j==3)
sum = sum * n3;
else if(j==4)
sum = sum / n3;

if(i==1)
sum = sum + n4;
else if(i==2)
sum = sum - n4;
else if(i==3)
sum = sum * n4;
else if(i==4)
sum = sum / n4;

}catch(Exception e){}
if(sum>=num[4]-0.01 && sum<=num[4]+0.01) return true;
return false;
}

}

كسي كد اسمبلي 8086 اين برنامه رو داره يا كسي هست كه توضيح بده چطوري ميتونم
اين كد جاوا رو به اسمبلي تبديل كنم؟

ehsanrezaeefar
جمعه 18 تیر 1389, 17:44 عصر
یعنی کسی نیست که به من کمک کنه ؟:متفکر:

xman_1365_x
یک شنبه 07 شهریور 1389, 14:44 عصر
هنوزم نياز داري؟
اگر اسمبلي بلد باشين كه زياد سخت نيست ورودي همش تابع ، شرط ،حلقه و خروجي هم نمايش هست. اما كمي طولاني ميشه!