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

  FORUM HardWare.fr
  Programmation
  C

  probleme programme passage differentes bases

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme programme passage differentes bases

n°1738910
benjolebar​bar
Posté le 29-05-2008 à 14:50:11  profilanswer
 

voila j'ai un problème mon programme que voici (plus bas !!) compile mais quand je l'applique il me dit erreur de segmentation(core dumped).
il n'affiche que un des deux "affiche 1"(a oui aussi il ne marche pas pour les base inférieurs à 10(dans le else)
 

Code :
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h> /*sert reeellement a quelquechose ?? metonnerait fort !!*/
  4. void clear(int tableau[50])
  5. {
  6. int i;
  7. for(i=0;i<50;i++)
  8. {
  9.  tableau[i]=20;
  10. }
  11. }
  12. void affiche(int tableau[50])
  13. {
  14. int i;
  15. printf("\nle nombre est :" );
  16. for (i=0;i<50;i++)
  17. {
  18.  if (tableau[i]==20)
  19.  {printf("." );}
  20.  else
  21.  {
  22.   printf("%i",tableau[i]);
  23.  }
  24. }
  25. }
  26. int main()
  27. {
  28. //long=int juste pour info c'est aussi des entiers ! reel : float ou double . plutot float pas besoin du double !
  29. int nombre,reste,base,resultat,basef;  // tu entres ce qu'il faut dans nombre en base 10 et base d'arrivée (je te laisse faire avec un scanf tout bete en base d�cimale, le meme qu'avant)  
  30. int expmax ; //ici doivent figurer toutes tes variables !!
  31. int tableau[50];
  32. int tab2[50];
  33. int inter;
  34. int compteur;
  35. int i;
  36. int fin = 0,continuer; // pourquoi une variable qui sert a mettre plutot des caractères ??un entier serait mieu ! int(pas long)
  37. expmax =1 ;
  38. resultat=0 ;
  39.   while (fin == 0)
  40.   {
  41. clear(tableau);
  42. printf("\n\nquel nombre souhaitez vous convertir ?" );
  43.         scanf("%d",&nombre);
  44.         printf ("\n\nquelle est la base de ce nombre ? " );
  45.         scanf ("%d",&base);
  46.         printf("\n\nen quelle base voulez vous obtenir le resultat? " );
  47.         scanf("%d",&basef);
  48. reste = nombre ;
  49. /*on cherche le rang le plus grand du premier chiffre : par exemple : 1265 : tu vas avoir 10^3 +265->on cherche ce 3 */
  50. while( (floor (nombre) / (pow(10,expmax)) )!=0 ) //floor : c'est la partie entiere dans ta division : si on trouve 0 c'est qu'on a d�pass� (floor-10^3 /10^4)= 0)
  51. {
  52.  expmax++ ;
  53. }
  54. expmax-- ; //on se ramène à l'exposant max avec la boucle d'avant , on l'avait dépassé d'1.
  55. if (base==10)
  56. { printf("bonour" );
  57.  compteur=49;
  58.  while(nombre!=0)
  59.  {
  60.   tableau[compteur]=nombre%basef;
  61.   nombre=nombre/basef;
  62.   compteur--;
  63.  }
  64.  affiche(tableau);
  65. }
  66. else
  67. { printf("\naffiche 1" );
  68.  clear(tab2);
  69.  printf("\naffiche 1" );
  70.  compteur=0;
  71.  while (nombre>=10)
  72.  {
  73.   inter=nombre/pow(10,expmax);
  74.   tab2[compteur]=inter;
  75.   nombre=nombre-inter*pow(10,expmax);
  76.   compteur++;
  77.   expmax--;
  78.  }
  79.  compteur=0;
  80.  expmax=0; printf("affiche 2" );
  81.  do
  82.  {
  83.   i=tab2[compteur];
  84.   compteur++;
  85.   expmax++;
  86.  }while(i!=20);
  87.  expmax--;
  88.  i=0;
  89.  do
  90.  {
  91.   resultat=resultat+tab2[i]*pow(base,expmax);
  92.   i++;
  93.   expmax--;
  94.  }
  95.  while(tab2[i]!=20);
  96.  affiche(tab2);
  97. }
  98. }
  99. }

mood
Publicité
Posté le 29-05-2008 à 14:50:11  profilanswer
 

n°1739251
matafan
Posté le 30-05-2008 à 09:43:47  profilanswer
 

Utilise gdb sur le core dump pour voir où ça segfault.
Essaie aussi de te passer de math.h, qui est est complètement inutile pour ce que tu fais.
Sur le principe aussi, si tu fais scanf(%d) tu attend forcément un nombre en base 10... Avec ton programme on ne peut pas entrer de nombre en hexa, par exemple.


Message édité par matafan le 30-05-2008 à 09:45:07

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

  probleme programme passage differentes bases

 

Sujets relatifs
Problème notification OnReceive avec CasyncSocketProblème d'apostrophe
Problème connexion php/mysql/apache ...Probleme clé primaire clé etrangere
Probleme pour fonction php ![ActionScript] Problème de débutant avec une variable de fonction
-Résolu- Formulaire en fin de page...qui ne s'affiche pasProblème controle checkbox formulaire
Problème avec sélectProblème de position de <DIV>
Plus de sujets relatifs à : probleme programme passage differentes bases


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