diff options
| author | Gaspard Coulet <gaspard.coulet@mines-ales.org> | 2021-04-28 23:05:53 +0200 |
|---|---|---|
| committer | Gaspard Coulet <gaspard.coulet@mines-ales.org> | 2021-04-28 23:05:53 +0200 |
| commit | 9fe033ea88c2f705ec18c232873d056e0c229d72 (patch) | |
| tree | 0647dc8c51610c7336c88c04de2068ea14b21e17 /sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp | |
Initial commit
Diffstat (limited to 'sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp')
| -rw-r--r-- | sem_2/HLIN202/TP/TP7-8/ex10/exo10.cpp | 118 |
1 files changed, 118 insertions, 0 deletions
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;
+}
|
