Tags:

ใครก็ได้ช่วยผมหน่อยครับ ด่วนมากๆๆ สำหรับคนที่เก่งภาษาคอมพิวเตอร์ ถ้าท่านเข้ามาแล้วช่วยดูหน่อยครับจะมีค่าตอบแทนให้ ถ้าใครโหลด bit เช่น TM , bitded ,SM , Todaybit ,torrentmove หรืออยากจะได้ invites กับค่าอัพโหลด
ขอดีว่า อาจารย์ให้ผม Project ชิ้นหนึ่งชึ่งเกี่ยวกับโปรแกรมทางคอมพิวเตอร์ คือ สามารถใช้ภาษาอะไรก็ได้
แต่ผมใช้ java อ่า เดี่ยวแสดงให้ดูครับ

No Description

นั้นเป็นโปรแกรมเกี่ยวกับการหาค่า ของ Three-address code แต่ว่า มันหาได้แค่ 3 ADDRESS CODE GENERATION เท่านั้น
ดังรูปที่ให้อ่าครับ คือรับ input = b+(cd)+(cd) ต่อมาก็จะเป็น

No Description

โดยจะสังเกตุได้ว่าโปรแกรมไม่ Error แต่ถ้าเมื่อใดผมรับค่า input เป็น a + a * (b – c) + (b – c) * d คือ
No Description

โปรแกรมจะฟ้อง Error ทันทีครับ เพราะคิดว่ามันน่าจะมากกว่า 3 ตัวอ่ารับ #ผมไม่รุ้ว่าจะแก้ codeยังไงแล้วอ่าครับ ไงก็ขอช่วยหน่อยแล้วกันนะครับ ใช้ภาษาไหนก็ได้ครับ ยิ่ง C,C++, หรือ Java ยิ่งดีครับ จะมีค่าตอบแทนให้
200000 Dent หรือาจจะมากกว่านั้น

No Description

No Description

ส่วนนี้ Code ครับ

import java.io.*;
import java.util.Scanner;

class pong
{
//a=b+(cd)+(cd)

public static void main(String args[])
{
int n,m,n1,m1,n2,n3;
String temp=null,temp1=null,temp2=null;
Scanner Sc = new Scanner(System.in);  
String s1 = Sc.nextLine();  
System.out.print("Insert Number1 : ");  
System.out.println("3 ADDRESS CODE GENERATION:");   
System.out.println("---------------------------------");

// String s1= "a=b+(cd)+(cd)";
System.out.println("INPUT");
System.out.println(s1);
StringBuffer sb=new StringBuffer(s1);
n=s1.indexOf('(');
m=s1.indexOf(')');
n1=s1.lastIndexOf('(');
m1=s1.lastIndexOf(')');
temp=s1.substring(n+1,m);
System.out.println();
System.out.println("\n OUTPUT");
System.out.println("t1="+temp);
sb.replace(n,m+1,"t1");
System.out.println(sb);
temp=sb.toString();
n1=temp.indexOf('(');
m1=temp.indexOf(')');
sb.replace(n1,m1+1,"t1");
System.out.println(sb);
temp=sb.toString();
n2=temp.indexOf("t1");
temp2=temp.substring(n2,sb.length());
System.out.println("t2="+temp2);
sb.replace(n2,sb.length(),"t2");
System.out.println(sb);
temp=sb.toString();
n3=temp.indexOf('b');
temp1=temp.substring(n3);
System.out.println("t3="+temp1);
System.out.println(s1.charAt(0)+"=t3");
}
}

อย่างเช่นว่า ให้แสดง "ดังรูป"

No Description

ปล. ถ้าผิดก็ขออภัยนะคับ พอดีส่งต้องรีบทำอ่าครับ รบกวนช่วยแก้ code ให้หน่อยครับ เพราะผมต้องส่งอาจารย์ภายในอาทิตยหน้าแล้วอ่าครับ

อันนี้คือความหมายของคำว่า Three-address Code
No Description

แต่อันนี้คือตัวอย่างอ่าครับ
No Description

นั้นนี้ code ครับ http://upload.one2car.com/download.aspx?pku=20A7F84B47WNMWZN9DM7KWR3K4KLM6

ขอบคุณครับ heloman

Get latest news from Blognone
By: hisoft
ContributorWindows PhoneWindows
on 14 February 2014 - 23:22 #679916
hisoft's picture

โดยจะสังเกตุได้ว่าโปรแกรมไม่ Error แต่ถ้าเมื่อใดผมรับค่า input เป็น a + a * (b – c) + (b – c) * d คือ
โปรแกรมจะฟ้อง Error ทันทีครับ เพราะคิดว่ามันน่าจะมากกว่า 3 ตัวอ่ารับ

ขอถามครับ (ยอมรับว่าผมอ่านข้ามๆ แบบจับใจความไม่ได้ครับ :p) นี่คือต้องการแก้ให้โปรแกรมรองรับได้มากกว่าสามตัว หรือต้องการให้โปรแกรมรู้ว่าเกินสามตัวแล้วผิดพลาด ไม่ทำต่อ หรือว่ายังไงครับ?

By: mrmamon
ContributorAndroidWindows
on 15 February 2014 - 10:20 #679963

ผมโหลดรูปไม่ขึ้นนะแต่เท่าที่อ่านๆดูผมว่า
จริงๆก็ใหเอาเรย์ลิสสแกนเก็บค่าหมดแล้วนับว่ามีกี่ตัวก็เข้าเมธอดแยกไปต่างหากสำหรับอันนั้นๆไปก็ได้

By: frost
iPhoneAndroidUbuntu
on 15 February 2014 - 16:41 #680011

temp1=temp.substring(n3); >>> temp1 = (0 < n3) ? temp.substring(n3) : temp;