Problème compilation [débutant]

Résolu
SlaapwageN -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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
SlaapwageN
 
Tout simplement =)
Merci beaucoup !
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Oui effectivement :p
int abs(int x){
  if (x<0) return -x;
  return x;
}
0