benjolebarbar | 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 :
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h> /*sert reeellement a quelquechose ?? metonnerait fort !!*/
- void clear(int tableau[50])
- {
- int i;
- for(i=0;i<50;i++)
- {
- tableau[i]=20;
- }
- }
- void affiche(int tableau[50])
- {
- int i;
- printf("\nle nombre est :" );
- for (i=0;i<50;i++)
- {
- if (tableau[i]==20)
- {printf("." );}
- else
- {
- printf("%i",tableau[i]);
- }
- }
- }
- int main()
- {
- //long=int juste pour info c'est aussi des entiers ! reel : float ou double . plutot float pas besoin du double !
- 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)
- int expmax ; //ici doivent figurer toutes tes variables !!
- int tableau[50];
- int tab2[50];
- int inter;
- int compteur;
- int i;
- int fin = 0,continuer; // pourquoi une variable qui sert a mettre plutot des caractères ??un entier serait mieu ! int(pas long)
- expmax =1 ;
- resultat=0 ;
- while (fin == 0)
- {
- clear(tableau);
- printf("\n\nquel nombre souhaitez vous convertir ?" );
- scanf("%d",&nombre);
- printf ("\n\nquelle est la base de ce nombre ? " );
- scanf ("%d",&base);
- printf("\n\nen quelle base voulez vous obtenir le resultat? " );
- scanf("%d",&basef);
- reste = nombre ;
- /*on cherche le rang le plus grand du premier chiffre : par exemple : 1265 : tu vas avoir 10^3 +265->on cherche ce 3 */
- 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)
- {
- expmax++ ;
- }
- expmax-- ; //on se ramène à l'exposant max avec la boucle d'avant , on l'avait dépassé d'1.
- if (base==10)
- { printf("bonour" );
- compteur=49;
- while(nombre!=0)
- {
- tableau[compteur]=nombre%basef;
- nombre=nombre/basef;
- compteur--;
- }
- affiche(tableau);
- }
- else
- { printf("\naffiche 1" );
- clear(tab2);
- printf("\naffiche 1" );
- compteur=0;
- while (nombre>=10)
- {
- inter=nombre/pow(10,expmax);
- tab2[compteur]=inter;
- nombre=nombre-inter*pow(10,expmax);
- compteur++;
- expmax--;
- }
- compteur=0;
- expmax=0; printf("affiche 2" );
- do
- {
- i=tab2[compteur];
- compteur++;
- expmax++;
- }while(i!=20);
- expmax--;
- i=0;
- do
- {
- resultat=resultat+tab2[i]*pow(base,expmax);
- i++;
- expmax--;
- }
- while(tab2[i]!=20);
- affiche(tab2);
- }
- }
- }
|
|