IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Une toute petite erreur..


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Une toute petite erreur..
    Bonjour a tous, je suis en premiere année de MASS et j'apprend le langage c.
    J'ai tapé un programme qui permet de convertir un nombre que l'on rentre en une base que l'on entre aussi.

    Par exemble 10 en base 2 s'écrit : 1010 .
    Ou 128362 en base 16 s'écrit 1F56A.

    J'ai programmé le code, mais lors de la compilation, un message d'erreur me dit qu'il y a un probleme avecc un pointeur je ne sais plus exactement ce que c'est.

    Le programme doit seulement comporter des boucles et des tableaux. Pas de fonctions ni de pointeurs car on les a pas encore énormément abordés.

    Voici le programme :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h> 
    main() 
    { 
      int tab[64], i, nbretoconvert, base, a, nb, final; 
      char basedigits[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
      i=0; 
                 // Declaration des bases de O à 16. 
     
      printf ("Entrez le nombre à convertir.\n"); 
      scanf ("%i", &nbretoconvert); 
      printf ("Entrez une base.\n"); 
      scanf ("%i", &a); 
     
      if (a<=1) 
         printf ("Entrez une base > 1\n"); 
      else 
         a = base; 
     
                     // Demande de nombre. 
     
       do{ 
          tab[i] = nbretoconvert % base;   // on met le reste de la divison dans le tableau. 
           i++; 
           nbretoconvert = nbretoconvert/base;  // le nouveau nombre est le reste de la divison. 
           } 
        while (nbretoconvert != 0);     // on utilise do...while pour que le nombre 0 ait une base. 
     
                    // Pour afficher le résultat dans le sens inverse 
     
         i = i-1;    // car apres la boucle, i vaut le nombre de chiffre du modulo + 1. 
         printf ("Le nombre converti est :\n"); 
         while (i>= 0){ 
            nb[i] = final; 
            printf ("c", basedigits[final]); 
         } 
    }


    L'indentation ne prend pas sur le site.
    Pourriez vous s'il vous plait me dire ce qui ne va pas et me dire ce qu'il faudrait faire pour faire fonctionner le programme?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut :
    L'indentation se fait avec les balises [code ] et [/code ] (l'icone # à droite).
    Ton erreur pourrait bien être ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (a<=1)
      printf ("Entrez une base > 1\n");
    else
      a = base;
    Ce doit plutôt être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (a<=1)
      printf ("Entrez une base > 1\n");
    else
      base = a;

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    printf ("Le nombre converti est :\n"); 
    while (i>= 0) { 
      /* nb[i] = final; */ /* nb n'est pas un tableau !!! */
      final=tab[i]
      printf ("c", basedigits[final]); 
    }

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par lelo108
    L'indentation ne prend pas sur le site.
    Arf ! Ben oui, je ne sais pas utiliser l'outil, c'est la faute de l'outil...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Pardon je suis nouveau sur le forum, maintenant je sais comment ca marche.

    Je pourrais trester le programme que ce soir, mais une fois les corrections apportés, le programme se lance corectement?

    Donc en c a=b est différent de b=a ??

    Merci d'avance.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par lelo108
    Pardon je suis nouveau sur le forum, maintenant je sais comment ca marche.
    Alors tu aurais dû lire les règles du forum avant de poster...
    Je pourrais trester le programme que ce soir, mais une fois les corrections apportés, le programme se lance corectement?
    Comment le savoir ? C'est à toi de corriger et de tester... On ne sait pas ce que tu vas oublier ou quelles nouvelles erreurs tu vas introduire...
    Donc en c a=b est différent de b=a ??
    Oui. L'affectation est effectivement orientée. Ca parait assez logique, non ?

  7. #7
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par lelo108
    Donc en c a=b est différent de b=a ??
    En C et dans tous les langages que je connais. L'operateur d'affectation n'est pas une egalite mathematique (heureusement, sinon l'expression x = x + 1 serait un peu curieuse...).

Discussions similaires

  1. [1.x] Existence ou non d'une toute petite fonction
    Par rameuj dans le forum Symfony
    Réponses: 1
    Dernier message: 10/06/2010, 10h08
  2. ? faire une toute petite appli windows
    Par booraq dans le forum Windows
    Réponses: 1
    Dernier message: 30/06/2007, 23h03
  3. Réponses: 8
    Dernier message: 12/06/2006, 22h40
  4. une toute petits aide pour finaliser tout sa
    Par yoan_111 dans le forum ASP
    Réponses: 6
    Dernier message: 16/12/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo