Solution d'exercice 57

Écrire une fonction qui permet de calculer le prix TTC , cette fonction va recevoir un paramètre de type Réel dont le nom est "prixHT" et un second paramètre de type Réel dont le nom est "tva".

#include <stdio.h> 
float calculPrixTTC(float prixHT, float tva) {
    float prixTTC;
    prixTTC = prixHT * (1 + tva / 100);
    return prixTTC;
}

int main()
{
    float tauxTva,prixHT,prixTTC;
    printf("Entrer le prix HT:");
    scanf("%f",&prixHT);
    printf("Entrer la TVA:");
    scanf("%f",&tauxTva);
    prixTTC= calculPrixTTC(prixHT, tauxTva);
    printf("Prix TTC : %f", prixTTC);
    return 0;
}

************************************

Solution d'exercice 58

Écrire une fonction qui permet d'afficher si un nombre entier passé en paramètre est pair ou impair.

#include <stdio.h>
void parite (int nb) {
    if(nb % 2 == 0)
       printf("%d est impair\n", nb);
    else
       printf("%d est pair\n", nb);
   }

int main()
{ int n;
  printf("Entrer un Entier :");
  scanf("%d",&n);
  parite (n);
   return 0;
}

*************************************

Solution d'exercice 59
Écrire une fonction qui remplace les voyelles (minuscules et majuscules) par des espaces dans une chaîne passée en paramètre.

#include <stdio.h>
int estUneVoyelle(char c) {
    char tVoyelle[] = "aAeEiIoOUuYy";
    for(int i=0 ; i<12 ; i++) {
        if(c == tVoyelle[i])
            return 1;
    }
    return 0;
}

int remplaceVoyellesParEspaces(char text[]) {
    int i=0, nbRemplacement = 0;
    while(text[i] != '\0') {
        if(estUneVoyelle(text[i])) {
            text[i] = ' ';
            nbRemplacement++;
        }
        i++;
    }
    return nbRemplacement;
}

int main() {
char leTexte[50];
printf("Entrez un  mot : ");
scanf("%s", leTexte);

int n = remplaceVoyellesParEspaces(leTexte);

printf("%d caractères ont été remplacés   %s", n, leTexte);

return 0;
}

***************************************

Solution d'exercice 60
Écrire une fonction qui permet de retourner le nombre de caractères d’une chaîne de caractères passée en paramètre. 

#include <stdio.h>

int longueurChaine(char texte[]) {
int longueur = 0;               

while (texte[longueur] != '\0') {
    longueur++;                 
}                                

return longueur;
}

int main() {
char tNom[30];

printf("Saisissez votre nom : "); 
scanf("%s", tNom);             

printf("\nVotre nom compte %d caracteres", longueurChaine(tNom));

return 0;
}

****************************************

Solution d'exercice 61

Écrire une fonction qui permet d'inverser une chaîne de caractères passée en paramètre.

#include <stdio.h>
void inverseChaine(char texte[]) {
  int nbCar, i;
  char temp;

  nbCar = longueurChaine(texte);

  for(i = 0; i < nbCar / 2; i++) {
    echange(&texte[i], &texte[nbCar - 1 - i]);
  }
}

void echange(char* c1, char* c2) {
  char temp = *c1;

  *c1 = *c2;
  *c2 = temp;
}

int longueurChaine(char texte[]) {
  int longueur = 0;
 
  while(texte[longueur] != '\0') longueur++;
 
  return longueur;
}

int main() {
  int nbCar;
  char tMot[30];

  printf("Saisissez un mot : ");
  scanf("%s", tMot);

  inverseChaine(tMot);

  printf("\n%s", tMot);
}
***************************************

Solution d'exercice 62

Écrire une fonction qui cherche combien de fois un caractère est présent dans une chaîne de caractères. Le caractère à chercher et la chaîne seront passés en paramètres.

#include <stdio.h>

int nombreOccurence(char texte[], char car) {
    int nbCar = 0;
    int i;
   
    i = 0;
    while(texte[i] != '\0') {
   
        if(texte[i] == car) nbCar++;
       
        i++;
    }
   
    return nbCar;
}

int main()
{
    char leTexte[40],c;
    printf("Entrer la lettre :");
    scanf("%c",&c);
    printf("Entrer une chaîne :");
    scanf("%s",leTexte);
   
   
    printf("\n\nLe caractère %c est présent %d fois",c, nombreOccurence(leTexte, c));
   
    return 0;
}

************************************

Solution d'exercice 63
Écrire une fonction qui cherche si une valeur est présente dans un tableau (entiers).
Elle renverra 0 si la valeur n'est pas trouvée, sinon retourne 1.Il faut passer en paramètre la valeur cherchée, le tableau et le nombre d'éléments dans le tableau.

#include <stdio.h>

int estDansLeTableau(int val, int tab[], int size) {
    for(int i = 0 ; i < size ; i++) {
        if(tab[i] == val)
            return 1;
     }
   return 0;
}

int main(){
int tab[]= {99,45, 85,10,25, 65, 45, 13, 78, 11, 0, 5,55};
    int valeur;
printf("Entrer la valeur cherchée :");
scanf("%d",&valeur);
if(estDansLeTableau(valeur,tab,13)==1)
        printf("\n%d est existe dans le tableau", valeur);
    else
        printf("\n%d n'est pas dans le tableau", valeur);
       
    return 0;
}

****************************************

Solution d'exercice 64
Écrire une fonction qui tri par ordre croissant les éléments d'un tableau de nombres entiers.

#include <stdio.h>

