Aide pour un programme en C

Résolu/Fermé
bapt13170 Messages postés 48 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 1 avril 2014 - 8 avril 2013 à 20:58
NiicoDu42 Messages postés 157 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 20 mars 2017 - 10 avril 2013 à 13:40
Salut tout le monde.
J'ai un problème avec un programme.Le problème est que la boucle ne fonctionne pas .
En vous remerciant pour ce qui me répondront.


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

double perimetreRectangle(double longueur, double largeur) //calcul pour le périmètre du rectangle.
{
    double rectangle = (longueur + largeur) * 2 ;
    return rectangle;
}

double perimetreCarre(double cote) //calcul pour le périmètre carré.
{
    double carre = cote * 4 ;
    return carre;
}

double perimetreCercle(double rayon) // calcul pour le périmètre cercle.
{
   double cercle = 2 * 3.1415926535897932384626433832795 * rayon ;
   return cercle;
}

double aireRectangle(double longueur , double largeur) // calcul pour l'aire du rectangle.
{
    double aireRectangle = longueur * largeur;
    return aireRectangle;
}
double aireCarre(double cote) // calcul pour l'aire du carré.
{
    double aireCarre = cote * cote;
    return aireCarre;

}

double aireCercle(double rayon) // calcul pour l'aire du cercle.
{
    double aireCercle = 3.1415926535897932384626433832795 * rayon * rayon;
    return aireCercle;

}
double aireTriangle(double base , double hauteur) // calcul pour l'aire du triangle.
{
    double aireTriangle = (base * hauteur) /2 ;
    return aireTriangle;
}

double aireSphere(double rayon) // calcul pour l'aire du sphère.
{
    double aireSphere = 4 * 3.1415926535897932384626433832795 * rayon * rayon ;
    return aireSphere;
}

double volumePave(double longueur , double largeur , double hauteur) // calcul pour le volume du pavé.
{
    double volumePave = longueur * largeur * hauteur ;
    return volumePave;
}

double volumeCube(double cote) // calcul pour le volume du cube.
{
    double volumeCube = cote * cote * cote ;
    return volumeCube;
}

double volumeBoule(double rayon) // calcul pour le volume de la boule.
{
    double volumeBoule = (4/3) * rayon * 3.1415926535897932384626433832795 ;
    return volumeBoule;
}

double volumeCylindre(double hauteur , double rayon) // calcul pour le volume du cylindre.
{
    double volumeCylindre = hauteur * rayon * rayon * 3.1415926535897932384626433832795 ;
    return volumeCylindre;
}

double volumeCone(double hauteur , double rayon ) // calcul pour le volume du cône.
{
    double volumeCone = (hauteur * rayon * rayon * 3.1415926535897932384626433832795) / 3 ;
    return volumeCone;
}
double volumePyramide(double aireBase , double hauteur) // calcul pour le volume de la pyramide.
{
    double volumePyramide = (aireBase  * hauteur) / 3 ;
    return volumePyramide;
}

