Worms 4 Tweaking
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Worms 4 Tweaking

Le tweaking ou comment créer ses armes au delà de l'usine d'armes
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -29%
Pack Smartphone Google Pixel 8a 5G 128 Go + Ecouteurs ...
Voir le deal
469 €

 

 Mon rectangle ne tourne pas rond...

Aller en bas 
2 participants
AuteurMessage
Hotman
Membre
Hotman


Nombre de messages : 771
Age : 31
Localisation : Ca sent la croquette.....
Date d'inscription : 23/08/2006

Mon rectangle ne tourne pas rond... Empty
MessageSujet: Mon rectangle ne tourne pas rond...   Mon rectangle ne tourne pas rond... EmptyMer 30 Sep 2009, 20:18

Bon, j'ai un problème avec un code apparemment tout simple, mais pour un profane comme moi, bin ça bloque à un endroit, alors voilà le code :

Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


double x = 0, y = 0 ;
double perim(double x , double y);
double aire (double x , double y);
double diagonale (double x, double y) ;

int main(int argc, char *argv[])
{
    int selection = 0 ;


puts ("\n Bienvenue sur perimaire.");
printf("\n === Menu ===");
printf("\n 1 - Calcule du perimetre d'un rectangle");
printf("\n 2 - Calcule de l'aire d'un rectangle");
printf("\n 3 - Calculer la diagonale d'un rectangle");
printf("\n 4 - Sortir") ;
printf("\n Entrez votre choix : ");
scanf("%d", &selection);

switch(selection)
{
    case 1:
        {
            double resultat = 0;
            printf("\n Vous voulez calculer le perimetre");
            printf("\n Entrez la longueur du rectangle : ");
            scanf ("%fl", &x);
            printf("\n Entrez la largueur du rectangle : ");
            scanf("%fl", &y);

            resultat = perim(x ,y ) ;

            printf("\n Le perimetre du rectangle est de %f cm\n", resultat);
            system ("PAUSE");
            break;
        }
        case 2:
        {
            double resultat = 0 ;
            printf("\n Vous voulez calculez l'aire d'un rectangle");
            printf("\n Entrez la longueur du rectangle : ");
            scanf("%fl", &x);
            printf("\n Entrez la largeur : ");
            scanf("%fl", &y);

            resultat = aire (x , y) ;

            printf("\n L'aire du rectangle est de %f cm", resultat);
            break;
        }
        case 3:
        {
            double resultat = 0 ;
            printf("\n Vous voulez calculez la diagonale d'un rectangle");
            printf("\n Entrez la longueur du rectangle: ");
            scanf("%fl", &x);
            printf("\n Entrez la largeur : ");
            scanf("%fl", &y);

            resultat = diagonale(x , y) ;

            printf("\n La diagonale du rectangle est de %f cm", resultat);
            break;
        }
        case 4:
        {
            printf("\n A bientot");
            break;
        }
        default:
            printf("\n Oups ! Choix incorect.");

            exit(EXIT_SUCCESS);
        }

}
        double perim (double x, double y)
        {

            return (x + y)*2;

        }

        double aire(double x, double y)
        {

            return x*y ;
        }

        double diagonale (double x,double y)
        {
            double diagonale1 = 0;

            diagonale1 = (sqrt (x)) + (sqrt (y));
            diagonale1 = diagonale1*diagonale1 ;
            return diagonale1 ;
        }

Il permet de calculer divers truc dans un rectangle seulement voilà, un problème ce pose, c'est que lorsque je veut calculer des entiers, pas de problème, je met toute les variables en "int" et ça marche impec, mais dès que je veut calculer des décimaux, je remplace tout les "int" par "double", les "%d" par "%f" (ou "%fl" pour les scanf), mais là, les calculs me renvoient tout le temps le même resultat, sois 0.00000...

La moitié du code n'est pas de moi, je me suis juste occupé d'aider une personne à corriger ses problèmes, mais j'ai pas pus m'empêcher de faire tout un tas de modifs notamment rajouter la possibilité de calculer la diagonale. Et je veux aussi rendre possible les calculs avec des décimaux ,seulement avec mon problème, impossible pour le moment...Enfin bref, je trouve pas mon erreur, je demande donc de l'aide à un codeur qui passerait par là....Very Happy.
Revenir en haut Aller en bas
_Kilburn
Admin
_Kilburn


Nombre de messages : 1118
Age : 33
Localisation : data\\Tweak\\
Date d'inscription : 25/05/2006

Mon rectangle ne tourne pas rond... Empty
MessageSujet: Re: Mon rectangle ne tourne pas rond...   Mon rectangle ne tourne pas rond... EmptyMer 30 Sep 2009, 21:40

