Changement de base pour la representation des nombres

fox66 Messages postés 2 Date d'inscription dimanche 30 mai 2004 Statut Membre Dernière intervention 7 juin 2004 - 30 mai 2004 à 17:13
felipelvh Messages postés 27 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 juin 2004 - 2 juin 2004 à 02:55
bonjour,

je suis debutant, je dois effectué un prog en java d'un outil pedagogique pour comprendre les pbs de changement de base pour la representation des nombres, les representations des nombres negatifs et la representation des flottants IEEE.
il s agit de concevoir une interface graphique ds laquelle par exemple
(test de changement de base):
1) est affiche un nombre entier (tire au hasard ou specifie)
2) une question est posée: par exemple traduire ce nombre en base K
3) l utilisateur fournit une reponse
4) le systeme verifie la reponse de l utilisateur et le cas echeant lui indique la bonne reponse en detaillant la marche

je vous prie de m'aidez, svp, ne serais ce que pour une partie infine.
et merci d'avance

1 réponse

felipelvh Messages postés 27 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 juin 2004
2 juin 2004 à 02:55
Salut !
j'ai vu ton post et j'ai eu envie de coder un peu... :)
Ce n'est pas tout a fait ce que tu demandes (et tant mieux..)
mais il ya a quelques parties qui pourais t'interresser :
/**********************/
public class Bases extends javax.swing.JFrame {

private final int VAL_MAX = 65535;

private StringBuffer buffer;

private int varAleatoire;

public Bases() {
buffer = new StringBuffer();

initComponents();
commencer();
}
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
scroll = new javax.swing.JScrollPane();
log = new javax.swing.JTextArea();
jPanel1 = new javax.swing.JPanel();
t_reponse = new javax.swing.JTextField();
b_valider = new javax.swing.JButton();
b_recommencer = new javax.swing.JButton();

getContentPane().setLayout(new java.awt.GridLayout(0, 1));

addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});

scroll.setViewportView(log);

getContentPane().add(scroll);

jPanel1.setLayout(new java.awt.GridLayout(3, 1));

t_reponse.setMaximumSize(new java.awt.Dimension(150, 20));
jPanel1.add(t_reponse);

b_valider.setText("valider");
b_valider.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
b_validerActionPerformed(evt);
}
});

jPanel1.add(b_valider);

b_recommencer.setText("recommencer");
b_recommencer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
b_recommencerActionPerformed(evt);
}
});

jPanel1.add(b_recommencer);

getContentPane().add(jPanel1);

pack();
}
private void commentaire(String text){
buffer.append(text + "\n");
log.setText( buffer.toString() );
}

private void commencer(){
if (buffer.length() >0)
buffer.delete(0, buffer.length() );
t_reponse.setText("");

// la fonction statique Math.random() retourne un double entre 0 et 1 ( ici entre 0 et VAL_MAX)
varAleatoire =(int)(Math.random() * VAL_MAX );

commentaire("Convertissez le nombre "+ String.valueOf( varAleatoire ) +"\nde la base 10 à la base 16\n");

}

private void b_recommencerActionPerformed(java.awt.event.ActionEvent evt) {
commencer();
}

private void b_validerActionPerformed(java.awt.event.ActionEvent evt) {
//ici on compare les chaines de caracteres mises en majuscule... pour uniformiser

String reponse16 = t_reponse.getText().toUpperCase();
String variable16 = Integer.toHexString( varAleatoire ).toUpperCase();

commentaire("Saisie: "+ reponse16 );
commentaire("solution: "+ variable16 );

if ( reponse16.equals( variable16 ) )
commentaire("Bien !");
else{
commentaire("NUL !");
detail( varAleatoire , 16);
}
}

private void detail(int valeur , int base){
commentaire("\nDétail de la conversion\n");
while( valeur > base ) {
commentaire(String.valueOf(valeur)+"/"+ String.valueOf( base ) +" = " + String.valueOf(valeur/base) + " (reste "+String.valueOf(valeur%base)+")");
valeur /= base;
}
commentaire("reste : " + String.valueOf(valeur%base) );
commentaire("lire le reste de chaque division en remontant ... etc..");
}

private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}

public static void main(String args[]) {
new Bases().show();
}

private javax.swing.JTextArea log;
private javax.swing.JPanel jPanel2;
private javax.swing.JTextField t_reponse;
private javax.swing.JButton b_valider;
private javax.swing.JPanel jPanel1;
private javax.swing.JButton b_recommencer;
private javax.swing.JScrollPane scroll;
}

voila... en esperant que ca te servira ... :)
bon courage pour la suite
0
Rejoignez-nous