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 :

erreur compilation programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut erreur compilation programme
    voici mon programme et j'ai une erreur à la compilation mai sje ne vois pas quoi.
    pouvez - vous m'aider?
    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>
    #include <stdlib.h>
     
    void saisie1(int *p){
         int i;
         printf("Saisir un entier:\n");
         scanf("%d",&i);
         p=&i;
         }
     
    void saisie2(int *n){
         int j;
         printf("Saisir un entier:\n");
         scanf("%d",&j);
         n=&j;
         } 
     
    int somme(int i,int j){
        int k;
        k=i+j;
        }
     
    int main()
    {
        int p,n;
     
      saisie1(*p);
      saisie2(*n);  
     
      printf("La somme de %d et %d est %d\n",p,n,somme(p,n));
     
      system("PAUSE");	
      return 0;
    }

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par auxisteff
    voici mon programme et j'ai une erreur à la compilation mai sje ne vois pas quoi.
    pouvez - vous m'aider?


    #include <stdio.h>
    #include <stdlib.h>

    void saisie1(int *p){
    int i;
    printf("Saisir un entier:\n");
    scanf("%d",&i);
    p=&i;
    }

    void saisie2(int *n){
    int j;
    printf("Saisir un entier:\n");
    scanf("%d",&j);
    n=&j;
    }

    int somme(int i,int j){
    int k;
    k=i+j;
    }

    int main()
    {
    int p,n;

    saisie1(*p);
    saisie2(*n);

    printf("La somme de %d et %d est %d\n",p,n,somme(p,n));

    system("PAUSE");
    return 0;
    }
    il manque un return dans somme()

    dans main()
    p et n étant des entiers, *p et *n sont des expressions incorrectes : déréférencement de pointeurs…

    -> saisie1(&p) et saisie2(&n)

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut
    merci ça compile mais par contre l'addition n'est pas bonne car je lance le programme :

    saisir un entier:3
    saisir un entier:2
    la somme de 2 et 63 est 65.

    donc je dois avoir un problème avec des pointeurs.

    j'ai mon énoncé si ça peut vous aider.

    #

    1. Ecrire un programme qui saisit deux entiers et affiche leur somme. On utilisera les fonctions suivantes :

    int somme(int i,int j); /* renvoie i+j */
    void saisie(int * p); /* saisie l'entier pointe par p */
    int main(); /* fonction principale */

    Exemple de session :

    Saisir un entier : 3
    Saisir un entier : 5
    La somme de 3 et 5 est 8

    2. Ecrire une version de la fonction somme acceptant des pointeurs en entrée.
    3. Ecrire une procédure somme. (aucune valeur retournée)

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par auxisteff
    voici mon programme et j'ai une erreur à la compilation mai sje ne vois pas quoi.
    pouvez - vous m'aider?


    #include <stdio.h>
    Merci de lire les règles du forum

    Bonjour, merci, tu connais ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut
    je me vois confuse d'avoir oublier le bonjour mais j'ai dis merci.
    au revoir

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,

    Relis quand même un peu ce que tu écris, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void saisie1(int *p){
    int i;
    printf("Saisir un entier:\n");
    scanf("%d",&i);
    p=&i;
    }
    tu penses vraiment que c'est l'adresse de i qu'il faut renvoyer, et qui plus est en écrasant ton pointeur ?


    Remarques :

    - Pourquoi 2 fonctions saisie1 et saisie2 qui font la même chose ?
    C'est justement pour éviter la duplication de code qu'on crée des fonctions (entre autres).

    - Pourquoi ces fonctions ne renvoient-elles rien, et ont-elles besoin d'un paramètre passé par pointeur.
    Il serait plus habituel (propre, correct ?) d'écrire
    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
     
    ....
    int saisieint()
    {
      int res= 0;
      printf("entrez un entier : ");
      scanf("%d",&res);
      return res;
    }
     
    ....
     
    // et dans le main
     
    int p,n;
    p = saisieint();
    n = saisieint();
    ... etc
    Bien entendu, il faut faire mieux que cela, en sécurisant les entrées (= que le programme ne plante pas si on n'entre pas une valeur entière), ce n'est que pour montrer ce qui ne va pas.

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut
    bonsoir,
    merci j'ai compris mais je dois utiliser ces fonctions:

    int somme(int i,int j); /* renvoie i+j */
    void saisie(int * p); /* saisie l'entier pointe par p */
    int main(); /* fonction principale */

    et pour répondre au sujet suivant:

    *Ecrire un programme qui saisit deux entiers et affiche leur somme. On utilisera les fonctions précédentes.
    *Ecrire une version de la fonction somme acceptant des pointeurs en entrée.
    *Ecrire une procédure somme. (aucune valeur retournée) .

  8. #8
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par auxisteff
    bonsoir,
    merci j'ai compris mais je dois utiliser ces fonctions:

    int somme(int i,int j); /* renvoie i+j */
    void saisie(int * p); /* saisie l'entier pointe par p */
    int main(); /* fonction principale */
    .
    Pour la fonction saisie à mon avis ce qui est demandé et de stocker un entier entré au clavier dans la variable p.


    Parce que saisir l'entier pointé par p, comprends pas

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,
    Citation Envoyé par auxisteff
    bonsoir,
    merci j'ai compris mais je dois utiliser ces fonctions:

    int somme(int i,int j); /* renvoie i+j */
    void saisie(int * p); /* saisie l'entier pointe par p */
    int main(); /* fonction principale */

    et pour répondre au sujet suivant:

    *Ecrire un programme qui saisit deux entiers et affiche leur somme. On utilisera les fonctions précédentes.
    *Ecrire une version de la fonction somme acceptant des pointeurs en entrée.
    *Ecrire une procédure somme. (aucune valeur retournée) .
    D'accord.

    Il reste :

    - Pourquoi 2 fonctions pour la saisie, alors qu'elles font exactement la même chose.

    - Tellement la même chose d'ailleurs, qu'elles reproduisent l'erreur déjà signalée.
    Relis ton cours/bouquin, ce n'est sans doute pas comme ça que c'est expliqué.

Discussions similaires

  1. Erreur compilation programme en c avec sqlite
    Par Mat08 dans le forum SQLite
    Réponses: 0
    Dernier message: 07/09/2013, 06h06
  2. Erreur compilation programme SDL
    Par Danjo dans le forum SDL
    Réponses: 1
    Dernier message: 19/01/2013, 12h11
  3. Erreur compilation programme
    Par Premium dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2008, 18h32
  4. Réponses: 2
    Dernier message: 15/10/2008, 10h18
  5. erreur compilation programme C
    Par MRextra dans le forum Débuter
    Réponses: 16
    Dernier message: 09/08/2008, 04h56

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