Problème dans un script

Résolu/Fermé
lucario200298 Messages postés 56 Date d'inscription samedi 21 mai 2011 Statut Membre Dernière intervention 16 mai 2015 - Modifié par lucario200298 le 30/06/2011 à 20:42
lucario200298 Messages postés 56 Date d'inscription samedi 21 mai 2011 Statut Membre Dernière intervention 16 mai 2015 - 30 juin 2011 à 20:49
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; 
}
A voir également:

1 réponse

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
lucario200298 Messages postés 56 Date d'inscription samedi 21 mai 2011 Statut Membre Dernière intervention 16 mai 2015 1
30 juin 2011 à 20:26
Merci
0
lucario200298 Messages postés 56 Date d'inscription samedi 21 mai 2011 Statut Membre Dernière intervention 16 mai 2015 1
30 juin 2011 à 20:49
Savez vous comment faire pour mettre directement tout le calcul ?
0