Resolu [C] Probleme de resultat de calcul

Resolu [C] Probleme de resultat de calcul - C - Programmation

Marsh Posté le 04-10-2003 à 18:30:08    

Bonjour a tous je débute en C et mon prof d'info nous a demander cela comme exo :
 
Ecrire un programme qui affiche la résistance équivalente à trois résistances R1,R2,R3(type double),
- si les résistances sont en série : Rser = R1+R2+R3
- si les résistances sont en // : Rpar = (R1*R2*R3)/(R1*R2+R1*R3+R2*R3)
 
Donc je fais mon étude du probleme et mon algorithme qui est facile, je tape mon code en C :
 

Code :
  1. /* Programme permettant de calculer la resistance equivalente a 3
  2.    Resistance en // ou série */
  3. #include <stdio.h>
  4. main()
  5. {
  6. double r1,r2,r3,resp;
  7. char res;
  8. printf("R1 R2 R3\n" );
  9. scanf("%f",&r1);
  10. scanf("%f",&r2);
  11. scanf("%f",&r3);
  12. printf("Resistances en série ou // ?\n" );
  13. res = getch();
  14. if (res=='s')
  15.         {
  16.         printf ("Resistance en série\n" );
  17.         printf("La résistance équivalente vaut : %f\n",r1+r2+r3);
  18.         }
  19. else if(res=='p')
  20.         {
  21.         printf("Resistance en //\n" );
  22.         resp = (r1*r2*r3)/((r1*r2)+(r1*r3)+(r2*r3));
  23.         printf("La resistance equivalente vaut : %g\n",resp);
  24.         }
  25. else
  26.         {
  27.         printf("Mauvais choix\n" );
  28.         }
  29. }


 
je pense que mon code est correct mais quoi que je saisisse, les resultat sont faux, je pense que ca viendrai qu'il faut forcer les variable a un certain type lors du calcul le prof nous avait parler de ca mais je ne sais pas comment utiliser ca
merci d'avance


Message édité par scooper2 le 04-10-2003 à 19:04:17
Reply

Marsh Posté le 04-10-2003 à 18:30:08   

Reply

Marsh Posté le 04-10-2003 à 18:41:26    

 main() -> int main()
 
    scanf("%f",&r1);
    scanf("%f",&r2);
    scanf("%f",&r3);   -> scanf("%lf%lf%lf", &r1, &r2, &r3);
 
res = getch();  -> res=getchar()
 
essaye ces modifications d'abord

Reply

Marsh Posté le 04-10-2003 à 18:49:03    

daccord je vais essayer mais ej n'ai pas derreur de compilation

Reply

Marsh Posté le 04-10-2003 à 18:52:02    

regarde
 

Code :
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.   double r1,r2,r3,resp;
  6.   char res;
  7.   printf("R1 R2 R3\n" );
  8.   scanf("%lf %lf %lf\n", &r1, &r2, &r3);
  9.   printf("Resistances en série ou // ?" );
  10.   fflush(stdout);
  11.   if(scanf("%c", &res)!=1)
  12.     {
  13.       printf("Oups...\n" );
  14.       return 1;
  15.     }
  16.   putchar('\n');
  17.   if(res=='s')
  18.     {
  19.       printf ("Resistance en série\n"
  20.       "La résistance équivalente vaut : %f\n", r1+r2+r3);
  21.     }
  22.   else if(res=='p')
  23.     {
  24.       resp = (r1*r2*r3) / (r1*r2 + r1*r3 + r2*r3);
  25.       printf("Resistance en //\n"
  26.      "La resistance equivalente vaut : %g\n", resp);
  27.     }
  28.   else
  29.     {
  30.       printf("Mauvais choix\n" );
  31.     }
  32.   return 0;
  33. }

Reply

Marsh Posté le 04-10-2003 à 19:00:32    

merci beaucoup ca fonctionne maintenant pouurait tu m'expliquer ce qui n'allait pas avec le scanf car je vient de regarder le boukin marabout de C et ils disent pour le l pour faire un entier long or ca fonctionne avec les virgules

Reply

Marsh Posté le 04-10-2003 à 19:04:39    

ce bouquin est de la pacotille, le mec qui l'a écrit ne doit rien connaitre à rien.
 
%f -> float
%lf -> double (alias « long float »)
 
impression
%f -> double
pour les float, la convertion en double est sans perte, donc utilise aussi %f

Reply

Marsh Posté le 04-10-2003 à 19:09:55    

oué mais javai deja essayer avec %f et ca ne marchait po

Reply

Marsh Posté le 04-10-2003 à 19:27:07    

et ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed