Δημοσιεύτηκε: 27 Αύγ 2010, 18:11
από lostinmyworld
Με λίγες γνώσεις Java προσπάθησα και έφτιαξα αυτό:
Ένα πρόγραμμα που μετατρέπει από το δεκαδικό προς το δυαδικό σύστημα. Δέχεται ως είσοδο τον δεκαδικό αριθμό (ακόμη και με κλασματικό μέρος αρκεί να οριστεί με τελεία, π.χ. 996.55) και επιστρέφει το δυαδικό αποτέλεσμα.
Προσπάθησα να το φτιάξω όσο πιο κοντά στον τρόπο που υπολογίζουμε και εμείς το αποτέλεσμα..
Κώδικας: Επιλογή όλων
import javax.swing.*;

class toBin {

int integer; //το ακέραιο μέρος του αριθμού
float real; //το κλασματικό μέρος του αριθμού
StringBuffer result=new StringBuffer();

toBin(float real){ //παίρνει ως είσοδο αριθμό και ξεχωρίζει το ακέραιο
integer=(int) real; //από το κλασματικό μέρος
this.real=real-integer;
}

void toBinary(){

for(int i=0;integer>0;i++){
//εργαζόμαστε όπως θα κάναμε και θεωρητικά
if(integer%2!=0){
integer--;
result.append('1');
}
else {
result.append('0');
}
integer=(int)integer/2;
}

result.reverse();
// αν έχει κλασματικό μέρος το θέτουμε επιπλέον στο result(αποτέλεσμα)
if(real!=0.00){
result.append('.');
do{
real*=2;
result.append((int)real);
real-=(int)real;
}while(real!=0.0000);
}
}


void show(){ //εμφανίζει το δυαδικό αποτέλεσμα
JOptionPane.showMessageDialog(null, "The number in binary is\n"+result
,"result",JOptionPane.INFORMATION_MESSAGE);
}
}

Και η κλάση που φτιάχνει το αντικείμενο (και περιέχει τη main)..
Κώδικας: Επιλογή όλων
import javax.swing.*;

public class decToBin {

public static void main(String args[]){
String s=JOptionPane.showInputDialog(null, "Write a number",
"decimal to binary",JOptionPane.QUESTION_MESSAGE);

if(s!=null){ //αν δόθηκε κάτι να δημιουργηθεί αντικείμενο
toBin binary=new toBin(Float.parseFloat(s));
binary.toBinary();
binary.show();
}
}
}

Spoiler: show
Δεν έχω βάλει όριο στους αριθμούς οπότε πιστεύω αυτό εξαρτάται από την μνήμη του εκάστοτε υπολογιστή, σωστά; Οπότε μην βάλετε και τεράστιους αριθμούς.... :oops:

Off topic:
Λοιπόν, πώς σας φαίνεται;