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 :

Réalisation d'un mini tableur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Par défaut Réalisation d'un mini tableur
    Salut

    je viens vous demandez de l'aide car j'ai un souci je doit réaliser un programme qui récupère 5 entiers puis 3 formule et chaine de caractères.
    Précision je ne doit pas utiliser de malloc (ça tombe bien je sais pas se que c'est lol)
    uve -3
    Mon problème
    je rentre une formule F1= A+-2 avec A correspondant a la première valeur du tableau de 5 entiers.
    on va dire que A=1

    normalement le résultat dévrais être F1=-1 est bien moi je trouve -3

    voici l'extrait de mon code (uniquement pour l'addition) si vous pouvais m'aider ça serai cool (enfaite j'essais de gérer le moins unaire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(f[i]=='+')
    		{		
    			if(f[i+1]=='-')
    			{
    			res=res-f[i+2];
    			}
    			else
    			{
    			res=res+f[i+1];
    			}
    		}
    Merci

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    f est apparemment un tableau contenant les codes des caractères (par exemple ascii)
    ceci fait alors la soustraction avec le code de '2', pas la valeur 2

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Par défaut
    mais pkoi ça me retourne -3

    tu me conseille de régler le problème comment?

  4. #4
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    que ça te retourne -3 est étrange en effet, mais de toute façon f[i+2] est un char et vaut le code associé au caractère '2' et certainement pas 2.

    tu dois utiliser la fonction atoi() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <cstdlib>
     
    int main {
        char texte[2]="12";
     
        int resultat;
     
        resultat = atoi(texte[0]) + atoi(texte[1]); /* resultat fait 3 */
     
    }

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Pacorabanix Voir le message
    que ça te retourne -3 est étrange en effet, mais de toute façon f[i+2] est un char et vaut le code associé au caractère '2' et certainement pas 2.

    tu dois utiliser la fonction atoi() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <cstdlib>
     
    int main {
        char texte[2]="12";
     
        int resultat;
     
        resultat = atoi(texte[0]) + atoi(texte[1]); /* resultat fait 3 */
     
    }
    Aïe! Comportement indéterminé... Si tu veux stocker la chaine "12" dans le tableau texte, ce dernier doit être de taille au moins 3 caractères. Dans ton cas, tu as un débordement de tampon.

    Par ailleurs, le prototype de la fonction atoi() est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int atoi(const char *nptr);
    Elle attend donc en argument un pointeur sur un char non modifiable, et tu lui passe un caractère. Il y a un problème. De plus, on préfère utiliser strtol() plutôt que atoi(), ce qui permet de faciliter la gestion des erreurs.

    Enfin, pour terminer, cstdlib est un fichier d'en-tête de C++. En C, il faut inclure stdlib.h.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/02/2010, 21h57
  2. comment réaliser une sorte de tableur
    Par gwenc_hlan dans le forum Tkinter
    Réponses: 6
    Dernier message: 13/08/2008, 16h40
  3. Défi N°3 : Réalisation d'un mini-serveur
    Par millie dans le forum Défis langages fonctionnels
    Réponses: 16
    Dernier message: 10/04/2008, 10h51
  4. Réponses: 2
    Dernier message: 07/06/2006, 12h12

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