Problème dans un script

Résolu
lucario200298 Messages postés 71 Statut Membre -  
lucario200298 Messages postés 71 Statut Membre -
Bonjour,

Je débute dans la programmation en c/c++, je me suis fait une petite calculette mais le programme révèle plein d'erreur, qu'est-ce qu'il ne va pas, le programme est :

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

int main() 
{ 
  double resultat = 0, nombre1 = 0, nombre2 = 0, signe = 0; 
   
  printf("Entrez le nombre 1 : "); 
  scanf("%d", &nombre1); 
  printf("Entrez le nombre 2 : "); 
  scanf("%d", &nombre2); 
  printf("Entrez le signe (pour le + ecriver 1, - : 2, * : 3, / : 4) : "); 
  scanf("%d"; &signe); 

  if (signe == 1) 
  { 
   resultat = nombre1 + nombre2; 
   printf ("%d" + "%d" = "%d\n", nombre1, nombre2, resultat); 
  } 
  else if (signe == 2) 
  { 
   resultat = nombre1 - nombre2; 
   printf ("%d" - "%d" = "%d\n", nombre1, nombre2, resultat); 
  } 
  else if (signe == 3) 
  { 
   resultat = nombre1 * nombre2; 
   printf ("%d" * "%d" = "%d\n", nombre1, nombre2, resultat); 
  } 
  else if (signe == 4) 
  { 
   resultat = nombre1 / nombre2; 
   printf ("%d" / "%d" = "%d\n", nombre1, nombre2, resultat); 
  } 
  else 
  { 
   printf  ("Oups !!! vous avez commit une erreur"); 
  } 
  return 0; 
}

1 réponse

  1. java4ever
     
    Bonjour,
    Le C est un langage tatillon, et les fonctions scanf et printf aussi !
    mes remarques :
    Ce n'est pas un script mais un programme : un script est directement exécutable, ici, c'est la partie compilée qui sera exécutée.
    il faut faire attention aux types des données :
    les nombres sont des doubles : ok
    Pour le signe, tu n'étais pas obligé de prendre un double, un int ou mieux un char serait mieux.
    Au lieu d'un if à rallonge, utilise plutôt switch ... case .. default, c'est plus souple.
    Sinon, tu as 2 erreurs (répétées) qui empêche que ça marche:
    pour les double, il faut utiliser %lf ou %.2lf avec scanf et printf
    Le premier argument de printf, est une chaine de format, il ne doit donc y avoir le format entre guillemets
    Voici le programme corrigé :
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      double resultat = 0, nombre1 = 0, nombre2 = 0, signe = 0;
      printf("Entrez le nombre 1 : ");
      scanf("%lf", &nombre1);
      printf("Entrez le nombre 2 : ");
      scanf("%lf", &nombre2);
      printf("Entrez le signe (pour le + ecriver 1, - : 2, * : 3, / : 4) : ");
    //  scanf("%d"; &signe);
      scanf("%lf", &signe); // erreur il faut lf et en plus il y avait un point virgule
      printf("nb1 %.2lf nb2 %.2lf signe %.2lf\n",nombre1,nombre2,signe);
      // ici ce serait mieux d'utiliser switch(signe)  .. case .. default en mettant signe en char ou int
      if (signe == 1)
      {
    	  resultat = nombre1 + nombre2;
    //	  printf ("%d" + "%d" = "%d\n", nombre1, nombre2, resultat);
    	  printf ("%.2lf + %.2lf = %.2lf\n", nombre1, nombre2, resultat);
      }
      else if (signe == 2)
      {
    	  resultat = nombre1 - nombre2;
    	  printf ("%.2lf - %.2lf = %.2lf\n", nombre1, nombre2, resultat); // meme erreur que pour le +
      }
      else if (signe == 3)
      {
    	  resultat = nombre1 * nombre2;
    	  printf ("%.2lf * %.2lf = %.2lf\n", nombre1, nombre2, resultat); // meme erreur que pour le +
      }
      else if (signe == 4)
      {
    	  resultat = nombre1 / nombre2;
    	  printf ("%.2lf / %.2lf = %.2lf\n", nombre1, nombre2, resultat); // meme erreur que pour le +
      }
      else
      {
    	  printf  ("Oups !!! vous avez commit une erreur");
      }
      return 0;
    }
    
    0
    1. lucario200298 Messages postés 71 Statut Membre 1
       
      Merci
      0
    2. lucario200298 Messages postés 71 Statut Membre 1
       
      Savez vous comment faire pour mettre directement tout le calcul ?
      0