diff options
Diffstat (limited to 'sem_2/HLIN202/TP/TP11-12')
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo 8.txt | 110 | ||||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo10 | bin | 0 -> 13656 bytes | |||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo10.cpp | 66 | ||||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo11 | bin | 0 -> 13683 bytes | |||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo11.cpp | 74 | ||||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo5 | bin | 0 -> 13589 bytes | |||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo5.cpp | 49 | ||||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo6 | bin | 0 -> 14155 bytes | |||
| -rw-r--r-- | sem_2/HLIN202/TP/TP11-12/exo6.cpp | 98 |
9 files changed, 397 insertions, 0 deletions
diff --git a/sem_2/HLIN202/TP/TP11-12/exo 8.txt b/sem_2/HLIN202/TP/TP11-12/exo 8.txt new file mode 100644 index 0000000..3284acd --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo 8.txt @@ -0,0 +1,110 @@ +struct polynome {
+int degree;
+double *coefs;
+};
+
+1) polynome cree (){
+ polynome ret;
+ std::cout<<" Entrez le degree du polynome " << std::endl;
+ std::cin>> ret.degree;
+ ret.coefs = new double[ret.degree];
+ return ret;
+}
+2) void init ( polynome * poly ) {
+ for ( int i= 0; i < poly->degree; i ++ ) {
+ std::cout<<" Entrez le coefficient pour x^" << i <<std::endl;
+ std::cin >> poly->coefs[i];
+ std::cout<<std::endl;
+ }
+}
+
+3) void affiche ( polynome poly ) {
+ for ( int i =0; i <poly.degree; i ++ ) {
+ std::cout<<poly.coef[i] << "* X^"<<i<<" "<<i == poly.degree-1 ? " " : " + ";
+ }
+ std::cout<<std::endl;
+}
+
+4 ) polynome derive ( polynome poly ) {
+ polynome derivee;
+ derivee.degree = poly.degree - 1;
+ derivee.coefs = new double[direvee.degree];
+ for (int i = 0; i < derivee.degree; i ++ ) {
+ derivee.coefs[i]= poly.coefs[i+1]* (i + 1);
+ }
+ return derivee;
+}
+
+5 ) polynome primitive ( polynome poly ) {
+ polynome primitive;
+ primitive.degree = poly.degree + 1;
+ primitive.coefs = new double[primitive.degree];
+ primitive.coefs[0]= 0;
+ for (int i = 1; i < primitive.degree; i ++ ) {
+ primitive.coefs[i]= poly.coefs[i-1]* (1/(double)(i + 1));
+ }
+ return primitive;
+}
+
+6) double evalue ( polynome poly, double x) {
+ double ret;
+ for ( int i = 0; i < poly.degree; i ++ ) {
+ ret += ret.coefs[i] * pow ( x, i);
+}
+return ret;
+}
+
+EXERCICE 9 :
+
+1 ) pile init () {
+ pile pilvid;
+ pilvid.cardinal=0;
+ pilvid.suivant=NULL;
+}
+2 ) int cardinalpile ( pile pil ) {
+ return pil.cardinal;
+}
+3 ) bool estvide ( pile pil ) {
+ return pil.cardinal == 0;
+}
+4 ) void empiler ( pile *pil, int n) {
+ pil->cardinal ++;
+ cellule * ptr = new cellule;
+ ptr->contenu = n;
+ ptr->suivant = pil->premier;
+ pil->premier = ptr;
+}
+
+5 ) int depiler (pile * pil) {
+ pil->cardinal --;
+int ret = pil->premier->contenu;
+cellule * ptr = pil->premier->suivant;
+delete pil->premier;
+pil->premier = ptr;
+return ret;
+}
+
+6 )
+void libere ( pile * pil) {
+cellule*cell= pil->premier;
+while ( cell->suivant != NULL) {
+ delete cell;
+ cell = cell->suivant;
+}
+delete[] cell;
+delete[] pil;
+}
+
+7 ) void affichepile ( pile pil ) {
+cellule *cell = pil.premier;
+std::cout<<cell->contenu<< " ";
+while ( cell->suivant != NULL ) {
+cell= cell->suivant;
+std::cout<<cell->contenu << " ";
+}
+cell= cell->suivant;
+std::cout<<cell->contenu << " ";
+}
+
+
+
diff --git a/sem_2/HLIN202/TP/TP11-12/exo10 b/sem_2/HLIN202/TP/TP11-12/exo10 Binary files differnew file mode 100644 index 0000000..b22cbfc --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo10 diff --git a/sem_2/HLIN202/TP/TP11-12/exo10.cpp b/sem_2/HLIN202/TP/TP11-12/exo10.cpp new file mode 100644 index 0000000..f53abed --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo10.cpp @@ -0,0 +1,66 @@ +#include<iostream>
+#include<cmath>
+struct vecteur {
+ int dimension;
+ char nom;
+ double *coords;
+};
+
+vecteur* init ( int taille, char nom) {
+ vecteur * ret = new vecteur;
+ ret->dimension= taille;
+ ret->coords = new double[taille];
+ ret->nom=nom;
+ for ( int i =0; i < taille; i ++) {
+ ret->coords[i]=0;
+ }
+ return ret;
+}
+
+vecteur * oppose ( vecteur * vect) {
+ vecteur * ret = init(vect->dimension, vect->nom);
+ for ( int i =0; i < vect->dimension; i ++) {
+ ret->coords[i]= -vect->coords[i];
+ }
+ return ret;
+}
+
+vecteur * somme ( vecteur * vect1, vecteur * vect2) {
+ if ( vect1->dimension == vect2->dimension) {
+ char nom = 's';
+ vecteur * ret=init ( vect1->dimension, nom);
+ for ( int i =0; i < ret->dimension; i ++) {
+ ret->coords[i]= vect1->coords[i]+ vect2->coords[i];
+}
+return ret;
+}
+return 0;
+}
+
+double scalaire ( vecteur * u, vecteur * v ) {
+ if ( u->dimension != v->dimension) {
+ std::cout<< " erreur " << std::endl;
+ return 0; }
+ double ret=0;
+ for ( int i = 0; i < u->dimension; i ++) {
+ ret += u->coords[i]*v->coords[i];
+ }
+ return ret;
+}
+
+double norme ( vecteur * u ) {
+ return sqrt(scalaire ( u,u));
+}
+
+int main () {
+ vecteur * u = init(2, *"u");
+ vecteur * v = init(2, *"v");
+ v->coords[0]= 0;
+ v->coords[1]= 1;
+ u->coords[0]= 45;
+ u->coords[1]= 1;
+ std::cout<< scalaire(u,v)<<std::endl;
+ std::cout<< " Norme de u : " << norme(u)<<std::endl;
+
+ return 0;
+}
diff --git a/sem_2/HLIN202/TP/TP11-12/exo11 b/sem_2/HLIN202/TP/TP11-12/exo11 Binary files differnew file mode 100644 index 0000000..5dd2658 --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo11 diff --git a/sem_2/HLIN202/TP/TP11-12/exo11.cpp b/sem_2/HLIN202/TP/TP11-12/exo11.cpp new file mode 100644 index 0000000..d99d75a --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo11.cpp @@ -0,0 +1,74 @@ +#include <iostream>
+
+struct cellule {
+ int contenu;
+ cellule *suivant;
+};
+struct file {
+ cellule *premier;
+ cellule *dernier;
+};
+
+file* init () {
+ file * ret = new file;
+ ret->premier=NULL;
+ ret->dernier=NULL;
+ return ret;
+}
+int cardinal ( file *w) {
+ int ret = 1;
+ if (w->premier == NULL ) return 0;
+ cellule * tmp = w->premier;
+ while ( tmp->suivant != NULL) {
+ tmp = tmp->suivant;
+ ret ++;
+ }
+ return ret;
+}
+bool estvide(file *w){
+ return cardinal(w)==0;
+}
+
+void ajouter(file *w, int valeur){
+ cellule * tmp = new cellule;
+ tmp->contenu = valeur;
+ tmp->suivant = w->premier;
+ w->premier = tmp;
+}
+
+int retire( file *w) {
+ int value;
+ cellule * ptr = w->premier;
+ while ( ptr->suivant->suivant != NULL) {
+ ptr = ptr->suivant;
+ }
+ value = ptr->suivant->contenu;
+ delete ptr->suivant;
+ ptr->suivant = NULL;
+ w->dernier = ptr;
+ return value;
+}
+
+void retirefile ( file * w) {
+ while ( w->premier != NULL) {
+ retire(w);
+ }
+ delete w;
+}
+
+void affichefile ( file * w ) {
+ cellule * ptr = w->premier;
+ std::cout << "\" ";
+ while ( ptr != NULL) {
+ std::cout<< ptr->contenu << " ";
+ ptr= ptr->suivant;
+ }
+ std::cout << " \""<< std::endl;
+}
+
+int main () {
+ file * ptrfile = init();
+
+ std::cout << " Taille de la file : " << cardinal(ptrfile)<< std::endl;
+ return 0;
+}
diff --git a/sem_2/HLIN202/TP/TP11-12/exo5 b/sem_2/HLIN202/TP/TP11-12/exo5 Binary files differnew file mode 100644 index 0000000..6287485 --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo5 diff --git a/sem_2/HLIN202/TP/TP11-12/exo5.cpp b/sem_2/HLIN202/TP/TP11-12/exo5.cpp new file mode 100644 index 0000000..24b70b7 --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo5.cpp @@ -0,0 +1,49 @@ +#include<iostream>
+
+struct CD {
+ int pistes;
+ int duree[100];
+};
+
+CD cree (){
+ CD disque;
+ return disque;
+}
+
+void init ( CD *disque) {
+ std::cout<<"Entrez le nombre de pistes"<<std::endl;
+ std::cin>>disque->pistes;
+ for (int i = 0; i < disque->pistes; i++) {
+ std::cout<<"Entrez la duree (en secondes) de la piste numero : "<< i+1<< std::endl;
+ std::cin>> disque->duree[i];
+ }
+}
+void afficheCD ( CD * disque){
+ std::cout<< " Le CD est compose de " << disque->pistes << " pistes."<<std::endl;
+ std::cout<<"Numero de piste | Duree"<<std::endl;
+ for ( int i = 0 ; i < disque->pistes; i ++) {
+ std::cout<< " "<< i + 1 << " "<<disque->duree[i]<<std::endl;
+ }
+}
+int dureetotale(CD disque){
+ int ret=0;
+ for (int i =0; i < disque.pistes; i ++) {
+ ret+=disque.duree[i];
+ }
+ return ret;
+}
+int nbPistesSup ( CD disque, int duree) {
+ int ret = 0;
+ for (int i=0; i < disque.pistes; i ++){
+ ret+= disque.duree[i]>duree ? 1 : 0;
+ }
+ return ret;
+}
+
+int main () {
+ CD disque;
+ init(&disque);
+ std::cout<<"Duree totale : "<< dureetotale(disque)<<std::endl;
+ afficheCD(&disque);
+ return 0;
+}
diff --git a/sem_2/HLIN202/TP/TP11-12/exo6 b/sem_2/HLIN202/TP/TP11-12/exo6 Binary files differnew file mode 100644 index 0000000..c24233d --- /dev/null +++ b/sem_2/HLIN202/TP/TP11-12/exo6 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;
+}
|
