summaryrefslogtreecommitdiff
path: root/sem_2/HLIN202/TP/TP7-8
diff options
context:
space:
mode:
authorGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
committerGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
commit9fe033ea88c2f705ec18c232873d056e0c229d72 (patch)
tree0647dc8c51610c7336c88c04de2068ea14b21e17 /sem_2/HLIN202/TP/TP7-8
Initial commit
Diffstat (limited to 'sem_2/HLIN202/TP/TP7-8')
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex10/eo10bin0 -> 13586 bytes
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp118
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex6/exo6bin0 -> 9343 bytes
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex6/exo6.cpp16
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex7/exo7bin0 -> 13482 bytes
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex7/exo7.cpp22
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex8/exo8bin0 -> 13449 bytes
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex8/exo8.cpp27
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex9/exo9bin0 -> 9237 bytes
-rw-r--r--sem_2/HLIN202/TP/TP7-8/ex9/exo9.cpp41
-rw-r--r--sem_2/HLIN202/TP/TP7-8/pendu/pendubin0 -> 13755 bytes
-rw-r--r--sem_2/HLIN202/TP/TP7-8/pendu/pendu.cpp75
12 files changed, 299 insertions, 0 deletions
diff --git a/sem_2/HLIN202/TP/TP7-8/ex10/eo10 b/sem_2/HLIN202/TP/TP7-8/ex10/eo10
new file mode 100644
index 0000000..6171fa6
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex10/eo10
Binary files differ
diff --git a/sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp b/sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp
new file mode 100644
index 0000000..167ce84
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp
@@ -0,0 +1,118 @@
+#include <iostream>
+
+void affichetab( int taille, int tab[]);
+void inittab ( int taille, int tab[]);
+void inittabsuite ( int taille, int tab[]);
+int min (int a, int b);
+bool prefixe ( int taille1, int taille2, int tab1[],int tab2[]);
+bool tabidentique ( int taille1, int taille2, int tab1[], int tab2[]);
+void bornes ( int taille, int tab[], int* max, int* min);
+bool palindrome ( int taille, int tab[]);
+
+//determine si un tableau de caractere est un palindrome
+bool palindrome ( int taille, char tab[]){
+ char tabinv[taille];
+ for ( int i=0; i< taille; i++){
+ tabinv[i]=tab[taille-i];
+ }
+ for ( int i =0; i<taille; i ++ ){
+ if (tab[i]!=tabinv[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//affiche un tableau de caractere sous la forme d'un mot
+void affichechartab ( int taille, char tab[]) {
+ for ( int i = 0; i< taille; i ++) {
+ std::cout<<tab[i];
+ }
+ std::cout<<std::endl;
+}
+
+//affiche le tableau sous la forme [ x1, x2, x3, x4 ... ]
+void affichetab( int taille, int tab[]) {
+ for ( int i = 0; i < taille; i++) {
+ if (i==0) std::cout<<"[ ";
+ std::cout<<tab[i];
+ if (i!=taille-1) std::cout<<" , ";
+ }
+ std::cout<<" ] " <<std::endl;
+}
+//initialise un tableau de taille n avec toutes ses cases a t[i]=i*i
+void inittab ( int taille, int tab[]){
+ for ( int i =0; i < taille; i++) {
+ tab[i]=i*i;
+ }
+}
+//initialise un tableau avec les valeurs de la suite u0=0 Un+1=Un + 2n + 1
+void inittabsuite ( int taille, int tab[]){
+ tab[0]=0;
+ for (int i =1; i < taille ; i ++) {
+ tab[i]= tab[i-1]+2*(i-1)+1;
+ }
+}
+//determine le minimum de a et b
+int min (int a, int b) {
+ return a<=b? a : b;
+}
+//determine si tab1 est prefixe de tab2 ou si tab2 est prefixe de tab1
+bool prefixe ( int taille1, int taille2, char tab1[],char tab2[]) {
+ if (taille1 != taille2) {
+ return false;
+ }
+ else {
+ int i = 0;
+ while ( i < taille1 && tab1[i]==tab2[i]){
+ i++;
+ }
+ return (i == taille1);
+ }
+ }
+//determine si deux tableau sont identiques
+bool tabidentique ( int taille1, int taille2, int tab1[], int tab2[]){
+ if (taille1==taille2) {
+ int i =0;
+ while ( i < taille1 && tab1[i]==tab2[i]){
+ i++;
+ }
+ return i==taille1;
+ }
+ else {
+ return false;
+ }
+}
+//determine la plus grande et la plus petite valeur du tableau
+void bornes ( int taille, int tab[], int* max, int* min) {
+ *max=tab[0],*min=tab[0];
+ int bctab[taille],bctab2[taille];
+ for (int i=0; i< taille; i ++) {
+ bctab[i]=tab[i];
+ bctab2[i]=tab[i];
+ }
+ for (int i = 0; i < taille-1; i ++ ) {
+ *max = bctab[i] >= bctab[i+1] ? bctab[i]>= *max ? bctab[i] : *max : bctab[i+1]> *max ? bctab[i+1] : *max;
+ *min = bctab2[i] <= bctab2[i+1] ? bctab2[i]<= *min ? bctab2[i] : *min : bctab2[i+1]< *min ? bctab2[i+1] : *min;
+ }
+}
+
+int main () {
+ // int table1[100];
+ // int table2[10];
+ // inittab(100, table1);
+ // inittabsuite(10,table2);
+ // affichetab(100,table1);
+ // affichetab(10,table2);
+ //int *pmin, *pmax;
+ //int max,min;
+ //pmax=&max;
+ //pmin=&min;
+ //bornes ( 100, table,pmax, pmin );
+ if ( prefixe(100,10,table1,table2)) {
+ std::cout<<"les tableaux sont egaux"<<std::endl;
+ }
+ else std::cout<<"Les tableaux sont differents"<<std::endl;
+ //std::cout << "Le max du tableau est " << max << " le min est " << min << std::endl;
+ return 0;
+}
diff --git a/sem_2/HLIN202/TP/TP7-8/ex6/exo6 b/sem_2/HLIN202/TP/TP7-8/ex6/exo6
new file mode 100644
index 0000000..56b1f66
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex6/exo6
Binary files differ
diff --git a/sem_2/HLIN202/TP/TP7-8/ex6/exo6.cpp b/sem_2/HLIN202/TP/TP7-8/ex6/exo6.cpp
new file mode 100644
index 0000000..c0c36ef
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex6/exo6.cpp
@@ -0,0 +1,16 @@
+#include<iostream>
+
+int occurence ( int T[10], int x) {
+ int cpt=0;
+ for ( int i=0; i < 10; i ++) {
+ cpt += T[i]==x ? 1 : 0;
+ }
+ return cpt;
+}
+int main () {
+ int tab[10]= {2,3,4,2,3,1,8,2,5,9};
+ int x=0;
+ std::cout<< " Entrez un entier positif, ce programme calcule le nombre d'occurence de cet entier dans le tableau [2 3 4 2 3 1 8 2 5 9]" << std::endl;
+ std::cin>>x;
+ std::cout<<x << " est present " << occurence(&tab[0], x) << " fois dans le tableau "<<std::endl;
+}
diff --git a/sem_2/HLIN202/TP/TP7-8/ex7/exo7 b/sem_2/HLIN202/TP/TP7-8/ex7/exo7
new file mode 100644
index 0000000..ee26882
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex7/exo7
Binary files differ
diff --git a/sem_2/HLIN202/TP/TP7-8/ex7/exo7.cpp b/sem_2/HLIN202/TP/TP7-8/ex7/exo7.cpp
new file mode 100644
index 0000000..eff59d5
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex7/exo7.cpp
@@ -0,0 +1,22 @@
+#include <iostream>
+#include<math.h>
+
+void codbin ( int x, int tab[32]){
+ for (int i=0; i < 32; i ++) {
+ tab[i]= x < pow(2,32-(i+1)) ? 0 : 1;
+ x = x < pow(2,32-(i+1)) ? x : x- pow(2,32-(i+1));
+ }
+}
+
+int main () {
+ int tab[32];
+ int x;
+ std::cout<< " Entrez un nombre entier positif, ce programme calcule sa valeur en binaire sur 32 bits "<<std::endl;
+ std::cin>>x;
+ codbin(x, &tab[0]);
+ for (int i=0; i < 32; i ++) {
+ std::cout<<tab[i];
+ }
+ std::cout<<std::endl;
+ return 0;
+}
diff --git a/sem_2/HLIN202/TP/TP7-8/ex8/exo8 b/sem_2/HLIN202/TP/TP7-8/ex8/exo8
new file mode 100644
index 0000000..b3cd858
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex8/exo8
Binary files differ
diff --git a/sem_2/HLIN202/TP/TP7-8/ex8/exo8.cpp b/sem_2/HLIN202/TP/TP7-8/ex8/exo8.cpp
new file mode 100644
index 0000000..d12de6e
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex8/exo8.cpp
@@ -0,0 +1,27 @@
+#include<iostream>
+
+int produitscal (int v[], int u[], int d) {
+ int ret=0;
+ for (int i = 0; i < d; i ++) {
+ ret += v[i]*u[i];
+ }
+ return ret;
+}
+
+int main () {
+ int d;
+ std::cout<<"entrez le nombre de composante des vecteurs" << std::endl;
+ std::cin >> d;
+ int v[d], u[d];
+ for (int i=0; i < d; i ++) {
+ std::cout<<"Entrez la valeur "<< i+1 << " de v"<<std::endl;
+ std::cin>>v[i];
+ }
+ for (int i=0; i < d; i ++ ) {
+ std::cout<<"Entrez la valeur "<< i+1 << " de u"<<std::endl;
+ std::cin>>u[i];
+ }
+ std::cout<<"Le produit scalaire de u.v vaut " << produitscal(v,u,d) << std::endl;
+ return 0;
+
+}
diff --git a/sem_2/HLIN202/TP/TP7-8/ex9/exo9 b/sem_2/HLIN202/TP/TP7-8/ex9/exo9
new file mode 100644
index 0000000..55c4d59
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex9/exo9
Binary files differ
diff --git a/sem_2/HLIN202/TP/TP7-8/ex9/exo9.cpp b/sem_2/HLIN202/TP/TP7-8/ex9/exo9.cpp
new file mode 100644
index 0000000..021365f
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/ex9/exo9.cpp
@@ -0,0 +1,41 @@
+#include<iostream>
+
+void permut ( int tab[], int d, int i) {
+ int Temp[d];
+ for (int j =0; j < d; j ++) {
+ Temp[j]=tab[j];
+ }
+ if ( i > 0) {
+ for (int j = 0; j < d ; j ++) {
+ if (j-i < 0 ) {
+ tab[j]=Temp[d-i+j];
+ }
+ else {
+ tab[j]= Temp[j-i];
+ }
+ }
+ }
+ else if ( i < 0 ) {
+ for (int j = 0; j<d;j ++) {
+ if (j-i==d) {
+ tab[j]=Temp[d+i-j];
+ }
+ else if ( j-i > d) {
+ tab[j]=Temp[d-j];
+ }
+ else {
+ tab[j]=Temp[j-i];
+ }
+ }
+ }
+}
+int main () {
+ int tab[6] = {0,1,2,3,4,5};
+ //Ce programme effectue une rotation de i etapes sur le tableau donné ( le sens change en fonction du signe de i)
+ permut ( tab, 6, 2);
+ for (int i =0; i< 6; i ++) {
+ std::cout<<tab[i]<<" ";
+ }
+ std::cout<<std::endl;
+ return 0;
+}
diff --git a/sem_2/HLIN202/TP/TP7-8/pendu/pendu b/sem_2/HLIN202/TP/TP7-8/pendu/pendu
new file mode 100644
index 0000000..139bd06
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/pendu/pendu
Binary files differ
diff --git a/sem_2/HLIN202/TP/TP7-8/pendu/pendu.cpp b/sem_2/HLIN202/TP/TP7-8/pendu/pendu.cpp
new file mode 100644
index 0000000..6d38990
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP7-8/pendu/pendu.cpp
@@ -0,0 +1,75 @@
+#include <iostream>
+#include <cstdlib>
+/* HLIN202 TD8 exercice du pendu
+Par Gaspard Coulet ( gaspard.coulet@etu.umontpellier.fr )
+*/
+
+//affiche un tableau de caractere sous la forme d'un mot
+void affichechartab ( int taille, char tab[]) {
+ std::cout<<std::endl;
+ std::cout<<" ";
+ for ( int i = 0; i< taille-1; i ++) {
+ std::cout<<tab[i];
+ }
+ std::cout<<std::endl<<std::endl;
+}
+
+//determine si lettre est appartient a mot, si oui, le revele dans print, et incremente justes
+bool estdansmot ( char lettre, char mot[], int n, char print[], int * justes) {
+ bool ret= false;
+ for ( int i = 0; i < n; i++ ) {
+ if ( mot[i]==lettre) {
+ ret= true;
+ print[i]=lettre;
+ *(justes) += 1;
+ mot[i]='_';
+ }
+ }
+ return ret;
+}
+
+int main () {
+ int vie = 5;
+ int taille;
+ char lettre;
+ int justes=0;
+ std::cout << " Joueur 1 : Entrez la taille du mot a faire deviner " << std::endl;
+ std::cin >> taille;
+ std::cout<<" Joueur 1 : Entrez le mot a faire deviner, puis pressez enter"<< std :: endl;
+ char motdev[taille+1];
+ char backup[taille+1];
+ for (int i=0; i < taille; i ++ ) {
+ std::cin>>motdev[i];
+ backup[i] = motdev[i];
+ }
+ char printed[taille+1];
+ for (int i =0; i < taille; i ++) {
+ printed[i]= '-';
+ }
+ system("clear");
+ affichechartab(taille+1, printed);
+ while ( vie != 0 && justes != taille) {
+ std::cout << " Joueur 2 : Vous avez : " << vie << " vies; Entrez une lettre :"<<std::endl;
+ std::cin >> lettre;
+ system("clear");
+ if (estdansmot(lettre, motdev, taille+1, printed, &justes)) {
+ system("clear");
+ std::cout << " La lettre : " << lettre << " fait est bel est bien dans le mot" << std::endl;
+ affichechartab(taille+1,printed);
+ }
+ else {
+ system("clear");
+ vie --;
+ std::cout<<" La lettre ne fait pas partie du mot, vous perdez une vie, il vous en reste : " << vie << std::endl;
+ affichechartab(taille+1, printed);
+ }
+ }
+ if ( vie == 0) {
+ std::cout<< " Perdu ! Le mot a deviner etait : ";
+ affichechartab(taille+1, backup);
+ }
+ else {
+ std::cout << " Bravo ! Vous avez trouve le mot :) " << std::endl<< std::endl;
+ }
+ return 0;
+}