1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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;
}
|