Problème compilation [débutant]

Résolu/Fermé
SlaapwageN - 26 oct. 2006 à 17:51
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 27 oct. 2006 à 00:55
Bonjour, voila mon problème, lorsque je souhaite compiler ce programme, j'ai pour erreur : `abs' undeclared (first use this function)

#include "stdio.h" 


int main()
    {
    int A,B,diff;
    
    printf("entre la de valeur A");
    scanf("%d",&A);
    printf("entre la de valeur B");
    scanf("%d",&B);
    while (A!=B)
          {
          diff=abs(A-B);
          if (A>B) A = Diff;
          else B = Diff;
          }
    printf("le pgcd est est %d/n", A);
    return 0;
}

Merci de m'aider.

PS : j'ai une deuxième question, dans ce mini prog, pourquoi la fenêtre lorsque j'execute le prog se ferme t elle directement ?

#include "stdio.h"

int main()
{
    printf("laurent tas interet à m'avoir ramener mes cds!");
    
    return 0;
}


Merci beaucoup :)

2 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
26 oct. 2006 à 19:56
1er programme

Pour commencer les headers standards sont entre <> (seuls tes headers sont entre " ") :
#include <stdio.h>
#include <math.h>

Ensuite la fonction abs n'existe que si tu compiles avec la librairie mathématique (option -lm pour gcc) :
gcc -W -Wall -lm -o plop.exe plop.c

Mais sinon le plus simple c'est de redéfinir toi même la fonction abs :
int abs(int x){
  if (x<0) return x;
  return -x;
}

int main(){
...
}


2e programme

Même remarque pour le header.

La fenêtre se ferme car windows tue la console dans laquelle est exécuté le programme dès que celui-ci prend fin (je suppose que tu lances ton programme en double cliquant dessus dans l'explorateur de fichier). Soit il faut lancer le programme depuis une console msdos (démarrer éxecuter cmd), soit il faut rajouter l'instruction
getchar();

... devant le "return 0;" du main.

Bonne chance
1
Tout simplement =)
Merci beaucoup !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
26 oct. 2006 à 23:57
Salut,

pour obtenir la valeur absolue ce n'est pas plutôt
  if (x>=0) return x;
  return -x;
ou si on utilise l'opérateur <
  if (x<0) return -x;
  return x;
lami20j
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
27 oct. 2006 à 00:55
Oui effectivement :p
int abs(int x){
  if (x<0) return -x;
  return x;
}
0