Hé bien, ça m'a pris un bon bout de temps pour trouver parce que je suis habitué à utiliser scanf et printf. En fait, c'est %lf et non %fl pour entrer un double.
En passant, le programme est horriblement indenté, et y'a des variables déclarées un peu partout où elles ne devrait pas être, comme x et y qui sont déclarées en dehors de main(), ce qui n'a aucun intérêt (d'ailleurs, il pourrait y avoir confusion avec les paramètres x et y de chaque fonction). Ensuite, resultat. A quoi bon le déclarer dans chaque case du switch (ce qui engendre une erreur du genre "cross initialization" si on met pas les accolades) quand tu peux tout simplement le déclarer une fois au début de main().

Finalement, il faut obligatoirement un return 0; à la fin de la fonction main. La partie exit(EXIT_SUCCESS) ne sert à rien ici parce que dès que tu quittes la fonction main, le programme se termine. EXIT_SUCCESS en lui même ne sert à rien, c'est une définition qui équivaut à 0, donc tout le monde utilise en général return 0;

Et puis c'est quoi cette fonction diagonale, on a oublié le théorème de Pythagore ? Razz


Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double perim(double x , double y);
double aire (double x , double y);
double diagonale (double x, double y) ;

int main(int argc, char *argv[])
{
    int selection;
    double x, y, resultat;

   printf("\n Bienvenue sur perimaire.");
   printf("\n === Menu ===");
   printf("\n 1 - Calcule du perimetre d'un rectangle");
   printf("\n 2 - Calcule de l'aire d'un rectangle");
   printf("\n 3 - Calculer la diagonale d'un rectangle");
   printf("\n 4 - Sortir") ;
   printf("\n Entrez votre choix : ");
   scanf("%d", &selection);

   switch(selection)
   {
      case 1:
         printf("\n Vous voulez calculer le perimetre");
         printf("\n Entrez la longueur du rectangle : ");
         scanf ("%lf", &x);
         printf("\n Entrez la largueur du rectangle : ");
         scanf("%lf", &y);
         
         resultat = perim(x, y);
         
         printf("\n Le perimetre du rectangle est de %f cm\n", resultat);
         break;
      case 2:
         printf("\n Vous voulez calculez l'aire d'un rectangle");
         printf("\n Entrez la longueur du rectangle : ");
         scanf("%lf", &x);
         printf("\n Entrez la largeur : ");
         scanf("%lf", &y);
         
         resultat = aire(x, y);
         
         printf("\n L'aire du rectangle est de %f cm", resultat);
         break;
      case 3:
         printf("\n Vous voulez calculez la diagonale d'un rectangle");
         printf("\n Entrez la longueur du rectangle: ");
         scanf("%lf", &x);
         printf("\n Entrez la largeur : ");
         scanf("%lf", &y);
         
         resultat = diagonale(x, y);
         
         printf("\n La diagonale du rectangle est de %f cm", resultat);
         break;
      case 4:
         printf("\n A bientot");
         break;
      default:
         printf("\n Oups ! Choix incorect.");
   }
   
   system("PAUSE");
   return 0;
}

double perim (double x, double y)
{
   return (x + y)*2;
}

double aire(double x, double y)
{
   return x*y ;
}

double diagonale(double x,double y)
{
   return sqrt(x*x + y*y);
}
Revenir en haut Aller en bas
https://w4-tweaking.forumgaming.fr
Hotman
Membre
Hotman


Nombre de messages : 771
Age : 31
Localisation : Ca sent la croquette.....
Date d'inscription : 23/08/2006

Mon rectangle ne tourne pas rond... Empty
MessageSujet: Re: Mon rectangle ne tourne pas rond...   Mon rectangle ne tourne pas rond... EmptyMer 30 Sep 2009, 22:19

Comme je le disais, les 3/4 du code sont pas de moi, jamais j'aurais utilisé de case/break déjà, j'ai horreur de ce truc, et puis mon théorème de Pythagore est bel et bien pourrit ( faut vraiment que je me remette à bosser mes maths...) Very Happy. Bref, merci ^^, c'était tout bête.
Revenir en haut Aller en bas
Contenu sponsorisé





Mon rectangle ne tourne pas rond... Empty
MessageSujet: Re: Mon rectangle ne tourne pas rond...   Mon rectangle ne tourne pas rond... Empty

Revenir en haut Aller en bas
 
Mon rectangle ne tourne pas rond...
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Worms 4 Tweaking :: Communauté :: Informatique :: Codage-
Sauter vers: