diff options
Diffstat (limited to 'sem_2/HLIN202/TP/TP11-12/exo6.cpp')
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo6.cpp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/sem_2/HLIN202/TP/TP11-12/exo6.cpp b/sem_2/HLIN202/TP/TP11-12/exo6.cpp new file mode 100644 index 0000000..55b5d4d --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo6.cpp @@ -0,0 +1,98 @@ +#include<iostream>
+#include<cmath>
+
+
+struct s_point {
+ char nom;
+ int x,y;
+};
+
+struct lignepolygonale {
+ int nombre;
+ s_point *points;
+};
+
+double distance (s_point, s_point);
+void affiche (s_point);
+
+double longueur ( lignepolygonale lp) {
+ double ret=0;
+ for ( int i = 0; i < lp.nombre-1; i ++) {
+ ret += distance (lp.points[i], lp.points[i+1]);
+ }
+ return ret;
+}
+lignepolygonale saisieLP () {
+ lignepolygonale ret;
+ std::cout<<"Nombre de points de la LP :";
+ std::cin>>ret.nombre;
+ std::cout<<std::endl;
+ ret.points=new s_point[ret.nombre];
+ for ( int i =0; i < ret.nombre; i ++) {
+ std::cout<< " Entrez le nom du point numero "<<i+1<<" ";
+ std::cin >> ret.points[i].nom;
+ std::cout << " Entrez les coords du point " << ret.points[i].nom << std::endl<<"x : ";
+ std::cin >> ret.points[i].x;
+ std::cout<<" y : ";
+ std::cin>>ret.points[i].y;
+ std::cout<<std::endl;
+ }
+ return ret;
+}
+lignepolygonale carre ( int n, s_point A) {
+ lignepolygonale ret;
+ ret.nombre=5;
+ ret.points=new s_point[ret.nombre];
+ ret.points[0]=A;
+ ret.points[1].x=A.x+n;
+ ret.points[1].y=A.y;
+ ret.points[2].x=A.x+n;
+ ret.points[2].y=A.y+n;
+ ret.points[3].x=A.x;
+ ret.points[3].y=A.y+n;
+ ret.points[4]=A;
+ return ret;
+}
+void afficheLP ( lignepolygonale lp){
+ for (int i = 0; i< lp.nombre; i ++){
+ affiche(lp.points[i]);
+ }
+}
+double distance (s_point a, s_point b){
+ return sqrt(pow(b.x-a.x,2)+pow(b.y-a.y,2));
+}
+
+s_point saisie (){
+ s_point point;
+ std::cout<<"Saisir le nom du point ( une lettre capitale) "<<std::endl;
+ std::cin>>point.nom;
+ std::cout<<std::endl<<"Saisir la coordonnee en x ";
+ std::cin >>point.x;
+ std::cout << std::endl << "Saisir la coordonnee en y ";
+ std::cin >> point.y;
+ std::cout << std::endl;
+ if ( (int) point.nom > 90 || (int)point.nom < 65){
+ std::cout<<" Saisie incorrecte"<<std::endl;
+ point = saisie();}
+ return point;
+}
+void affiche (s_point point){
+ std::cout<<"point"<<point.nom<<" de coordonees " << point.x << point.y << std::endl;
+}
+void maz ( s_point * point) {
+ point->nom = (char)0;
+ point->x=0;
+ point->y=0;
+}
+s_point sym ( s_point point) {
+ s_point ret;
+ ret.x= - point.x;
+ ret.y= -point.y;
+ ret.nom = (char)(65+(90-(int)point.nom));
+ return ret;
+}
+int main () {
+ lignepolygonale zbeb;
+ zbeb=saisieLP();
+ return 0;
+}
|
