Suite de calculs, et résultat...particulier.

Résolu/Fermé
18sharky81 Messages postés 23 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 9 août 2012 - 16 avril 2012 à 20:05
18sharky81 Messages postés 23 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 9 août 2012 - 17 avril 2012 à 13:52
Bonjour,
je viens de créer un programme, contenant pas mal de calculs, mais ce dernier m'affiche un résultat assez particulier, qui ne change pas en fonction des valeurs. Je vous ai mis l partie intéressée, car le reste serait une perte de temps. Je vous informe juste que j'ai inclue les bibliothèques (si c'est bien leur nom :p) cmath, iostream, et string. Le voici:

else if(programc== 2)
{
cout << "Which unit do you want to use?:\t";
cin >> unit;
cout << "This is a segment [AB].";
cout << endl << endl << "Enter the abscissa of the point A:\t";
cin >> A.x;
cout << "Enter the ordinate of the point A:\t";
cin >> A.y;
cout << "Enter the abscissa of the point B:\t";
cin >> B.x;
cout << "Enter the ordinate of the point B:\t";
cin >> B.y;

A.x= h;
A.y= g;
B.x= f;
B.y= d;
k= g-d;
K= pow(k,2);
t= h-f;
T= pow(t,2);
O= T+K;
o= sqrt(O);

/*************************** RESULTS ***********************************************/

cout << "The length of the segment [AB] is " << o << " " << unit << ".";
cout << endl << endl << endl;
system("pause");
system("cls");

/*************************** COSING OF "ELSE IF(PROGRAM== 2)" **********************/

}

Quelqu'un pourrait-il m'aider svp?
Merci d'avance.

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
16 avril 2012 à 20:16
Il faudrait au minimum que l'on sache quels sont les types de tes variables !
1
18sharky81 Messages postés 23 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 9 août 2012
16 avril 2012 à 20:23
c'est pas faut^^
donc :
"struct point
{
double x, y;
}"
[...]
"point A, B, C;
double h, g, f, d, k, K, t, T, O, o;
char unit[2];"
Et merci beaucoup de m'aider une nouvelle fois :)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
16 avril 2012 à 20:38
Déjà je pense que tu as un problème avec ton char unit[2], son compte le \0 et le \n ça ne fait plus beaucoup de places pour les données utiles !
Ensuite tu lis au clavier A.x mais tu lui affectes la valeur h qui n'est pas initialisée (idem pour g,f,d), je pense que ce que tu voudrais faire c'est le contraire: h=A.x;

Enfin, quelques remarques sur tes variables :
* Il n'est pas nécessaire de créer une nouvelle variable à chaque fois que tu fais un calcul
* Tu as le droit d'utiliser plusieurs caractères pour nommer tes variables
* Il est fortement conseillé de donner un nom sémantiquement compréhensible pour tes variables.
* Tu as le droit de déclarer tes variables au milieu de ton code.

Cette formule, qui fait la même chose que ton code, est beaucoup plus courte et nettement plus compréhensible que ce que tu proposais :

double distance = sqrt(pow(B.x-A.x,2)+pow(B.y-A.y,2));
0
18sharky81 Messages postés 23 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 9 août 2012
16 avril 2012 à 20:55
Merci beaucoup, en effet c'est mieux d'initialiser les variables.
De plus, pour le calcul, c'est ce que j'avais mis, mais ça le déclarait comme une erreur, je ne sais plus les termes exacts utilisés.
Mais maintenant, le calcul marche...je ne comprends plus rien x)
Et encore merci pur ton aide!!
0
18sharky81 Messages postés 23 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 9 août 2012
16 avril 2012 à 20:58
Mais d'ailleur, dans un autre forum, quelqu'un m'a dit que déclarer une variable en plein switch était une "mauvaise programmation". Pourtant, ce que tu me dis est a peu près pareil non? Pourrait-tu m'éclairer sur ce point stp?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 16/04/2012 à 21:17
Dans un switch ça peut poser effectivement problème, car les variables doivent être les même pour chaque case, mais si c'est juste pour une utilisation locale ça passe. De toute façon, les switch on s'en sert relativement peu souvent, et il ne faut pas prendre les cas particuliers de chaque structure pour des généralités sur toutes les autres... ici tu était dans un if/else, donc aucun soucis !
0