Aide pour un programme en C

Résolu
bapt13170 Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -  
NiicoDu42 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   - 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   Statut Membre Dernière intervention   10
 
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   Statut Contributeur Dernière intervention   1 845
 
switch(comparaison) ex : switch(choixConversion == 1)
Que veux-tu dire ?
switch(comparaison) est correct.
0
NiicoDu42 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention   10
 
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   Statut Contributeur Dernière intervention   1 845
 
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   Statut Membre Dernière intervention   10
 
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   Statut Contributeur Dernière intervention   1 845
 

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   Statut Membre Dernière intervention  
 
c'est bon il marche nickel je te remercie .
0