Calcul de la surface d'un champ rectangulaire

Résolu
teschan - Modifié le 21 déc. 2023 à 15:33
 Jin - 19 déc. 2023 à 21:57

Bonjour

Je cherche à calculer le périmètre et la surface d'un champ rectangulaire.

J'ai écrit un programme mais apparemment, il ne fonctionne pas. Pourtant, je pense que mon code est juste :

#include <iostream>

using namespace std;

int main()
{
    int largeur;
    int longueur;  :
    int perimetre;
    int surface;
    cout << "la largeur est :" << endl;
    cin >> largeur;
    cout << "la longueur est :" << endl;
    cin >> longueur;
    perimetre = (longueur + largeur) * 2;
    surface  = longeur * largeur;
    cout << "la surface calculée est :" << surface << endl;
    cout << "le périmetre calculée est :" << perimetre << endl;
    return 0;
}

Merci de me répondre 

A voir également:

2 réponses

Utilisateur anonyme
16 déc. 2023 à 10:12

BONJOUR

si si on aime bien que le bonjour présent par défaut dans la boite de texte ne soit pas supprimé.

Pour tes prochains post merci d'utiliser la coloration syntaxique comme décrit ici

https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Concernant tes problèmes, ton IDE t'a-t-il signalé des erreurs, en général c'est une bonne piste de départ.

En copiant collant ton code sur un site de code en ligne voici ce qu'il me donne

ERROR!
g++ /tmp/rJaVlb1QCT.cpp
/tmp/rJaVlb1QCT.cpp: In function 'int main()':
/tmp/rJaVlb1QCT.cpp:6:16: error: expected primary-expression before ':' token
    6 | int longueur;  :
      |                ^
/tmp/rJaVlb1QCT.cpp:13:1: error: 'perimetre' was not declared in this scope
   13 | perimetre = (longueur + largeur)*2;
      | ^~~~~~~~~
/tmp/rJaVlb1QCT.cpp:14:12: error: 'longeur' was not declared in this scope; did you mean 'longueur'?
   14 | surface  = longeur * largeur;
      |            ^~~~~~~
      |            longueur
 

Donc déjà, en ligne 6, il faut supprimer les : qui trainent.

Ensuite, ça dit que "perimetre" n'existe pas, or, tu as bien écrit la ligne de déclaration, mais après ces fameux : À mon avis, y'a un lien.

Enfin, ça te dit que "longeur" n'existe pas et effectivement, tu n'as pas déclaré de variable qui s'appelle comme ça, mais presque comme ça.

Voilà de quoi rendre ton code fonctionnel.

Mais (conseil pour l'avenir) l'utilisateur lui n'en a cure du code, ce qu'il voit, c'est juste son exécution, et certains pourraient s'offusquer du fait que "périmètre", c'est masculin et donc "calculée" sans e.

Si plus tard, tu présentes une maquette avec des fautes à un client, il pourrait choisir un autre prestataire juste pour cette raison. C'est donc un point à faire attention.

Cela dit, c'est la seule faute et c'est souvent bien pire dans les questions du forum


1

Bonjour,

Pourquoi utilises-tu des "int" ? Es-tu sûr de n'avoir que des nombres entiers ? Si tu veux prendre en compte des variables décimales, il faut utiliser "double".

Attention à l'orthographe "longeur" au lieu de "longueur", puis tu as rajouté un ":" en trop.

Aussi, tu pourrais séparer les kilomètres et les mètres dans le résultat du périmètre. De la même manière, dans le résultat de la surface, tu peux donner le résultat en m² , km² et hectare

Je te propose une correction (maintenant que l'exercice est fini ^^)  :

#include <iostream>
#include <iomanip>
#include <cmath>

int main() {
    using namespace std;
    double largeur;
    double longueur;
    double perimetre;
    double surface;

    cout << "La largeur est (en mètres) : ";
    cin >> largeur;

    cout << "La longueur est (en mètres) : ";
    cin >> longueur;

    perimetre = (longueur + largeur) * 2;
    surface = longueur * largeur;

    int km, m;

    km = perimetre / 1000;
    m = static_cast<int>(round(perimetre - km * 1000));

    cout << fixed;
    cout << "Le périmètre calculé est : "
         << km << " km "
         << m << " m ("
         << setprecision(3) << perimetre << " m)" << endl;

    cout << fixed;
    cout << "La surface calculée est : "
         << setprecision(2) << surface << " m² soit "
         << setprecision(6) << surface / 1000000 << " km² soit "
         << setprecision(1) << surface / 10000 << " ha" << endl;

    return 0;
}

J'ai essayé avec 100 pour chaque, c'est carré !! :p

0