void tri_selection(int leTableau[], int nbCases) {
  int i, min;
  for(i=0; i < nbCases-1 ; i++) {
    min = i; 
    for(int j=i+1; j < nbCases ; j++) {
        if(leTableau[j] < leTableau[min]) {
            min = j;
        }
    }
    if(min != i) {
        echanger(&leTableau[i], &leTableau[min]);
    }
  }
}

void echanger(int* i, int* j) {
    int temp;
   
    temp = *i;
    *i = *j;
    *j = temp;
}

int main() {
    int tab[] = {99, 45, 85, 10, 25, 65, 45, 100, 78, 11, 0, 5, 55};

    // Affichage du tableau non trié   
    printf("%d", tab[0]);
    for(int i=1; i < 13 ; i++) printf(",%d", tab[i]);

    printf("\n\n");
    tri_selection(tab , 13);
   
    // Affichage du tableau trié
    printf("%d", tab[0]);
    for(int i=1; i < 13 ; i++)
      printf(",%d", tab[i]);
       return 0;
}

*************************************

Solution d'exercice 65

Écrire une fonction récursive qui permet de calculer le factorielle d'un entier saisi par l'utilisateur. 


#include <stdio.h>
int factorielle (int n)
{ if (n==0 || n== 1) return 1;
   else return factorielle (n-1)*n;
    
}
int main() {
  int N;
  printf("Entrer un Entier:");
  scanf("%d",&N);
  printf ("le factorielle de %d est :%d",N, factorielle (N));
  return 0;
}
/* *********** Exemple ************
Entrer un Entier: 5
le factorielle de 5 est :120  */

Solution d'exercice 66

Écrire une fonction récursive qui permet de calculer la somme 1+2+3+...+ N. où N saisi par l'utilisateur.


#include <stdio.h>
int somme (int n)
{ if (n==0) return 0;
   else return somme (n-1)+n;
    
}
int main() {
  int N;
  printf("Entrer un Entier:");
  scanf("%d",&N);
  printf ("la somme est :%d",somme(N));
  return 0;
}

/* *********** Exemple ************
Entrer un Entier:10
la somme est : 55
*/

Solution d'exercice 67

Écrire une fonction récursive permettant, à partir d'un réel x et d'une valeur entière positive n, de calculer x puissance n .


float puissance (float r,int n)
{ if (n==0) return 1;
   else return puissance (r,n-1)*r;
}
#include <stdio.h>


int main() {
  int n; float r;
  printf("Entrer un nombre:");
  scanf("%f",&r);
  printf("Entrer un entier:");
  scanf("%d",&n);
  printf ("%.1f puissance %d est :%.1f",r,n,puissance(r,n));
  return 0;
}

/* *********** Exemple ************
Entrer un Entier: 10
la sommee est : 55
*/

Solution d'exercice 68

Écrire une fonction récursive qui permet d'afficher  les entiers de 0 à 10 .utilisant un seul paramètre  : F(10).


#include <stdio.h>
void f(int i) {
    printf("%d\n",10-i);
    if (i>0) {
      i--; f(i);
    }
}

int main() {
    f(10);
   return 0;
}


/* *********** Exemple ************
Entrer un Entier: 10
0 1  2  3 4  5  6 7 8  9 10
*/

Solution d'exercice 69

Écrire une fonction récursive qui permet d'afficher  les entiers de A à  B . Où A et B sont  des paramètres de cette fonction.


#include <stdio.h>

void f(int i,int n) {
   
    printf("%d\n",i);
    if (i<n) {
      i++; f(i,n);
    }
}

int main() {
    f(3,9);
   return 0;
}


/* *********** Exemple ************
Entrer un Entier A:  3

Entrer un Entier B : 9

  3   4   5   6  7  8  9 
*/

Solution d'exercice 70

Écrire une fonction récursive qui permet de calculer l'image d'un entier (passé en paramètre) par une suite de Fibonacci. Suite de Fibonacci est une suite d'entiers dans laquelle chaque terme est la somme des deux termes qui le précèdent.   F(0)=F(1)=1.

#include <stdio.h>

int Fibonacci(int n)

{

if(n ==0 || n == 1) 

 return 1;

else 

 return Fibonacci(n-2)+Fibonacci(n-1);

}


int main() {

   int n;

  printf("Entrer un entier : ");

  scanf ("%d",&n);

  printf("%d",Fibonacci(n));

  return 0;

}


Solution d'exercice 71

Écrire une fonction récursive qui permet d'afficher les éléments d'une matrice passée en paramètre.


#include <stdio.h>   

 void affiche(int tab[3][4],int a,int b)

{

  if( a < 3 )

    if (b < 4)

    {   printf("%d",tab[a][b]);

        affiche(tab,a,b+1);

    }else{

         printf("\n");

         affiche(tab,a+1,0);

         }

 }


int main() {

int T[3][4]={0,1,2,3,4,5,6,7,0,1,2,3};

     affiche(T,0,0);

    return 0;

}


Solution d'exercice 72

Écrire une fonction récursive qui permet de calculer le PGCD de deux entiers passés en paramètres,( utiliser l'algorithme d'Euclide).

#include <stdio.h>

int  EuclideRecursif(int a,int b) 

{

if( b == 0) 

  return  a ;

 else

  return  EuclideRecursif(b,a%b);

}


int main() {

   int a,b;

  printf("Entrer un entier a :");

  scanf("%d",&a);

  printf("Entrer un entier b :");

  scanf("%d",&b);

  printf("PGCD(%d,%d)=%d",a,b, EuclideRecursif(a,b));

 return 0;

}