Problèmes programmation

Fermé
Florianedu56 Messages postés 71 Date d'inscription lundi 1 juin 2009 Statut Membre Dernière intervention 21 novembre 2015 - Modifié par BunoCS le 17/10/2013 à 21:38
AASPRONI Messages postés 67 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 21 octobre 2013 - 17 oct. 2013 à 12:31
Bonjour,
j'aimerais créer une calculatrice qui additionne deux nombres décimaux et affiche le résultat binaire, c'est un truc à faire pour l'école car je suis en option ISN mais je débute
J'ai déjà commencé, enfin ... presque terminé, je bloque au niveau de l'affichage de la somme binaire.
J'ai oublié de précisé que c'est du language java's cool mais équivalent au java.


int n1, nombre_de_depart1, n2, nombre_de_depart2, x, reste, compteur, nb , nombre_final;

// pour definir un tableau de 10 cases !

int tab1 []= new int [10];
int tab2 []= new int [10];
int tabsomme[] = new int [10];
int tabretenue[]= new int [10];
int tabtemp[]=new int [10];

void main(){
clear();
println("PROGRAMME PERMETTANT DE CALCULER LA SOMME EN BINAIRE !");

// initialisation


// lecture du 1er nombre n1 et vZrifier qu'il est bien positif !

while (n1<=0) {n1 = readInteger(" Merci de bien vouloir entrer un entier");}
nombre_de_depart1 = n1;

// lecture du 2nd nombre n2 et vZrifier qu'il est bien positif !

while (n2<=0) {n2 = readInteger(" Merci de bien vouloir entrer un entier");}
nombre_de_depart2 = n2;

// conversion du premier nombre en binaire

x=0;reste=0;compteur=0;
while (n1!=0)
{ reste=n1%2;
//if (reste==0) {reste=0;} else {reste = 1;}
if (reste==0) {reste=0;} else {reste=1;}
//x=x+reste*(int)pow(10,compteur);
x=x+reste*(int)pow(10,compteur);
tab1[compteur]=reste;
compteur=compteur+1;
n1=(int)(n1/2);
}

// conversion du second nombre en binaire

x=0;reste=0;compteur=0;
while (n2!=0)
{ reste=n2%2;
if (reste==0) {reste=0;} else {reste=1;}
x=x+reste*(int)pow(10,compteur);
tab2[compteur]=reste;
compteur=compteur+1;
n2=(int)(n2/2);
}

//remise dans l'ordre des tableaux

for (int i =0; i <10; i ++) {tabtemp[i] = tab1[9 - i];
print(tab1[9 - i]);}
println();

// euh, il y a 2 tableaux , non ?

for (int i =0; i <10; i ++) {tabtemp[i] = tab2[9 - i];
print(tab2[9 - i]);}

//affichage des deux tableaux l'un sous l'autre

println();
println();
print(nombre_de_depart1 + " = ");
for (int i=0;i<10;i++) {print(tab1[9-i]+ " ");} println(); println();

println();
print(nombre_de_depart2 + " = ");
for (int i=0;i<10;i++) {print(tab2[9-i]+ " ");} println(); println();



// calcul de la somme binaire

// somme bit ^ bit en partant de la fin
for (int i=0;i<10;i++)
{ tabsomme[9-i]= tab1[9-i] + tab2[9-i]+tabretenue[9-i];
if (tabsomme[9-i]==2) {tabsomme[9-i]=0;tabretenue[8-i]=1;}
// reste une condition ^ trouver... bah oui, faut rZflZchir un peu !
if (tabsomme[9-i]==3) {tabsomme[9-i]=1;tabretenue[8-i]=1;}
}

// affichage du nombre binaire

println();
println("Somme binaire ");

//oui, oui, faut l'afficher ici !

println();

// calcul du nombre obtenu
for (int i=0;i<10;i++) { nb=nb+tabsomme[9-i];} // Il manque des choses par ici !


println();
println();
println(" CONCLUSION ");
nombre_final=nombre_de_depart1+nombre_de_depart2;
println("la somme classique donne " + nombre_de_depart1 + " + " + nombre_de_depart2 + " = " + nombre_final);


println();

println("la somme binaire donne " + nombre_de_depart1 + " + " + nombre_de_depart2 + " = " + nb);
}

Merci de m'éclairer.

2 réponses

AASPRONI Messages postés 67 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 21 octobre 2013 8
17 oct. 2013 à 12:22
tu converti les binaires en decimal puis les fair a+b et convertir le resultat en binaires; ri de plus simple! je te donne les algo!
0
AASPRONI Messages postés 67 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 21 octobre 2013 8
17 oct. 2013 à 12:31
public static String DecimalToBinaire(int arg){
ArrayList<Integer> resultat= new ArrayList<Integer>();
try{
int leng;
String res="";
resultat.clear();

while(arg>1){
resultat.add(arg%2);
arg=(arg-(arg%2))/2;
}
resultat.add(arg);

leng=resultat.size();
for(int i=leng;i!=0;i--){
int a=resultat.get(i-1);
res=res+Integer.toString(a);
}
return res;
}
catch(NumberFormatException ex){
return "ce n'est pas un chiffre decimal";
}
}

public static int power(int a,int p){
int res=1;
for(int i=0;i<p;i++)res*=a;
return res;
}
0