diff --git a/Tp1 b/Tp1 new file mode 100755 index 0000000..65445d6 Binary files /dev/null and b/Tp1 differ diff --git a/Tp1.c b/Tp1.c new file mode 100644 index 0000000..a8d150f --- /dev/null +++ b/Tp1.c @@ -0,0 +1,42 @@ +#include + +void affichage(float x, float y, float z){ + printf("%f %f %f\n", x, y ,z); +} + +void lecture( float *a, float *b, float *c){ + scanf("%f%f%f",a,b,c); +} + +void permuter (float* a, float* b){ + float tmp; + tmp = *a; + *a = *b; + *b = tmp; +} + +void minMax2(float* a, float* b){ + if( *b < *a){ + permuter(a,b); + } +} + +void tri (float* a, float*b, float*c){ + minMax2(a,b); + minMax2(b,c); + minMax2(a,b); + +} + + + +int main(){ + float a,b,c; + lecture(&a,&b,&c); + affichage(a,b,c); + + tri(&a,&b,&c); + affichage(a,b,c); + + return 0; +} diff --git a/Tp1_1 b/Tp1_1 new file mode 100755 index 0000000..38fe6e2 Binary files /dev/null and b/Tp1_1 differ diff --git a/Tp1_1.c b/Tp1_1.c new file mode 100644 index 0000000..cdc29f6 --- /dev/null +++ b/Tp1_1.c @@ -0,0 +1,58 @@ +#include + + +int chiffre(char ch){ + if ((ch >= '0') && (ch <= '9')){ + return 1; + }else{ + return 0; + } +} + +int minuscule(char ch){ + if ((ch >= 'a') && (ch <= 'z')){ + return 1; + }else{ + return 0; + } +} + + +int majuscule(char ch){ + if ((ch >= 'A') && (ch <= 'Z')){ + return 1; + }else{ + return 0; + } +} + + +void analysePhrase(int* nbChar, int* nbChiffre, int* nbMin, int * nbMaj){ + + char c; + scanf("%c",&c); + + + while(c!='.'){ + if(chiffre(c)==1){ + *nbChiffre = *nbChiffre+1; + }else if(minuscule(c)==1){ + *nbMin=*nbMin+1; + }else if(majuscule(c)==1){ + *nbMaj=*nbMaj+1; + } + scanf("%c",&c); + *nbChar=*nbChar+1; + } + +} + + + +int main(){ + int nbChar=0,nbChiffre=0,nbMin=0, nbMaj =0; + printf("Char: %d Chiffre: %d nbMin: %d nbMaj: %d\n",nbChar,nbChiffre,nbMin, nbMaj); + analysePhrase(&nbChar,&nbChiffre,&nbMin,&nbMaj); + printf("Char: %d Chiffre: %d nbMin: %d nbMaj: %d\n",nbChar,nbChiffre,nbMin, nbMaj); + return 0; +} diff --git a/Tp1_2 b/Tp1_2 new file mode 100755 index 0000000..8e1ced2 Binary files /dev/null and b/Tp1_2 differ diff --git a/Tp1_2.c b/Tp1_2.c new file mode 100644 index 0000000..a1276c7 --- /dev/null +++ b/Tp1_2.c @@ -0,0 +1,61 @@ +#include + +void lireDate(int* jour, int* mois, int* annee){ + int i=0; + scanf("%d",&i); + while(i < 1 || i > 32){ + scanf("%d",&i); + } + *jour = i; + scanf("%d",&i); + while(i < 1 || i > 12){ + scanf("%d",&i); + } + *mois = i; + scanf("%d",&i); //do while + while(i < 0000 || i > 9999){ + scanf("%d",&i); + } + *annee = i; +} + +void lire2Dates(int* jour1,int* jour2, int* mois1, int* mois2, int* annee1,int* annee2){ + lireDate(jour1,mois1,annee1); + lireDate(jour2,mois2,annee2); +} + +int compareDate (int jour1,int jour2, int mois1, int mois2, int annee1,int annee2){ + if(annee1 > annee2){ + return 1; + }else if (annee1 < annee2){ + return -1; + }else if (mois1 > mois2){ + return 1; + }else if (mois1 < mois2){ + return -1; + }else if (jour1 > jour2){ + return 1; + }else if (jour1 < jour2){ + return -1; + }else { + return 0; + } +} + +int main(){ + int jour=0,mois=0,annee=0; + int jour2=0,mois2=0,annee2=0; + int valCmp; + lire2Dates(&jour, &jour2, &mois, &mois2, &annee, &annee2); + printf("Date 1 Jour: %d Mois: %d Annee: %d \n",jour, mois, annee); + printf("Date 2 Jour: %d Mois: %d Annee: %d \n",jour2, mois2, annee2); + valCmp = compareDate(jour, jour2, mois, mois2, annee, annee2); + if (valCmp == 1){ + printf("Date1 > Date2\n"); + }else if(valCmp == -1){ + printf("Date2 > Date1\n"); + }else{ + printf("Date égales\n"); + } + return 0; +} diff --git a/Tp1_3 b/Tp1_3 new file mode 100755 index 0000000..6180af1 Binary files /dev/null and b/Tp1_3 differ diff --git a/Tp1_3.c b/Tp1_3.c new file mode 100644 index 0000000..a83a366 --- /dev/null +++ b/Tp1_3.c @@ -0,0 +1,76 @@ +#include + +float somme(float v1, float v2){ + return (v1+v2); +} + +void minMax(float *min, float* max, float a, float b, float c){ + if( a>b && a>c){ + *max = a; + }else if (b>a && b>c){ + *max = b; + }else { + *max =c; + } + + if( a*v1){ + permuter(v1,v2); + } +} + +void traitementSuite( float* min, float* max, float* moyenne, int* existe){ + float tmp=0; + float res=0; + int i=0; + scanf("%f",&tmp); + + if(tmp==0){ + *existe =0; + }else{ + + *min = *max = tmp; + res = res + tmp; + i=1; + scanf("%f",&tmp); + res = res + tmp; + minMax2v(min,&tmp); + minMax2v(&tmp,max); + + while(tmp!=0){ + i++; + scanf("%f",&tmp); + res = res + tmp; + minMax(min,max,*min, tmp,*max); + } + + *moyenne= (res/i); + *existe=1; + } + //printf("somme %f i: %d",res,i); +} + +int main(){ + float min,max,moyenne; + int existe; + traitementSuite(&min,&max,&moyenne,&existe); + printf("min: %f max: %f moyenne: %f, existe: %d",min,max,moyenne,existe); + return 0; +} diff --git a/Tp1_soundex b/Tp1_soundex new file mode 100755 index 0000000..d1b5ca2 Binary files /dev/null and b/Tp1_soundex differ diff --git a/Tp1_soundex.c b/Tp1_soundex.c new file mode 100644 index 0000000..a49e1ff --- /dev/null +++ b/Tp1_soundex.c @@ -0,0 +1,50 @@ +#include + +int minuscule(char ch){ + if ((ch >= 'a') && (ch <= 'z')){ + return 1; + }else{ + return 0; + } +} + + +int majuscule(char ch){ + if ((ch >= 'A') && (ch <= 'Z')){ + return 1; + }else{ + return 0; + } +} + +int estVoyelle(char ch){ + if(ch == 'a' || ch=='e' || ch=='i'|| ch=='o' || ch=='u' || ch=='y' ||ch== 'A' || ch=='E' ||ch== 'I' ||ch== 'O' || ch=='U' || ch=='Y'){ + return 1; + } + return 0; +} + +void soundexcode(){ + char ch; + char savech; + int nblettre = 4; + scanf("%c",&ch); + savech=ch; + printf("==> %c",ch); + + while(nblettre!=1 && (minuscule(ch) || majuscule(ch))){ + scanf("%c",&ch); + if (ch != savech && !estVoyelle(ch)){ + savech=ch; + printf("%c",ch); + + nblettre--; + } + savech=ch; + } + +} + +int main(){ + soundexcode(); +} diff --git a/Tp2/Tp2_Kaprekar b/Tp2/Tp2_Kaprekar new file mode 100755 index 0000000..d18159f Binary files /dev/null and b/Tp2/Tp2_Kaprekar differ diff --git a/Tp2/Tp2_Kaprekar.c b/Tp2/Tp2_Kaprekar.c new file mode 100644 index 0000000..23e2d79 --- /dev/null +++ b/Tp2/Tp2_Kaprekar.c @@ -0,0 +1,95 @@ +#include + +void decomp3(int val, int* centaine, int* dizaine,int* unite){ + *centaine = val/100; + val = val - ((*centaine)*100); + *dizaine = val/10; + val = val - ((*dizaine)*10); + *unite = val; +} + +int recomp3( int centaine, int dizaine,int unite){ + return centaine*100+dizaine*10+unite; +} + +void permuter (int* a, int* b){ + int tmp; + tmp = *a; + *a = *b; + *b = tmp; +} + +void MaxMin(int* v1,int* v2){ + if(*v2>*v1){ + permuter(v1,v2); + } +} + +void ordonne3 (int*a, int*b, int*c){ + MaxMin(a,b); + MaxMin(b,c); + MaxMin(a,b); +} + +void ordonne3croissant (int*a, int*b, int*c){ + MaxMin(a,b); + MaxMin(b,c); + MaxMin(a,b); + permuter(a,c); +} + +int calcNbr(int val){ + + int centaine, dizaine, unite; + int N1, N2, NBR; + + decomp3(val,¢aine,&dizaine,&unite); + + ordonne3(¢aine,&dizaine,&unite); + N1=recomp3(centaine, dizaine, unite); + + ordonne3croissant(¢aine,&dizaine,&unite); + N2=recomp3(centaine, dizaine, unite); + + NBR=N1-N2; + return NBR; +} + + +int convergence(int val){ + int valSave=val; + int NBR; + NBR = calcNbr(val); + + while(valSave != NBR){ + valSave = NBR; + NBR = calcNbr(NBR); + + + //printf("%d\n",NBR); + } + return NBR; +} + + +int main(){ + int val,NBR; + scanf("%d",&val); + NBR = convergence(val); + printf("Nombre: %d Convergence: %d \n",val, NBR); + + /*int N1, N2, NBR; + decomp3(val,¢aine,&dizaine,&unite); + + ordonne3(¢aine,&dizaine,&unite); + N1=recomp3(centaine, dizaine, unite); + + ordonne3croissant(¢aine,&dizaine,&unite); + N2=recomp3(centaine, dizaine, unite); + + NBR=N1-N2; + + //printf("Valeur initiale: %d \n N1: %d \n N2: %d \n NBR: %d\n",val,N1,N2,NBR); + */ + return 0; +} diff --git a/Tp3/Tp3_JeuNbSecret b/Tp3/Tp3_JeuNbSecret new file mode 100755 index 0000000..5c0a67c Binary files /dev/null and b/Tp3/Tp3_JeuNbSecret differ diff --git a/Tp3/Tp3_JeuNbSecret.c b/Tp3/Tp3_JeuNbSecret.c new file mode 100644 index 0000000..6524ec1 --- /dev/null +++ b/Tp3/Tp3_JeuNbSecret.c @@ -0,0 +1,116 @@ +#include + +float somme(float v1, float v2){ + return v1+v2; +} + +float soustraction(float v1, float v2){ + return v1-v2; +} + +float produit(float v1, float v2){ + return v1*v2; +} + +float division(float v1, float v2){ + if(v2 != 0){ + return v1/v2; + } + return -404; +} + +int chiffre(char ch){ + if ((ch >= '0') && (ch <= '9')){ + return 1; + }else{ + return 0; + } +} + + int estOperateur(char c){ + if( c == '+' || c == '-' || c == '*' ){ + return 1; + } + return 0; +} + + +void lireCar( char * car){ + *car = ' '; + while( *car == ' ' || *car == '\n'){ + scanf("%c",car); + } +} + + +int estEgal(char c){ + if( c == '='){ + return 1; + } + return 0; +} + + + + +float faireCalc ( float a, char signe, float b){ + if(signe == '*'){ + return produit(a,b); + } else if(signe == '-'){ + return soustraction(a,b); + } else if(signe == '+'){ + return somme(a,b); + } + return -1; + +} + +int main(){ + char c, signe, v2; + float f1=0, f2=0; + int cpt = 0; + lireCar(&c); + while(chiffre(c)!=1){ + lireCar(&c); + } + f1 = c - '0'; + printf("%f\n\n",f1); + + lireCar(&c); + while(estEgal(c)!=1){ + cpt++; + if(estOperateur(c)){ + signe = c; + } else if (chiffre(c)){ + v2 = c; + f2 = v2 - '0'; + } + if( cpt % 2 == 1 && cpt !=1){ + f1 = faireCalc(f1,signe,f2); + + printf("f1:%f signe: %c f2: %f = %f\n",f1,signe,f2, faireCalc(f1,signe,f2)); + + } + + + lireCar (&c); + + + /* + while(estOperateur(signe)!=1 ){ + lireCar(&signe); + } + lireCar(&v2); + while(chiffre(v2)!=1){ + lireCar(&v2); + } + f2 = v2 - '0'; + + f1 = faireCalc(f1,signe,f2); + printf("%f %c %f = %f",f1,signe,f2, faireCalc(f1,signe,f2));*/ + } + + + return 0; + +} diff --git a/Tp4/Tp4_1 b/Tp4/Tp4_1 new file mode 100755 index 0000000..56dbb61 Binary files /dev/null and b/Tp4/Tp4_1 differ diff --git a/Tp4/tp4.c b/Tp4/tp4.c new file mode 100644 index 0000000..3b9fae0 --- /dev/null +++ b/Tp4/tp4.c @@ -0,0 +1,125 @@ +#include +#include + +#define N 4 + +void printVector (float vect[], int n){ + int i ; + for(i=0; i <= n-1; i++){ + printf("V[%d]:%f ",i, vect[i]); + + } + printf("\n\n"); +} + +void setVector (float vect[], int n){ + int i ; + scanf("%f", &vect[0]); + + for(i=1; i <= n-1; i++){ + scanf("%f", &vect[i]); + while (vect[i] < vect[i-1]){ + printf("001- Suite non croissante \nVecteurActuel:"); + printVector(vect, i); + + scanf("%f", &vect[i]); + } + } +} + + +void calcSommeFloat (float* sommeFloatNeg, float* sommeFloatPos, float vect[], int n){ + int i ; + float resNeg=0; + float resPos=0; + + for(i=0; i <= n-1; i++){ + if(vect[i]>=0){ + resPos += vect[i]; + }else { + resNeg += vect[i]; + } + } + + *sommeFloatPos = resPos; + *sommeFloatNeg = resNeg; +} + +void fusion ( float vect1[],float vect2[],float vectres[], int n){ + int indV1=0; + int indV2=0; + int i; + while( indV1 <= n-1 && indV2 <= n-1){ + if( vect1[indV1] <= vect2[indV2]){ + vectres[indV1+indV2] = vect1[indV1] ; + indV1++; + }else { + vectres[indV1+indV2] = vect2[indV2] ; + indV2++; + } + + } + + if( indV1 == n ){ + for( i = indV2; i <= n-1; i++){ + vectres[indV1+i] = vect2[i]; + } + }else { + for( i = indV1; i <= n-1; i++){ + vectres[indV2+i] = vect1[i]; + } + } +} + +void intersection ( float vect1[],float vect2[],float vectres[], int n, int * nbValV3){ + + int indV1=0; + int indV2=0; + + *nbValV3 = 0; + while( indV1 <= n-1 && indV2 <= n-1){ + if( vect1[indV1] < vect2[indV2]){ + + indV1++; + } else if(vect1[indV1] == vect2[indV2]){ + vectres[*nbValV3]= vect1[indV1]; + (*nbValV3)++; + indV1++; + indV2++; + } else { + indV2++; + } + + } + +} + + + +int main (){ + /*float vector[N]; + float sommeFloatNeg; + float sommeFloatPos; + + setVector(vector, N); + printVector(vector, N); + + calcSommeFloat ( &sommeFloatNeg, & sommeFloatPos, vector, N); + printf("Pos %f ; Neg %f", sommeFloatPos, sommeFloatNeg); + + */ + float vector1[N]; + float vector2[N]; + setVector(vector1, N); + setVector(vector2, N); + float vector3[N*2]; + fusion( vector1, vector2, vector3, N); + printVector( vector3, 2*N); + float vector4[N]; + int nbVal=0; + intersection(vector1, vector2, vector4, N, &nbVal); + printVector( vector4, nbVal); + + + return 1; +} diff --git a/Tp5_Chaines/Tp5_1 b/Tp5_Chaines/Tp5_1 new file mode 100755 index 0000000..0f31500 Binary files /dev/null and b/Tp5_Chaines/Tp5_1 differ diff --git a/Tp5_Chaines/tp5.c b/Tp5_Chaines/tp5.c new file mode 100644 index 0000000..eccf607 --- /dev/null +++ b/Tp5_Chaines/tp5.c @@ -0,0 +1,128 @@ +#include +#include + +#define N 50 + + +void setChaine (char *vect){ + scanf("%s", vect); +} + +void afficheCar (char car, char nb){ + + int nba; + nba = nb - '0'; + int i ; + for(i=1; i <= nba; i++){ + printf("%c", car); + } +} + +void insererCar (char * ch, char car, int* ind, char nb){ + int i ; + int nba; + nba = nb - '0'; + for(i=(*ind); i < (*ind)+nba; i++){ + ch[i] = car; + } + *ind = *ind + nba; +} + + + +int chiffre(char ch){ + if ((ch >= '0') && (ch <= '9')){ + return 1; + }else{ + return 0; + } +} + +int minuscule(char ch){ + if ((ch >= 'a') && (ch <= 'z')){ + return 1; + }else{ + return 0; + } +} + + +int majuscule(char ch){ + if ((ch >= 'A') && (ch <= 'Z')){ + return 1; + }else{ + return 0; + } +} + +void traiterChain ( char v[], char res[]){ + int i; + + i = 0; + int ind = 0; + while(v[i] != '\0'){ + if(v[i+1]=='\0'){ + afficheCar(v[i],'1'); + insererCar(res,v[i],&ind,'1'); + i +=1; + }else if(chiffre(v[i])){ + afficheCar(v[i+1],((v[i])+1)); + insererCar(res,v[i+1],&ind,((v[i])+1)); + i += 2; + } else if(minuscule(v[i]) || majuscule(v[i])){ + + afficheCar(v[i],'1'); + insererCar(res,v[i],&ind,'1'); + i += 1; + } + + } + res[ind] = '\0'; + printf("---->%s",res); +} + +/*void traiterChaine ( char v[]){ + int i; + + i = 0; + while(v[i] != '\0'){ + if(v[i+1]=='\0'){ + afficheCar(v[i],'1'); + i +=1; + }else if(chiffre(v[i])){ + afficheCar(v[i+1],((v[i])+1)); + i += 2; + } else if(minuscule(v[i]) || majuscule(v[i])){ + + afficheCar(v[i],'1'); + i += 1; + } + } +}*/ + + +void EncodChain ( char v[], char encode[]){ + int i; + i = 0; + char cCourant; + + while(v[i] != '\0'){ + if(v[i+1]=='\0'){ + insererCar(encode,v[i+1],&i,1); + i +=1; + + + } + } +} + + + +int main (){ + char vect[N]; + char decode[N]; + setChaine(vect); + traiterChain(vect,decode); + + return 1; +} diff --git a/Tp6_Matrices/.Rhistory b/Tp6_Matrices/.Rhistory new file mode 100644 index 0000000..da7e66e --- /dev/null +++ b/Tp6_Matrices/.Rhistory @@ -0,0 +1,2 @@ +getwd +q() diff --git a/Tp6_Matrices/Tp6_1 b/Tp6_Matrices/Tp6_1 new file mode 100755 index 0000000..b654add Binary files /dev/null and b/Tp6_Matrices/Tp6_1 differ diff --git a/Tp6_Matrices/Tp6_1.c b/Tp6_Matrices/Tp6_1.c new file mode 100644 index 0000000..d1deac1 --- /dev/null +++ b/Tp6_Matrices/Tp6_1.c @@ -0,0 +1,108 @@ +#include +#include + +#define N 3 + +//lecture mat taille N*N +void lireMatrice (int mat[][N], int n){ + + int i,j; + for(i=0; i <= n-1 ; i++){ + + for(j=0; j <= n-1; j++){ + scanf("%d", &mat[i][j]); + } + } +} + +// affiche matrice carre +void afficheMat (int mat[][N], int n){ + int i,j; + for(i=0; i <= n-1 ; i++){ + + for(j=0; j <= n-1; j++){ + printf(" %d ", mat[i][j]); + } + printf("\n"); + } +} + +//calcul somme ligne donnee +int calcSommeLigne (int mat[][N], int n, int ligne){ + int j; + int somme = mat [ligne][0]; + + for(j=1; j <= n-1; j++){ + somme += mat[ligne][j]; + } + //printf("%d",somme); + return somme; +} + +//calcul somme col donnee +int calcSommeCol (int mat[][N], int n, int col){ + int i; + int somme = mat [0][col]; + + for(i=1; i <= n-1; i++){ + somme += mat[i][col]; + } + //printf("%d",somme); + return somme; +} + +//calcul somme col donnee +void calcSommeDiag (int mat[][N], int n, int * sommeHB, int * sommeBH){ + int i; + *sommeHB = mat [0][0]; + *sommeBH = mat [n-1][0]; + for(i=1; i <= n-1; i++){ + *sommeHB += mat[i][i]; + *sommeBH += mat[n-1-i][i]; + + } + //printf("%d et %d",*sommeHB, *sommeBH); + +} + +int estMagique(int mat[][N], int n){ + int i=0; + int estMagique=1; + + int sommeHB, sommeBH; + calcSommeDiag(mat, N, &sommeHB, &sommeBH); + + if(sommeHB != sommeBH){ + estMagique = 1; + } + + while (i < n && estMagique ==1){ + if((calcSommeLigne(mat, N,i) != calcSommeCol(mat, N,i)) || (calcSommeLigne(mat, N,i) != sommeHB)){ + estMagique = 0; + } + + i++; + } + return estMagique; +} + +int main (){ + + int mat [N][N]; + lireMatrice(mat, N); + afficheMat(mat, N); + calcSommeLigne(mat, N,1); + calcSommeCol(mat, N,1); + + int sommeHB, sommeBH; + calcSommeDiag(mat, N, &sommeHB, &sommeBH); + + if( estMagique(mat,N) == 1){ + printf("MAGIQUE"); + }else{ + printf("Non"); + + } + return 1; + +} diff --git a/Tp6_Matrices/Tp6_2 b/Tp6_Matrices/Tp6_2 new file mode 100755 index 0000000..8694f9c Binary files /dev/null and b/Tp6_Matrices/Tp6_2 differ diff --git a/Tp6_Matrices/Tp6_2.c b/Tp6_Matrices/Tp6_2.c new file mode 100644 index 0000000..2304f5a --- /dev/null +++ b/Tp6_Matrices/Tp6_2.c @@ -0,0 +1,176 @@ +#include +#include + +#define N 3 + +//lecture mat taille N*N +void lireMatrice (int mat[][N], int n){ + + int i,j; + for(i=0; i <= n-1 ; i++){ + + for(j=0; j <= n-1; j++){ + scanf("%d", &mat[i][j]); + } + } +} + +// affiche matrice carre +void afficheMat (int mat[][N], int n){ + int i,j; + for(i=0; i <= n-1 ; i++){ + + for(j=0; j <= n-1; j++){ + printf(" %d ", mat[i][j]); + } + printf("\n"); + } +} +// affiche vecteur +void afficheVect (int mat[], int n){ + int i; + for(i=0; i <= n-1 ; i++){ + + + printf(" %d ", mat[i]); + + + } + printf("\n"); +} + + + +void setMatriceVals (int mat[], int n){ + + int i; + + for(i=0; i <= n-1 ; i++){ + mat[i]=0; + + } + afficheVect(mat,n); +} + +//calcul somme ligne donnee +int calcSommeLigne (int mat[][N], int n, int ligne){ + int j; + int somme = mat [ligne][0]; + + for(j=1; j <= n-1; j++){ + somme += mat[ligne][j]; + } + //printf("%d",somme); + return somme; +} + + +void sommeLigneEtVerifNormal(int mat[][N], int val[], int * estNormal, int * sommeLigne, int n){ + *sommeLigne = calcSommeLigne(mat, n, 0); + int sommeTempo; + int i =0; + int j=0; + while (*estNormal == 1 && i