int main(int argc, char *argv[])
{
    unsigned int recommencer=0 ;
    do
    {
    printf("\n");
    printf("Bienvenue dans le calculateur \n"); // présentation du programme

    int choixConversion = 0 , int choixConversion1 = 0, int choixConversion2 = 0, int choixConversion3 = 0,  int choixConversion4 = 0;
    double nombreEntreLongueur = 0 ;
    double nombreEntreLargeur = 0 ;
    double nombreEntreCote = 0;
    double nombreEntreHauteur = 0;
    double nombreEntreRayon = 0;
    double nombreEntreBase = 0;
    printf("\nVotre choix ? Taper : \n"); // menu pour que l'utilisateur puisse choisir
    printf ("1. Perimetre\n");
    printf ("2. Aire\n");
    printf ("3. Volume\n");
    scanf("%d", &choixConversion);

switch(choixConversion1)// permet le choix
{
   case 1:

    printf("\nVotre choix ? Taper : \n"); // menu pour que l'utilisateur puisse choisir
    printf ("1. Rectangle\n");
    printf ("2. Carre\n");
    printf ("3. Cercle\n");
    scanf("%d", &choixConversion1);

    switch(choixConversion1)// permet le choix
     {
     case 1 : // choix rectangle périmètre

        printf  ("Entrez la longueur :  \n");
        scanf ("%lf", &nombreEntreLongueur );
        printf ("Entrez la largeur :   \n");
        scanf ("%lf", &nombreEntreLargeur);
        printf ("Le perimetre du rectangle est de %f " , perimetreRectangle( nombreEntreLongueur , nombreEntreLargeur));
        break;
     case 2 : // choix carre périmètre.

        printf ("Entrez le cote :   \n");
        scanf ("%lf" , &nombreEntreCote);
        printf ("Le perimetre du carre est de %f " , perimetreCarre( nombreEntreCote));
        break;
     case 3 : // choix cercle périmètre.
        printf (" Entrez le rayon :  \n");
        scanf ("%lf" , &nombreEntreRayon);
        printf ("Le perimetre du cercle est de %f ", perimetreCercle( nombreEntreRayon));
        break;
     default :
        printf("Entrez un des 3 choix");
        break ;
         }
         break;

     case 2 :

    printf("\nVotre choix ? Taper : \n"); // menu pour que l'utilisateur puisse choisir
    printf ("1. Rectangle\n");
    printf ("2. Carre\n");
    printf ("3. Cercle\n");
    printf ("4. Triangle\n");
    printf ("5. Sphere\n");
    scanf("%d", &choixConversion2);

    switch(choixConversion3)// permet le choix
     {
     case 1 : // choix rectangle aire
        printf ("Entrez la longueur : \n");
        scanf ("%lf" , &nombreEntreLongueur);
        printf ("Entrez la largeur :  \n");
        scanf ("%lf", nombreEntreLargeur);
        printf ("L' aire du rectangle est de : %f " , aireRectangle (nombreEntreLongueur , nombreEntreLargeur) );
       break;

      case 2 : // choix carre aire.

        printf ("Entrez le cote :   \n");
        scanf ("%lf" , &nombreEntreCote);
        printf ("L' aire du carre est de %f " , aireCarre( nombreEntreCote));
        break;
     case 3 : // choix cercle aire.
        printf (" Entrez le rayon :  \n");
        scanf ("%lf" , &nombreEntreRayon);
        printf ("L' airedu cercle est de %f ",aireCercle( nombreEntreRayon));
        break;

       case 4 : // choix triangle aire.

        printf ("Entrez l'aire de la base :   \n");
        scanf ("%lf" , &nombreEntreBase);
        printf ( "Entrez la hauteur : \n");
        scanf ("%lf" , &nombreEntreHauteur);
        printf ("L' aire du triangle est de %f " , aireTriangle( nombreEntreBase , nombreEntreHauteur));
        break;
     case 5 : // choix sphere aire.
        printf (" Entrez le rayon :  \n");
        scanf ("%lf" , &nombreEntreRayon);
        printf (" L'aire de la sphere est de %f ", aireSphere( nombreEntreRayon ));
        break;

     default :
        printf ("Entrez un des 5 choix");
        break;

       }
       break;


   case 3 :



    printf("\nVotre choix ? Taper : \n"); // menu pour que l'utilisateur puisse choisir
    printf ("1. Pave droit\n");
    printf ("2. Cube\n");
    printf ("3. Cylindre\n");
    printf ("4. Boule\n");
    printf ("5. Cone\n");
    printf ("6. Pyramide\n");
    scanf("%d", &choixConversion4);

    switch(choixConversion4)// permet le choix
     {
     case 1 : // choix pave droit volume
        printf ("Entrez la longueur : \n");
        scanf ("%lf" , &nombreEntreLongueur);
        printf ("Entrez la largeur :  \n");
        scanf ("%lf", nombreEntreLargeur);
        printf ("Entrez la hauteur:  \n");
        scanf ("%lf", nombreEntreHauteur);
        printf ("Le volume du pave droit est de : %f " , volumePave (nombreEntreLongueur , nombreEntreLargeur, nombreEntreHauteur) );
       break;

      case 2 : // choix cube volume.

        printf ("Entrez le cote :   \n");
        scanf ("%lf" , &nombreEntreCote);
        printf ("Le volume du cube est de %f " , volumeCube( nombreEntreCote));
        break;
     case 3 : // choix cylindre volume.
        printf (" Entrez le rayon :  \n");
        scanf ("%lf" , &nombreEntreRayon);
        printf (" Entrez la hauteur :  \n");
        scanf ("%lf" , &nombreEntreHauteur);
        printf ("Le volume du cylindre est de %f ",volumeCylindre( nombreEntreRayon, nombreEntreHauteur));
        break;

       case 4 : // choix boule volume.

        printf ("Entrez le rayon :   \n");
        scanf ("%lf" , &nombreEntreRayon);
        printf ("Le volume de la boule est de %f " , volumeBoule( nombreEntreRayon));
        break;
     case 5 : // choix cone volume.
        printf (" Entrez le rayon :  \n");
        scanf ("%lf" , &nombreEntreRayon);
        printf ( "Entrez la hauteur : \n");
        scanf ("%lf" , &nombreEntreHauteur);
        printf ("Le volume du cone est de %f ", volumeCone( nombreEntreRayon , nombreEntreHauteur));
        break;

     case 6 :

        printf ("Entrez l'aire de la base :   \n");
        scanf ("%lf" , &nombreEntreBase);
        printf ( "Entrez la hauteur : \n");
        scanf ("%lf" , &nombreEntreHauteur);
        printf ("Le volume de la pyramide est de %f " , volumePyramide( nombreEntreBase , nombreEntreHauteur));
        break;

     default :
        printf ("Entrez un des 6 choix");

        break;

     }
     break;

     default:
        printf ("Entrez un des 3 choix");
        break;
}
printf("\n\n");
   printf("Voulez-vous recommencer ? Alors taper un nombre non nul ! Sinon taper 0 pour quitter  le programme !\n");
   scanf("%d",&recommencer);
   printf("     =======================");
  } while (recommencer!=0);

   return 0 ;
}



