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

Résolu
18sharky81 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
18sharky81 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Il faudrait au minimum que l'on sache quels sont les types de tes variables !
1
18sharky81 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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