Programme informatique

Programme informatique - Java - Programmation

Marsh Posté le 24-12-2012 à 14:12:41    

Bonjour, alors voilà, je fais ISn dans mon lycée (informatique et science du numérique) et j'ai un travail à faire pendant les vacances.  
Seulement je ne sais pas très bien par ou commencer, pouvez-vous m'aider ?
Voilà :  
Exercice 6 : Calcul binaire
On suppose qu’un entier binaire est codé sur L bits. Il se représente par un tableau de L cellules.
Voici un code java qui crée un tableau de cellules :
final int nbCell = 30 ;
int [] EntierBinaire = new int [nbCell] ;
Compléter ce code en créant :
1) Écrire une fonction de conversion d'un nombre entier en binaire.
2) Écrire une fonction de conversion d'un nombre binaire en entier.
3) Écrire une fonction qui calcule la somme de deux nombres binaires (attention au problème de débordement).
4) Écrire une fonction d'affichage de l'écriture binaire d'un nombre.
5) Écrire un programme principal qui demande deux nombres entiers, affiche ces deux nombres avec leur
conversion en binaire, calcule la somme binaire de ces deux nombres et la convertit en décimal.
 
Je vois quoi faire, mais le code donnée me perturbe
 
pouvez-vous m'aider?
Merci

Reply

Marsh Posté le 24-12-2012 à 14:12:41   

Reply

Marsh Posté le 24-12-2012 à 14:43:16    

la le point (1) :op


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 05-01-2013 à 23:26:23    

Bonjour, j'ai régler mon problème du début, mais voilà que je suis bloqu". je n'arrive pas à coder (pour le petit 2), un tableau à 2 lignes (une pour les puissances et une autre pour le nombre binaire) et 9 colonnes. et qui en insérant le nombre binaire au plus à droite, additionne les valeurs des puissances pour lequel le bit est égale à 1 : exemple avec 12=1100
256 128 64 32 16 8 4 2 0
     1 1 0 0
8+4=12
j'ai déjà commencé :  
 
//Etape 2 : convertir un nombre binaire en décimale
void main(){
  int tableau[][] = {{256,128,64,32,16,8,4,2,0},
         {0,0,0,0,0,0,0,0,0},
             Pouvez-vous m'aider ?

Reply

Marsh Posté le 05-01-2013 à 23:53:22    

Deux remarques :  
 
 * La suite logique de 256,128,64,32,16,8,4,2 est 1, pas 0 !
 * Pourquoi déclarer ce sous tableau (256,128, ..., 2, 1) car, par définition, le i-ième élément (en commençant la numérotation à 0) est égal à 2 à la puissance (8-i) ?
 
D'ailleurs, en ordonnant le tableau dans l'autre sens, c'est encore plus simple de déterminer la valeur de l'élément i ...


Message édité par Farian le 05-01-2013 à 23:53:55
Reply

Marsh Posté le 06-01-2013 à 11:06:52    

Oui effectivement, je me suis trompé avec le 0...  
mais je ne comprends pas votre 2 eme *

Reply

Marsh Posté le 06-01-2013 à 15:04:56    

Je suis parvenu à ce programme en javas cool, mais ils me mettent qu'il y a une erreur de syntaxe : illegal start of type
  if  (a>0 ){
  ^
Pouvez-vous m'aider ?
 
//Etape 2 : convertir un nombre binaire en décimale
void main(){
 int a,b,c,d,e,f,g,h,S;
println("Quel nombre binaire convertir ?(commencer par le dernier bit du nombre binaire choisi " );
  a=readInt();
  b=readInt();
  c=readInt();
  d=readInt();
  e=readInt();
  f=readInt();
  g=readInt();
  h=readInt();
  S=0;
   
  int tableau[][] = {{128,64,32,16,8,4,2,1},
         {h,g,f,e,d,c,b,a}};
  }
   
  if  (a>0 ){
    S=S+1;
  }
  if (b>0){
   S=S+2
  }
  if  (c>0 ){
   S=S+4;
  }
  if  (d>0 ){
   S=S+8;
  }
  if  (e>0 ){
   S=S+16;
  }
  if  (f>0 ){
   S=S+32;
  }
  if  (g>0 ){
   S=S+64;
  }
  if  (h>0 ){
   S=S+128;
  }
   
  }
   
  println("Le nombre décimal est " + S);
         
             
 
}

Reply

Marsh Posté le 06-01-2013 à 18:37:35    

tes if sont en dehors du main()


---------------
Seul Google le sait...
Reply

Marsh Posté le 06-01-2013 à 20:40:20    

Oh merci !! je me suis cassé la tête dessus pendant une heure pour savoir mon erreur ! :) Le programme marche bien, cependant je regrette le fait de devoir entrer les nombres un par un, et dans le sens inverse... Aurait-il un moyen de rendre le programme plus facile ?

Reply

Marsh Posté le 07-01-2013 à 20:21:53    

