Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1226 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Programme informatique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programme informatique

n°2169108
daddy85
Posté le 24-12-2012 à 14:12:41  profilanswer
 

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

mood
Publicité
Posté le 24-12-2012 à 14:12:41  profilanswer
 

n°2169110
kadreg
profil: Utilisateur
Posté le 24-12-2012 à 14:43:16  profilanswer
 

la le point (1) :op


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2169999
daddy85
Posté le 05-01-2013 à 23:26:23  profilanswer
 

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 ?

n°2170000
Farian
Posté le 05-01-2013 à 23:53:22  profilanswer
 

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
n°2170009
daddy85
Posté le 06-01-2013 à 11:06:52  profilanswer
 

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

n°2170023
daddy85
Posté le 06-01-2013 à 15:04:56  profilanswer
 

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);
         
             
 
}

n°2170034
breizhbugs
Posté le 06-01-2013 à 18:37:35  profilanswer
 

tes if sont en dehors du main()


---------------
Seul Google le sait...
n°2170044
daddy85
Posté le 06-01-2013 à 20:40:20  profilanswer
 

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 ?

n°2170142
daddy85
Posté le 07-01-2013 à 20:21:53  profilanswer
 

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 ?

n°2170304
breizhbugs
Posté le 08-01-2013 à 20:38:58  profilanswer
 

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...
mood
Publicité
Posté le 08-01-2013 à 20:38:58  profilanswer
 

n°2170312
daddy85
Posté le 08-01-2013 à 22:14:24  profilanswer
 

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...

n°2170392
breizhbugs
Posté le 09-01-2013 à 11:11:32  profilanswer
 

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...
n°2170441
daddy85
Posté le 09-01-2013 à 14:10:30  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Programme informatique

 

Sujets relatifs
Programme morpion[C/Reseau] proxy FTP (simple) en C
Commenter un programmeProgramme automatisation.
Programme de dames[Jeune passionné d'informatique] Comment créer un jeu ?
programme C :jeu de cartesProgramme C++ , erreur ? Ou ça ?
[HTML5] Quels outils pour une interface graphique d'un programme JAVA?Modélisation d'un problème à l'aide d'un programme informatique
Plus de sujets relatifs à : Programme informatique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR