lundi 28 décembre 2015

Suite de TD n°1

Pour Télecharger Programme qui contient tout les exercices avec la possibilté d'ajouter des nouveaux exercices    ►    Programme Langage C

Exercice n°14:

#include <stdio.h>
int main()
{
    int N=10, P=5, Q=10, R;
    char C='S';
    N=5 ; P=2;
    Q= N++ > P || P++ != 3;
    printf("C : N=%d P=%d Q=%d\n", N, P, Q);
    N= 5; P= 2;
    Q= N++ < P || P++ != 3;
    printf("D : N=%d P=%d Q=%d\n", N, P, Q);
    N=5; P=2;
    Q= ++N == 3 && ++P == 3;
    printf("E : N=%d P=%d Q=%d\n", N, P, Q);
    N=5 ; P=2;
    Q= ++N == 6 && ++P == 3;
    printf("F : N=%d P=%d Q=%d\n", N, P, Q);
    N=C;
    printf("G : %c %c\n", C, N);
    printf("H : %d %d\n", C, N);
    printf("I : %x %x\n", C, N);
    return 0;
}
a)    Sans utiliser l'ordinateur, trouvez et notez les resultats du programme ci-dessus.

b)    Verifiez vos resultats a l'aide de l'ordinateur.

La solution :

   _________________
  | C: N=6 P=2 Q=1      |
  | D: N=6 P=3 Q=1      |
  | E: N=6 P=2 Q=0      |
  | F: N=6 P=3 Q=1      |
  | G: S S                       |
  | H: 83 83                   |
  | I: 53 53                     |
  |_________________|
Exercice n°15:

(Premiers Programmes):

 1.Ecrire un programme qui demande a l'utilisateur une valeur entiere et qui affiche cette valeur multipliee par une constante k.

 2.Nous supposons qu'une variable entiere k contient une valeur entre 1 et 3.Ecrire un programme qui affiche "un","deux" ou "trois" suivant la valeur de k.

 3.Ecrire un programme "egalite de reels" qui demande a l'utilisateur de saisir deux valeurs reelles et qui affiche "oui" si les valeurs sont identiques ou "non" sinon.

La solution :


1)                                                | 2)
                                                   |
#include <stdio.h>                       | #include <stdio.h>
#include <stdlib.h>                      | #include <stdlib.h>
                                                   |
int main()                                     | int main()
{                                                 | {
    int nb;                                     |    int k=0;
    printf("Saisir le nombre: ");      |    printf("Saisir la valeur de k:");
    scanf("%d",&nb);                   |    scanf("%d",&k);
                                                  |    if (k==1)
    printf("\n%dk\n",nb);               |        printf("\nUn\n");
    return 0;                                  |    if (k==2)
}                                                |        printf("\nDeux\n");
                                                  |    if (k==3)
                                                  |        printf("\nTrois\n");
                                                  |    return 0;
                                                  | }
3)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float nb1,nb2;
    printf("Saisir le nombre reel 1 :");
    scanf("%f",&nb1);
    printf("Saisir la nombre reel 2 :");
    scanf("%f",&nb2);
    printf("_______________________\n\n");
    if (nb1==nb2)
        printf("Oui, les valeurs sont identiques");
    else
        printf("Non, les valeurs non identiques");
    return 0;
}
Exercice n°16:

(Traces Du Programme):

  On Considere le programme suivants :
 
Programme :
 ___________________________________________
           #include <stdio.h>
           #include <conio.h>
             void main ()               
          {                       
                                   
             int a, b, c, resultat;       
              a = -4;               
              b =  3;               
              a = b - c;               
              c = a - b;                   
            if  (a > c)               
                  b = a + b;               
            else                   
                c = b - 2*a;           
                                   
                 resultat = 3*b - 2*c;           
             printf("resultat est : %d", resultat);
             getch();               
           }                   
  ___________________________________________
                
    Effectuez la trace pas a pas du programme:

La solution :

 a  b  c  resultat
-4  -  0     -
-4  3  0     -
 3  3  0     -
 3  3  6     -
 3  3 -3     -      => On prend Instruction de "else" car a<c
 3  3 -3     15

resultat est : 15
______________________
Fin du programme.

Exercice n°17:


(Conversion):

  Ecrivez un programme de conversion euros to Dirhams : on donne un montant et une devise et, suivant la devise, on fait l'une ou l'autre des conversions.

 (Indication : le taux de change est defini comme une constante avec  1euro=10,9485Dhs)


La solution :

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int choix;
    double nb1;
    printf("saisir montant a convertir :\n");
    scanf("%lf",&nb1);
    do
    {
    printf("\n choisir devise covertir :\n");
    printf("1.euros to dirhams\n2.dirhams to euros\n Votre Choix ?\n");
    scanf("%d",&choix);
    } while(choix <1 || choix >2);
    if(choix==1)
        printf("%lf euros = %lf dirhams\n",nb1,nb1*10.9485);
    if(choix==2)
        printf("%lf dirhams = %lf euros\n",nb1,nb1/10.9485);

    return 0;
}

Exercice n°18:


(Par ici la monnaie):

 On desire ecrire un programme qui demande a l'utilisateur une somme en euros et qui indique comment repartir cette somme selon les billets (20 Dhs, 50 Dhs, 100 Dhs, et 200 Dhs) et les pieces habituelles (0.05 Dhs, 0.10 Dhs, 0.20 Dhs, 0.50 Dhs, 1 Dhs, 2 Dhs, 5 Dhs et 10 Dhs).

La solution :


#include <stdio.h>

int main()
{
    int somme,b200,r200,b100,r100,b50,r50,b20,r20,p10,r10,p5,r5,p2,r2,p1;
    do{
    printf("Somme = ");
    scanf("%d",&somme);
    }while(somme<0);
    b200=somme/200; r200=somme%200;
    b100=r200/100; r100=r200%100;
    b50=r100/50; r50=r100%50;
    b20=r50/20; r20=r50%20;
    p10=r20/10; r10=r20%10;
    p5=r10/5; r5=r10%5;
    p2=r5/2; r2=r5%2;
    p1=r2;
printf("%d billet 200\n%d billet 100\n%d billet 50\n%d billet 20\n",b200,b100,b50,b20);
printf("%d piece 10\n%d piece 5\n%d piece 2\n%d piece 1\n",p10,p5,p2,p1);
    return 0;
}
Exercice n°19:

(Le produit des deux):

  Ecrire un programme qui determine le signe du produit de 2 nombres. Ce programme ne doit pas calculer le produit et doit differencier le cas ou le produit est nul.


La solution :

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float nb1,nb2,P;
    printf("Saisir les 2 nombres : ");
    scanf("%f %f",&nb1,&nb2);
    P=nb1*nb2;
    if (P>0)
        printf("Le Produit est positif");
    else if (P<0)
        printf("Le produit est negatif");
    else
        printf("Le produit est nul");
    return 0;
}

Exercice n°20:


(Le libraire):

  Un libraire des livres scolaires propose a la vente : livre scientifique brut a 12,54 Dhs l'unite (en cartons de 6, 12 ou 18 unite) ainsi que un livre litteraire a 9,80 Dhs l'unite.

  Le transport est facture 0,52Dhs l'unite, mais il est gratuit pour les 40 premieres unites d'une commande depassant 100.

  Ecrivez un programme permettant, apres saisie, l'edition d'une facture. Prevoyez un message d'erreur si le nombre de livre n'est pas un multiple de 6. Declarez les differents parametres en constantes.


La solution :
______________________________________________________

Exercice n°21:


(la somme de durees):

 On souhaite ecrire un programme permettant de calculer la somme de deux durees exprimees chacune sous la forme de 3 entiers  (heure, minute, seconde).

  Exemple :

               Heure    Minute    Seconde
Dure 1           1        35         45
Duree 2       10        15         59
_________________________________           
Somme        11        51         44

1) Ecrivez ce programme en considerant que les deux dates saisies au clavier sont valides.

2) Que se passe-t-il si les deux durees saisies ne sont pas valides (i.e. le nombre de minutes ou de secondes est superieur a 60) ? Modifiez votre programme pour gerer ce cas.

3) Ecrivez un programme qui calcule la difference de deux durees (on suppose que la premiere est superieure a la deuxieme).

La solution :


#include <stdio.h>


int main()
{
    int H1=0,M1=0,S1=0,H2=0,M2=0,S2=0,D=0,HD=0,MD=0,SD=0;
    printf("saisir la duree hh:mm:ss \n");
    scanf("%d:%d:%d",&H1,&M1,&S1);
    printf("saisir la duree hh:mm:ss \n");
    scanf("%d:%d:%d",&H2,&M2,&S2);
    D=(H1*3600+M1*60+S1)+(H2*3600+M2*60+S2);
    HD=D/3600; MD=(D%3600)/60; SD=D%60;
    printf("            heures  minute  seconde\n");
    printf("Duree 1 :     %d  :   %d   :   %d\n",H1,M1,S1);
    printf("Duree 2 :     %d  :   %d   :   %d\n",H2,M2,S2);
    printf("___________________________________\n");
    printf("Somme   :     %d  :   %d   :   %d",HD,MD,SD);
    return 0;
}


Exercice n°22:

(Faites sauter la banque):

  La combinaison d'un coffre-fort est representee par un entier compose de 3 chiffres.

1) Ecrire un programme qui demande a l'utilisateur de saisir 3 chiffres au clavier (en 3 saisies independantes) et qui affiche un message indiquant s'ils forment la bonne combinaison ou non. Nous supposons que l'utilisateur saisit 3 chiffres valides (i.e.des nombres compris entre 0 et 9).

2) Que se passe-t-il si l'utilisateur saisit des nombres invalides ? Le programme fonctionne-t-il toujours ?

3) Est-il possible de faire en sorte qu'a chaque fois que l'utilisateur saisit un nombre invalide, il lui demande d'en saisir un nouveau et ce, tant que le nombre est invalide ?

La solution :

1)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int paswrd,n=193; //n signifie le code que l'utilisateur doit saisir
    printf("\nsaisir 3 chiffres entre 0 et 9 : ");
    scanf("%d",&paswrd);
    if(paswrd==n)
        printf("\ncombinaison correct\n");
    else
        printf("\ncombinaison faute\n");
    return 0;
}

2) *Si les chiffres sont invalides le programme affiche un message :
                "Combinaison faute"
   *Le programme S'arrete.

3)
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int paswrd,n=193;
    do{
    printf("\nsaisir 3 chiffres entre 0 et 9 : ");
    scanf("%d",&paswrd);
    if(paswrd==n)
        printf("\ncombinaison correct\n");
    else
        printf("\ncombinaison faute\n");
    }while(paswrd !=n);
    return 0;
}

Exercice n°23:

  Ecrire un programme qui permet d'affichez un triangle isocele forme d'etoiles de N lignes (N est fourni au clavier)

Exemple :

   Nombre de lignes : 8

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

La solution :


#include <stdio.h>
main()
{
 int LIG;   /* nombre de lignes        */
 int L;     /* compteur des lignes     */
 int ESP;   /* nombre d'espaces        */
 int I;     /* compteur des caracteres */

 do
   {
     printf("Nombres de lignes : ");
    scanf("%d", &LIG);
   }
 while (LIG<1 || LIG>20);

 for (L=0 ; L<LIG ; L++)
   {
    ESP = LIG-L-1;
    for (I=0 ; I<ESP ; I++)
        putchar(' ');
    for (I=0 ; I<2*L+1  ; I++)
        putchar('*');
    putchar('\n');
   }
  return 0;
}

Exercice n°24:

  Ecrire un programme qui permet d'affiche la table des produits pour N variant de 1 a 10 :

 X*Y I   0   1   2   3   4   5   6   7   8   9   10