7 réponses

NiicoDu42 Messages postés 157 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 20 mars 2017 10
8 avril 2013 à 22:59
Revois toutes tes conditions.
switch(comparaison) ex : switch(choixConversion == 1)

Quand tu déclares des "int" sur la même ligne, pas la peine de répéter "int".
ex : int var1 = 0, var2 = 0;

Et il manque quelques &.

Bonne chance ! ^^
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
9 avril 2013 à 23:16
switch(comparaison) ex : switch(choixConversion == 1)
Que veux-tu dire ?
switch(comparaison) est correct.
0
NiicoDu42 Messages postés 157 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 20 mars 2017 10
9 avril 2013 à 23:50
Arff ! Excusez moi !
Oui c'est vrai sauf qu'il scan choixConversion mais il ne s'en sert pas dans son switch
Switch( choixConversion) serait mieux ! ^^
0
bapt13170 Messages postés 48 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 1 avril 2014
9 avril 2013 à 06:35
je sais pas comment faire pour les conditions peut être cela serait mieux d'utiliser switch puis après des if else if et else ?
0
NiicoDu42 Messages postés 157 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 20 mars 2017 10
Modifié par NiicoDu42 le 9/04/2013 à 22:16
Pour un premier programme, ce serait plus clair ! Essayes !
Les conditions, c'est pour vérifier si quelque chose et vrai et faire quelque chose en fonction donc mais des comparaisons d'égalité par exemple !

Re publie ton code après pour l'ajuster! :)
0
JwTdd Messages postés 21 Date d'inscription vendredi 25 janvier 2013 Statut Membre Dernière intervention 7 mai 2015 2
Modifié par JwTdd le 9/04/2013 à 22:33
Salut, tu a un scanf pour choixConversion mais a priori a aucun moment tu ne l'utilises...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NiicoDu42 Messages postés 157 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 20 mars 2017 10
9 avril 2013 à 23:22
Tu utilises mal tes scanf,
Ex :
scanf("%d",&var);
If(var == 1); {// c'est ça la condition.

}
Else{}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
Modifié par fiddy le 10/04/2013 à 07:06
Aucun intérêt à remplacer switch par des if.
Ça sert à ça le switch... Ce qu'il faut surtout ce sont des fonctions.
Sinon surtout pas de ; après le if.
0
NiicoDu42 Messages postés 157 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 20 mars 2017 10
10 avril 2013 à 13:40
pour le début c'est peut être plus facile la syntaxe du if
Et pour le point virgule, faute de frappe ...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
9 avril 2013 à 23:24

scanf("%d", &choixConversion1);
switch(choixConversion)// permet le choix

Attention. Tu fais un scanf pour lire la valeur et en fonction de la valeur tu fais des switch. Il faut que ce soit la même variable.

Sinon, je te conseille de faire appel à des fonctions. Tu as le moyen d'écrire un code beaucoup plus court et plus propre donc plus lisible :-).

Il y a également des & oubliés comme signalé plus haut. Et le problème des int.
0
bapt13170 Messages postés 48 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 1 avril 2014
10 avril 2013 à 07:21
c'est bon il marche nickel je te remercie .
0