Search this site

Monday, May 2, 2011

3N+1

Goal:
//genap dibagi 2
//ganjil dikali 3 ditambah 1
//digit maksimal 100 digit
//digitnya klo yg ini masih maksimum 255



Main.java:

package mat;

package math;

/**
*
* @author d_frEak
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
TigaNPlusSatu h=new TigaNPlusSatu();
h.setVisible(true);
}

}



TigaNPlusSatu.java:


package math;

import java.awt.Cursor;
import java.awt.TextArea;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.plaf.multi.MultiLabelUI;

/**
*
* @author d_frEak
*/



//genap dibagi 2
//ganjil dikali 3 ditambah 1
//digit maksimal 100 digit
public class TigaNPlusSatu extends JFrame{

public JPanel panel = new JPanel();
public JLabel tombol = new JLabel();
public TextArea jawab = new TextArea();
public JTextField text = new JTextField();

private String isi;
private int panjang=0;
private int angka[]=new int[255]; //untuk mencegah penyimpanan 1 di depan

private String sangka="";

private int a=0;

TigaNPlusSatu()
{
add(panel);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
setTitle("FUNGSI 3N+1");
setResizable(false);
setVisible(true);

//panel
panel.setLayout(null);
panel.add(tombol);
panel.add(jawab);
panel.add(text);

tombol.setBounds(100, 100, 100, 100);
jawab.setBounds(100, 300, 500, 200);
// jawab.setUI(new MultiLabelUI());
text.setBounds(100, 200, 500, 100);


//tombol
tombol.setText("Proses");
tombol.addMouseListener(new MouseListener() {

public void mouseClicked(MouseEvent e) {
proses();
}

public void mousePressed(MouseEvent e) {
}

public void mouseReleased(MouseEvent e) {
}

public void mouseEntered(MouseEvent e) {
setCursor(new Cursor(12));
}

public void mouseExited(MouseEvent e) {
setCursor(new Cursor(0));
}
});

//jawab
jawab.setText(null);

//text
text.setText(null);

}

private void proses()
{
StringToAngka();
while(panjang!=1 || angka[0]!=1) //diulang sampai 1
{
if(IsGenap()==1) //genap
{
BagiDua();
}
else //ganjil
{
TigaNPlusSatu();
}

Print();
}

sangka="";
}

private void StringToAngka()
{
isi=text.getText();
panjang=1;
if(isi==null)
{
angka[0]=0;
}
else
{
panjang=isi.length();
for(int i=0;i < panjang;i++)
{
angka[i]=Integer.parseInt(isi.substring(i, i+1));
}
}
}

private int IsGenap()
{
if(angka[panjang-1] % 2==0)
{
return(1);
}
else
{
return(0);
}
}

private int Genap(int i)
{
if(i % 2==0)
{
return(1);
}
else
{
return(0);
}
}

private void BagiDua()
{
int simpan=0;
int minusdigit=0;
if(angka[0]==1)
{
minusdigit=1;
}

for(int i=0; i < panjang; i++)
{
angka[i]=angka[i]+simpan;
if(Genap(angka[i])==1) //genap
{
simpan=0;
}
else //ganjil
{
simpan=10;
}
angka[i]=angka[i]/2;
}

if(minusdigit==1)
{
for(int i=0;i < panjang-1;i++)
{
angka[i]=angka[i+1];
}
}

panjang=panjang-minusdigit;
}

private void TigaNPlusSatu()
{
int simpan=1;
for(int i=panjang-1;i >= 0;i--)
{
angka[i]=angka[i]*3+simpan;
simpan=angka[i] / 10;
angka[i]=angka[i]%10;
}

//nambah 1 digit
if(simpan!=0)
{
for(int i=panjang-1;i >= 0;i--)
{
angka[i+1]=angka[i];
}
angka[0]=simpan;
panjang++;
}
}

private void Print()
{
for(int i=0; i < panjang; i++)
{
sangka=sangka+angka[i]+"";
}
sangka=sangka+"\n";
jawab.setText(sangka);
}
}

No comments:

Post a Comment