--------------------------------------------------
  0     I   0   0   0   0   0   0   0   0   0   0    0
  1     I   0   1   2   3   4   5   6   7   8   9 10
  2     I   0   2   4   6   8  10  12  14  16  18  20
  3     I   0   3   6   9  12  15  18  21  24  27  30
  4     I   0   4   8  12  16  20  24  28  32  36  40
  5     I   0   5  10  15  20  25  30  35  40  45  50
  6     I   0   6  12  18  24  30  36  42  48  54  60
  7     I   0   7  14  21  28  35  42  49  56  63  70
  8     I   0   8  16  24  32  40  48  56  64  72  80
  9     I   0   9  18  27  36  45  54  63  72  81  90
 10    I   0  10  20  30  40  50  60  70  80  90 100


La solution :

#include <stdio.h>
#define MAX 10  // nombre de lignes et de colonnes

int main()
{

 int i;              /* compteur des lignes   */
 int j;              /* compteur des colonnes */

 /* Affichage de l'en-tete */
 printf(" X*Y I");
 for (j=0 ; j<=MAX ; j++)
        printf("%4d", j);
 printf("\n");
 printf("------");
 for (j=0 ; j<=MAX ; j++)
        printf("----");
 printf("\n");

 /* Affichage du tableau */
 for (i=0 ; i<=MAX ; i++)
      {
       printf("%3d  I", i);
       for (j=0 ; j<=MAX ; j++)
            printf("%4d", i*j);
       printf("\n");
      }
  return 0;
}

Exercice n°25:

  Ecrire un programme qui calcule la somme et la moyenne des N elements de tableau saisie par l'utilisateur (le nombre Max des elements de tableau: 50).


La solution :



#include <stdio.h>
int main()
{
 /* Declarations */
 int T[50]; /* tableau donne  */
 int N;     /* dimension      */
 int i;     /* indice courant */
 int SOM;  /* somme des elements */
 float MOY; /*moyenne des elements*/

 /* Saisie des donnees */
 printf("Dimension du tableau (max.50) : ");
 scanf("%d", &N );
 for (i=0; i<N; i++)
    {
     printf("Element %d : ", i);
     scanf("%d", &T[i]);
    }
  /* Affichage du tableau */
 printf("Tableau donne :\n");
 for (i=0; i<N; i++)
     printf("%d ", T[i]);
 printf("\n");
  /* Calcul de la somme */
 for (SOM=0, i=0; i<N; i++)
     SOM += T[i];
  /* Edition du resultat */
 printf("Somme des elements : %d\n", SOM);
 MOY=SOM/N;
 printf("Moyenne des elements : %.2f", MOY);
 return 0;
}


Exercice n°26:

 Ecrire un programme qui calcule le produit scalaire de deux  vecteurs d'entiers U et V (de meme dimension).

Exemple:

   /            \     /            \
   | 3  2  -4 | * | 2  -3  5 | = -20
   \            /     \            /

La solution :



#include <stdio.h>
main()
{
 /* Declarations */
 int U[50], V[50]; /* tableaux donnes */
 int N;     /* dimension        */
 int i;     /* indice courant   */
 long PS;   /* produit scalaire */
 /* Saisie des donnees */
 printf("Dimension des tableaux (max.50) : ");
 scanf("%d", &N );
 printf("** Premier tableau **\n");
 for (i=0; i<N; i++)
    {
     printf("Element %d : ", i);
     scanf("%d", &U[i]);
    }
 printf("** Deuxieme tableau **\n");
 for (i=0; i<N; i++)
    {
     printf("Element %d : ", i);
     scanf("%d", &V[i]);
    }
 /* Calcul du produit scalaire */
 for (PS=0, i=0; i<N; i++)
      PS += (long)U[i]*V[i];
  /* Edition du resultat */
 printf("Produit scalaire : %ld\n", PS);
 return 0;
}

Afficher Les Commentaires

0 commentaires

Enregistrer un commentaire