Besoin d'un petit truc pour du language C

Résolu
Utilisateur anonyme -  
 nizar -
Bonjour tout le monde ! (ou plutot bonne nuit)

Je viens de commencer a programmer "en language C" avec (l'excellent) tuto de Matheo21.

J'aimerais pour tester un petit prog pour calculer l'imc des gens, voilà mon code (je crois que l'on dit comme ça...):

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

int main()
{
int p = 0;
double t = 0;
int r = 0;

printf("Quel poids faites-vous?\n");
scanf("%d", &p);

printf("Quelle est votre taille?\n");
scanf("%lf", &t);

r = p / t;
printf("%d /pow(%f, 2) = %d\n\n", p, t, r);

return 0;
}

Tout va bien jusqu'à ce qu'il faille faire le carré de la taille >>>> printf("%d /pow(%f, 2) = %d\n\n", p, t, r); >>>> %d /pow(%f, 2). Quand il m'affiche la réponse il me fait juste %d/%f= ...

J'ai tout essayer mais rien ...

Alors auriez-vous la réponse s'il vous plait.

Merci beaucoup
Configuration: VAIO (core2duo 1,66 Ghz)   2Go ram   (Geforce 8400M GT  128 dedier)   200 Go dd

3 réponses

  1. Skinnych Messages postés 10 Statut Membre 11
     
    Salut

    Alors premièrement je te conseillerai de mettre tes 3 variables en 'float' histoire d'être tranquil.

    Indiquer les unités est une bonne idée au cas où tu le fais tester à d'autres mais que facultatif.

    Ensuite ton expression pour 'r' est fausse puisque tu as mis 'r = p / t;' au lieu de 'r = p / (t*t);'

    Et enfin on ne met pas de fonction dans la première partie du printf à part si tu veux que ça s'affiche en tant que texte, mais ça ne sera pas calculé et je préfère quand même écrire (t*t) que pow(t,2) je trouve ça moins long donc au lieu de
    'printf("%d /pow(%f, 2) = %d\n\n", p, t, r);'
    'printf("%f / %f = %f\n\n", p, t*t, r);'

    Ce qui donne à la fin selon mes préférences:

    int main(){
    float p = 0;
    float t = 0;
    float r = 0;

    printf("Quel poids faites-vous?(Kg)\n");
    scanf("%f", &p);

    printf("Quelle est votre taille?(m)\n");
    scanf("%f", &t);

    r = p / (t*t);
    printf("%3.2f / %2.2f = %2.2f\n\n", p, t*t, r);

    return 0;
    }

    Normalement ça fonctionne, sans oublier qu'on utilise des "." et pas des ",".
    Les chiffres entre le '%' et le 'f' c'est: 'le nombre de chiffres avant la virgule' . 'celui après'

    Si t'as un soucis ;)
    1
  2. Utilisateur anonyme
     
    Du tonnerre Merci beaucoup beaucoup :D

    "Bonne nuit ..."
    0
  3. nizar
     
    dans le language c,il est preferable de traiter chaque etap tout seul,ne combine pas des varibla dans l'affichage
    0