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 :

D'où vient le problème ?


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut D'où vient le problème ?
    Bonjour/soir à tous
    Donc voilà : je débute en C, et je comptais programmer ma petite calculatrice en console.
    Mais une erreur de segmentation intervient au moment du choix du type de calcul ...

    Voici le code :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
    long type_de_calcul, nb1, nb2, resultat;
    resultat = 0;
    type_de_calcul = 0;
    printf("Choisissez votre type de calcul :\n 1 - Addition\n2 - Soustraction\n3 - Multiplication\n4 - Division\n");
    scanf("%ld", type_de_calcul);
    switch(type_de_calcul)
    {
    case 1:
    printf("Addition - Saisissez le premier nombre\n");
    scanf("%ld", nb1);
    printf("Addition - Maintenant, saisissez le deuxieme nombre :\n");
    scanf("%ld", nb2);
     
    resultat = nb1 + nb2;
    printf("Le résultat est : %ld", resultat);
    break;
    case 2:
    printf("Soustraction - Saisissez le premier nombre\n");
    scanf("%ld", nb1);
    printf("Soustraction - Maintenant, saisissez le deuxieme nombre :\n");
    scanf("%ld", nb2);
     
    resultat = nb1 - nb2;
    printf("Le résultat est : %ld", resultat);
    break;
    case 3:
    printf("Multiplication - Saisissez le premier nombre\n");
    scanf("%ld", nb1);
    printf("Multiplication - Maintenant, saisissez le deuxieme nombre :\n");
    scanf("%ld", nb2);
     
    resultat = nb1 * nb2;
    printf("Le résultat est : %ld", resultat);
    break;
    case 4:
    printf("Division - Saisissez le premier nombre\n");
    scanf("%ld", nb1);
    printf("Division - Maintenant, saisissez le deuxieme nombre :\n");
    scanf("%ld", nb2);
     
    resultat = nb1 / nb2;
    printf("Le résultat est : %ld", resultat);
    break;
    default:
    printf("Mauvaise option");
    break;
    }
    return 0;
    }
    Merci d'avance !

    PS : Au pire, je fais avec if et else, mais un switch case serait plus "propre", et je voudrais savoir d'où vient le problème

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Dans tes scanf, tu dois passer l'adresse de tes variables.
    Cordialement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Par défaut
    Il faut passer l'adresse des variables au scanf (&variable).

  4. #4
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scanf("%ld", type_de_calcul);
    A remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scanf("%ld", &type_de_calcul);
    Ensuite vérifie ta boucle (car je ne vois pas le résultat de l'opération) et met int (void) si tu n'as pas besoin des arguments !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut
    Merci beaucoup

    J'ai l'air super con maintenant XD

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. je ne sais pas du vient le problème
    Par Philcmoi dans le forum JSF
    Réponses: 1
    Dernier message: 12/02/2009, 20h56
  2. Problème lister dossier, je ne vois pas d'où vient l'erreur
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 25/01/2009, 16h30
  3. Réponses: 2
    Dernier message: 25/02/2008, 11h25
  4. Réponses: 8
    Dernier message: 26/06/2007, 17h07
  5. Invalid column name ? Mais le problème vient d'ailleurs !
    Par TigrouMeow dans le forum Hibernate
    Réponses: 7
    Dernier message: 04/01/2007, 18h11

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