Et juste un dernier petit truc, il faut ensuite que je fasse tout ça en fonction, afin de s'occuper au final que du voidmain :
void fonction_decimal_vers_binaire(int x)
{
 String binaire_un="";
 int a,c,compteur=0;
  println("Quel premier nombre transformer en binaire ? " );
 a=readInt();
 if (a==0) print("0" );
 else
 {
 while(a>1){
  c= a%2;
  a=a/2;
  compteur=compteur+1;
  if (c==1){
   binaire_un="1"+binaire_un;
  }
  else{
   binaire_un="0"+binaire_un;
  }
  if (compteur==4){
   binaire_un=" "+ binaire_un;compteur=0;
   }
   
 
  }
   
  binaire_un="1"+binaire_un;
  println("Le premier nombre binaire est "+binaire_un);
}
String binaire_deux="";
 int k,l,compteur_deux=0;
  println("Quel deuxième nombre transformer en binaire ? " );
 k=readInt();
 if (k==0) print("0" );
 else
 {
 while(k>1){
  l= k%2;
  k=k/2;
  compteur_deux=compteur_deux+1;
  if (l==1){
   binaire_deux="1"+binaire_deux;
  }
  else{
   binaire_deux="0"+binaire_deux;
  }
  if (compteur_deux==4){
   binaire_deux=" "+ binaire_deux;compteur_deux=0;
   }
 
 
  }
   
  binaire_deux="1"+binaire_deux;
  println("Le deuxième nombre binaire est "+binaire_deux);
}
}
 
void fonction_binaire_vers_decimal(int y)
{
  int i,b,j,d,e,f,g,h,S;
println("Quel premier nombre binaire convertir ?(commencer par le dernier bit du nombre binaire choisi )" );
  i=readInt();
  b=readInt();
  j=readInt();
  d=readInt();
  e=readInt();
  f=readInt();
  g=readInt();
  h=readInt();
  S=0;
   
  int tableau[][] = {{128,64,32,16,8,4,2,1},
         {h,g,f,e,d,j,b,i}};
   
   
  if  (i>0 ){
    S=S+1;
  }
  if (b>0){
   S=S+2;
  }
  if  (j>0 ){
   S=S+4;
  }
  if  (d>0 ){
   S=S+8;
  }
  if  (e>0 ){
   S=S+16;
  }
  if  (f>0 ){
   S=S+32;
  }
  if  (g>0 ){
   S=S+64;
  }
  if  (h>0 ){
   S=S+128;
  }
   
   
   
  println("Le premier nombre décimal est " + S);
   
  int I,B,J,D,E,F,G,H,U;
println("Quel deuxième nombre binaire convertir ?(commencer par le dernier bit du nombre binaire choisi )" );
  I=readInt();
  B=readInt();
  J=readInt();
  D=readInt();
  E=readInt();
  F=readInt();
  G=readInt();
  H=readInt();
  U=0;
   
  int tableau_deux[][] = {{128,64,32,16,8,4,2,1},
         {H,G,F,E,D,J,B,I}};
   
   
  if  (I>0 ){
    U=U+1;
  }
  if (B>0){
   U=U+2;
  }
  if  (J>0 ){
   U=U+4;
  }
  if  (D>0 ){
   U=U+8;
  }
  if  (E>0 ){
   U=U+16;
  }
  if  (F>0 ){
   U=U+32;
  }
  if  (G>0 ){
   U=U+64;
  }
  if  (H>0 ){
   U=U+128;
  }
   
   
   
  println("Le deuxième nombre décimal est " + U);
}
 
 
void main(){
fonction_decimal_vers_binaire(int x);
 
 
}
 
J'ai refais tout en deux fois car ils demandent de comparer deux nombres (décimal et addition binaire). Mais voilà ce que me dit le programme :
 Erreur de syntaxe ligne 154 :
  ('.class' expected) Il manque des accolades ou des parenthèses pour définir l'instruction
fonction_decimal_vers_binaire(int x);
                                  ^
Pouvez vous m'aider ?

Reply

Marsh Posté le 08-01-2013 à 20:38:58    

Tu ne sais pas appeler une fonction correctement?  
Revoit tes cours pour apprendre à utiliser une fonction...
Que vient faire le int là? et que vaut x?


---------------
Seul Google le sait...
Reply

Marsh Posté le 08-01-2013 à 20:38:58   

Reply

Marsh Posté le 08-01-2013 à 22:14:24    

Non, je suis allé sur la mauvaise voie je viens de m'en rendre compte... pour convertir un nombre binaire en son décimal, j'ai refais mon programme : //Etape 2 : convertir un nombre binaire en décimale
 
void main(){
 
final int nbCell = 30 ;
int [] tableau = new int [nbCell] ;
int [] tableau_deux = new int [nbCell] ;
int S;
int n;  
println("Quel nombre binaire convertir ?(commencer par le dernier bit du nombre binaire choisi )" );
 
   
 tableau[29] = 1 ;
 S=0;  
 n=0;
 tableau_deux[29]=readInt();
     
     while (tableau_deux[29-n]==1 || tableau_deux[29-n]==0){  
      tableau_deux[29-n]=readInt();
      tableau[29-n]=tableau[29]^2;
      n=n+1;
       
       
      if  (tableau_deux[29-n]>0 ){
    S=S+tableau[29-n];
  }
     }
   
  println("Le nombre décimal est " + S );
         
}
 
Mais voilà, je n'arrive pas à faire stopper la demande du bit après avoir rentré mettons 0011 je dois sans cesse continuer (jusqu'a 30 fois) de mettre des 0 (inutile), il y a t il un moyen de cesser cela ? car dans mon while il est précisé si mon tableau-deux est égale à 1 ou 0, mais j'ai beau mettre un nombre supérieur cela n'y change rien...

Reply

Marsh Posté le 09-01-2013 à 11:11:32    

La conversion binaire->décimale est un problème extrêment courant. Je pense que tu devrais faire une recherche sur internet pour voir coment les autres font...
 


---------------
Seul Google le sait...
Reply

Marsh Posté le 09-01-2013 à 14:10:30    

Le problème est qu'il n'y a rien en programme avec javascool...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed