1) اكتب برنامج لحساب وطباعة مساحة دائرة (area = PI * r * r)ومحيطها (circumference = 2 * PI  * r).
إذا علمت أن نصف قطرها (r) يساوي 5.2 وأن  PI = 3.1415926




#include <iostream.h>
main()
{
            float r, PI;
            r = 5.2;
            PI = 3.1415926;
cout<<"area = "<< PI * r * r<<"\n";
            cout<<"circumference = "<< 2 * PI * r;
}


2) اكتب برنامج لإدخال طول (length) وعرض (width) مستطيل.

ويحسب ويطبع حافة المستطيل (perimeter = 2*(length+width)  ) ومساحته (area=length*width)



#include <iostream.h>
main()
{
            int length, width;
            cout<<"length = "; cin>>length;
            cout<<"width = "; cin>>width;
            cout<<"perimeter = "<<2*(length+width)<<"\n";
            cout<<"area = "<<length*width;
}

3 ) اكتب برنامج لقراءة درجات أربع مواد (m1, m2, m3, m4)
 ثم يحسب ويطبع المعدل ( avg = (m1+m2+m3+m4)/4 ) 

#include <iostream.h>
main()
{
            int m1, m2, m3, m4;
            cout<<"Enter marks \n";
            cin>>m1>>m2>>m3>>m4;
            cout<<"avg = "<< (m1+m2+m3+m4)/4;

}

 4 ) اكتب برنامج لطباعة اسمك في السطر الأول من الجهة اليسرى، وعنوانك في وسط السطر الثالث، والجنسية في الجهة اليمنى


#include <iostream.h>
main()
{
            cout<<"Abdulla Awad \n\n\t\t\t";
cout<<"BaitBoss zone \t\t\t Yemeni";
}

 5) اكتب برنامج يقرأ درجة الحرارة بالفهرانهايت ((f، ثم يحسبها بالمئوية ( c= (f-32)*5/9 ) ويطبعها


#include <iostream.h>main(){            float f;            cout<<"f = "; cin>>f;            cout<<"c = "<< (f-32)*5.0/9.0;}


6 اكتب برنامج يقرأ درجة الحرارة بالمئوية (c)، ثم يحسبها بالفهرانهايت ( f= c*9/5+32) ) ويطبعها

 #include <iostream.h>main(){            float c;            cout<<"c = "; cin>>c;            cout<<"f = "<< c*9.0/5.0+32;}

7) اكتب برنامج يقرأ العجلة الثابتة (a) والزمن (t)، ثم يحسب ويطبع                                     المسافة  d=0.5*a*pow(t,2) ) والسرعة النهائية ( v=a*t )                                       
 <include <iostream.h#
#include <math.h>
main()
{
            float a, t;
            cout<<"a = "; cin>>a;
            cout<<"t = "; cin>>t;
            cout<<"d =  \n"<< 0.5*a*pow(t,2);
            cout<<"v = "<< a*t;
}  



8 ) اكتب برنامج يقرأ عددين صحيحين (a,b) وبرتبهما تصاعدياُ (إذا كان الأول أكبر من الثاني بدل بين قيمتهما)                                                                                        


#include <iostream.h>
main()
{
            int a, b, t;
            cout<<"a = "; cin>>a;
            cout<<"b = "; cin>>b;
            if(a>b)
            {
                        t=a; a=b; b=t;
            }
            cout<<a<<" "<<b;
}

                                                  
 
                              

                                           Bases du langage C

  1)PREMIERS PROGRAMMES:
  
           Un programme informatique réalise en général trois choses :
   • Il lit des données en entrée. Le programme doit en effet savoir        à partir de quoi travailler.
    Par exemple, pour utiliser une calculatrice, on doit lui donner          des   nombres
    et lui dire quelles opérations effectuer. Pour cela, on utilise              souvent un clavier,
    mais le programme peut aussi tirer les données d’un disque dur        ou encore d’un
    autre ordinateur via un réseau ou autre.
  • Il effectue des calculs. À partir des données en entrée, le                 programme va appliquer
   automatiquement des méthodes pour traiter ces données et               produire un résultat.
   Les méthodes que sont capables d’effectuer les ordinateurs               s’appellent des algorithmes.
   Par exemple, une calculatrice va appliquer l’algorithme                     d’addition ou de
   multiplication.
  •  Il écrit des données en sortie. Lorsque le programme a obtenu        un résultat, il
    doit écrire ce résultat quelque part pour qu’on puisse l’utiliser.           Par exemple, une
    calculatrice va afficher un résultat à l’écran ou stocker le résultat     en mémoire.
    Le travail d’un programmeur consiste à créer des programmes          informatiques. Le
    programmeur doit pour cela expliquer à l’ordinateur dans un            certain langage, appelé
    langage de programmation, quelles sont les données et quelles          sont les méthodes à
    appliquer pour traiter ces données. Dans ce chapitre, nous               verrons en langage C, les
   premiers exemples permettant :
1. de lire une donnée au clavier avec la fonction scanf ;
2. d’effectuer les calculs les plus simples sur des nombres et de           stocker le résultat
   dans une variable ;
3. d’afficher un texte ou un nombre à l’écran avec la fonction             printf.
   Ce faisant, nous verrons la structure d’un programme C très             simple et quelques
   notions sur la syntaxe du langage. Les notions vues dans ces             exemples seront développées
   dans les chapitres suivants. Une fois que le programmeur a écrit       son programme,
   qui est du texte en langage C, il doit compiler le programme pour     créer un
   fichier exécutable pour qu’un utilisateur du programme puisse          utiliser ce programme.Le processus de compilation est décrit en      annexe.
1.2 )AFFICHER UN MOT
            Voici un programme C qui écrit un message de bienvenue : le mot “Bonjour”.
     #include <stdio.h>
       int main(void)                                   /* programme principal */
      {
              printf("Bonjour !\n");                  /* écriture à l’écran */
      return 0;
¨     }
1.3 LIRE UN NOMBRE
    Voici un programme permettant à l’utilisateur de taper un             nombre au clavier. Ce
   nombre est lu par le programme et mémorisé dans une variable x   qui est un nombre

  réel (type de données float). La variable x est ensuite ré-affichée    par printf.
        #include <stdio.h>                             /* pour pouvoir lire et écrire */
          int main(void)                                   /* programme principal */
        {
           float x;                                             /* déclaration d’une variable x (nombre réel) */
           printf("Veuillez entrer un nombre réel au clavier\n");
          scanf("%f", &x);                                /* lecture au clavier de la valeur de x */
                                                                      /* affichage de x : */
           printf("Vous avez tapé %f, félicitations !", x);
      return 0;
      }



     🔺       Ne pas oublier le & dans le scanf ! Cela provoquerait     une erreur mémoire (ou erreur
  de segmentation) lors de l’exécution du programme, et le                  programme serait

  brutalement interrompu.
1.4 EFFECTUER UN CALCUL ET MÉMORISER

LE RÉSULTAT
          Le programme suivant mémorise le double de x dans une           variable y, par le biais d’une
   affectation. L’affectation (symbole =) permet de stocker le               résultat d’un calcul dans

   une variable.
             #include <stdio.h>                    /* pour pouvoir lire et écrire */
             int main(void)                           /* programme principal */
          {
           float x, y;                                     /* déclaration de deux variables x et y */
            printf("Veuillez entrer un nombre réel au clavier\n");
           scanf("%f", &x) ;                      /* lecture au clavier de la valeur de x */
           y = 2*x;                                      /* on met dans y le double du contenu de x */
          printf("Le double du nombre tapé vaut %f \n", y);
          return 0;

}


     🔺    Le symbole  de l’affectation a une toute autre                                signification que l’égalité mathématique.
             L’affectation signifie qu’une variable prend la valeur du                   résultat d’un calcul.

             Il correspond à une opération de recopie d’une donnée.
     Exercices:
         
            1: (∗) Pour convertir des degrés Fahrenheit en degrés Celsius, on a la formule                           suivante:
                                                          C = 0.55556 × (F − 32)
              où F est une température en degrés Fahrenheit et C la température correspondante en
         degrés Celsius.
     a) Écrire un programme C qui convertit une température entrée au clavier exprimée  en                 degrés Fahrenheit et affiche une valeur approchée de la même température en degrés
            Celsius. Les températures seront exprimées par des nombres réels.
    b) Même question qu’au a) pour la conversion inverse : de degrés Celsius en degrés

            Fahrenheit.
    2 (∗) Lors d’une opération de promotion, un magasin de composants hardware
    applique une réduction de 10% sur tous les composants. Écrire un programme qui
    lit le prix d’un composant au clavier et affiche le prix calculé en tenant compte de la
    réduction.
2.1 (∗∗) Soit la fonction mathématique f définie par f (x) = (2x + 3)(3x² + 2)
      a) Écrire un programme C qui calcule l’image par f d’un nombre saisi au clavier.
      b) Une approximation de la dérivée f ' de la fonction f est donnée en chaque point x,
   pour h assez petit (proche de 0), par :


                   f'(x) =f (x + h) − f (x)/h


      Écrire un programme C qui calcule et affiche une approximation de la dérivée de f

   en un point x entré au clavier. On pourra faire saisir le paramètre h au clavier.
                  Corrigés
1)
a
       int main(void)
       {
          float celsius, fahrenheit;
          printf("Entrez une température en degrés Fahrenheit : ");
         scanf("%f", &fahrenheit);
          celsius = 0.55556 * (fahrenheit - 32.0);
         printf("Température de %f degré Celsius.\n", celsius);
   return 0;

}
b)

     int main(void)
     {
          float celsius, fahrenheit;
          printf("Entrez une température en degrés Celsius : ");
          scanf("%f", &celsius);
          fahrenheit = (celsius / 0.55556) + 32.0;
          printf("Température de %f degré Fahrenheit.\n", fahrenheit);
      return 0;

   }
2.1

    int main(void)
   {
         float prix, prixRemise;
         printf("Entrez un prix : ");
         scanf("%f", &prix);
         prixRemise = 0.9 * prix;
  printf("Le prix avec 10 %% de remise est de %f.\n", prixremise);  
  return 0;
 }
2.1
a)
   int main(void)
  {
      float x, fx;
      printf("Entrez un nombre : ");
      scanf("%f", &x);
      fx = (2.0 * x + 3.0) / (3.0 * x * x + 2.0);
     printf("f(%f) = %f\n", x, fx);
   return 0;
  }
b)
    int main(void)
  {
      float x, h, fx, fx_plus_h, fPrime_x;
      printf("Entrez un nombre : ");
      scanf("%f", &x);
      printf("Entrez un écart h : ");
     scanf("%f", &h);
     fx = (2.0 * x + 3.0) / (3.0 * x * x + 2.0);
     fx_plus_h = (2.0 * (x + h) + 3.0) / (3.0 * (x + h) * (x + h) + 2.0);
     fPrime_x = (fx_plus_h - fx) / h;
    printf("f’(%f) = %f\n", x, fPrime_x);
  return 0;

}
2)TYPES DE DONNÉES:

2.1 VARIABLES ET OPÉRATIONS

          Dans un programme, il apparaît des variables qui permettent      de donner des noms à
    des données. Chaque variable doit avoir un type (nombre entier,      nombre réel, caractère,
    suite de caractères, ou type plus complexe). Chaque variable a          aussi un identificateur
    qui est le nom de la variable. Une déclaration de variable a              toujours la forme :
                          type identificateur;
      ou bien la forme avec l’initialisation (c’est-à-dire que l’on                donne à la variable une valeur initiale) : 
                  type identificateur = valeur;

         On peut aussi déclarer plusieurs variables d’un même type                séparées par des virgules.
2.2 TYPE ENTIER int

         Le type int (abréviation de l’anglais integer) est une                      représentation des nombres
      entiers. Comme toute variable informatique, un int ne peut                prendre qu’un nombre
      fini de valeur. Un int est généralement codé sur 4 octets (32                bits).Dans ce cas, les
       valeurs sont entre −231 et 231 − 1 (ce qui fait bien 232 valeurs          possibles). Notons que
      sur certains vieux systèmes, les int sont codés seulement sur 2           octets.
    Les opérations arithmétiques binaires +, −, ∗, / sont définies sur        les int et donnent
    toujours pour résultat un int.
     #include <stdio.h>
       int main(void)
  {
       int nombre, chiffre;
          puts("Tapez un nombre entier :");
         scanf("%d", &nombre);
         chiffre = nombre%10;
         printf("Le dernier chiffre est : %d", chiffre);
    return 0;
  }
2.3 LES TYPES RÉELS float ET double
         Les types float et double permettent de représenter des            nombres réels avec une certaine précision (suivant une représentation des nombres            appelée virgule flottante   ou nombre flottant).   Un nombre réel tel qu’il est ainsi représenté possède une                 mantisse (des chiffres) et
      un exposant qui correspond à la multiplication par une certaine    puissance de 10. Par
exemple 3.546E − 3 est égal à 3.546 × 10−3, ce qui fait 0.003546.
     Le type double (codé sur 8 octets) est plus précis que le type float (codé sur 4 octets).
La valeur maximale d’un double est d’environ 10308 alors que celle d’un float
est de l’ordre de 1038. (Les valeurs limites exactes sont données par les constantes

DBL_MAX et FLT_MAX de la bibliothèque float.h).
2.4 LE TYPE char
      Le type char (abréviation de l’anglais character) est un type caractère codé sur
1 octet. C’est la plus petite donnée qui puisse être stockée dans une variable. Les
valeurs (de −126 à 125) peuvent réprésenter des caractères conventionnels.
        Par exemple, les caractères alphabétiques majuscules A, B, . . . , Z ont pour valeur
65, 66, . . . , 90 et les minuscules correspondantes a, b, . . . , z ont pour valeurs
97, 98, . . . , 122. On appelle ce codage des caractères le code ASCII.
Une variable de type char peut être considérée soit comme un nombre, soit comme
       un caractère que l’on peut afficher. Dans tous les cas, il s’agit du même type. Pour
désigner par exemple le caractère Z dans un programme, on peut soit écrire ’Z’ (entre
quotes), soit écrire 90 qui est le code ASCII du caractère Z. Dans les deux cas il s’agit
du même caractère et de la même donnée qui peut être stockée dans la même variable

de type char.
2.5 LES TYPES unsigned
     Aux types int et char correspondent des types unsigned int (aussi sur 4 octets) et
unsigned char (aussi sur 1 octet) qui représentent uniquement des valeurs positives.
       Un unsigned int sur 4 octets va de 0 à 232 − 1.

      Un unsigned char sur 1 octet va de 0 à 28 − 1 (c’est-à-dire de 0 à 255).
2.6 AFFECTATIONS ET CONVERSIONS
     Étant données deux variables de même type, on peut recopier le contenu d’une variable
dans l’autre par une affectation (signe =). Plus généralement, on peut copier
dans une variable la valeur de toute une expression.
     Si les deux variables sont de types différents, l’opération d’affectation = va réaliser,
lorsque c’est possible, une conversion. Si la conversion n’est pas possible, le

compilateur affichera un message d’erreur.
Exemple d’affectation
  int var1=0, var2=3;    /* déclarations avec initialisations */

  var1=2*var2+1;    /* affectation : après ceci var1 vaut 7 */
Exemple de conversion d’un float vers un int
int n;
float x=7.6587e2;

n = (int)x; /* après ceci n vaut 765 (arrondi à la partie entière) */
     🔺  Pour le calcul de deuxtiers ci-dessus, écrire                 deuxtiers=n/m ou encore deuxtiers=2/3
   est une grave erreur qui conduit au résultat que deuxtiers      est égal à 0, car le
quotient entre entiers donne une division euclidienne, même lorsqu’on l’affecte

ensuite à un float ou un double.
2.7 LES CONSTANTES ET LE #define
    Une constante est une valeur qui n’est pas susceptible de varier lors de l’exécution
d’un programme. Par exemple, 9.81 est une constante de type float, 1024 est une

constante de type int (qui peut aussi être affectée à une variable de type float).
   Enfin, 65, ou "A" est une constante de type char (qui peut aussi être affectée à un int

ou un float).

      🔺  Ne pas confondre le caractère ’6’, dont le code  ASCII vaut 54, avec le caractère 6,

dont le code ASCII vaut 6, mais qui représente un autre caractère.
2.8 DÉFINIR SES PROPRES TYPES

     En C, le programmeur peut définir ses propres types et donner les noms qu’il veut à
ses types. Pour donner un nom à un type, on utilise typedef. Dans l’exemple suivant,
le programmeur a préféré appeler les nombres entiers Entier plutôt que int.
       #include <stdio.h>
      typedef int Entier;         /* Définition d’un nouveau type Entier */
      int main(void)
      {
          Entier d, n;
          scanf("%d", &n);
           d = 2*n;
         printf("Le double de %d est %d\n", n, d);
       return 0;
     }


      Dans ce cas, le type Entier est simplement sinonyme de int. Nous verrons plus
loin comment définir des types plus compliqués pour représenter des informations de
toutes sortes. Les différents types définis et utilisés dans un programme s’appellent
les structures de données.


Exercices

   3.1 (∗) Sachant que le premier avril 2004 était un jeudi, écrire un programme qui
détermine le jour de la semaine correspondant au 4 mai de la même année. On pourra
représenter les jours de la semaine par des numéros allant de 0 à 6.
   3.2 (∗) Écrire un programme qui lit un nombre au clavier, répond 1 si le nombre est

impair et 0 si le nombre est pair.
Corrigés
3.1
     int main(void)
   {
     int njours;
            /* Convention : 0 <-> lundi, ... 6 <-> Dimanche
         33 jours écoulés entre le 1er avril et le 4 mai */
         njours = (33 + 3) % 7 + 1;
         printf("Le 4 mai était le %d ème jour de la semaine.\n", njours);
      return 0;

    }

3.2
                int main(void)
              {
                   int n, parite;

                   printf("Entrez un nombre : ");
                    scanf("%d", &n);
                     parite = n % 2;
                    printf("La parité du nombre est %d\n", parite);
                   return 0;

                   }

Exercice1

#include<stdio.h>
typedef struct{
      char nom[15];
      char Pr[20];
      char adr[35];
  int num;
  float solde;
}
    Client;
    Client T[50];
  int i,NC;
  float STA,MOY;
  int main()
{
   printf("programme de gestion d'une banque\n");
   printf("entrer le nombre de client\n");
   scanf("%d",&NC);
        for(i=0;i<NC;i++)
{
   printf("Informations du client numero %d\n",i);
   printf("entrer le nom du client\n");
   scanf("%s",T[i].nom);
   printf("entrer le prenom du client\n");
   scanf("%s",T[i].Pr);
   printf("entrer le numero du client\n");
   scanf("%d",&T[i].num);
   printf("entrer l adresse du client\n");
   scanf("%s",T[i].adr);
   printf("entrer le solde du client\n");
   scanf("%f",&T[i].solde);
}
  STA=0;
  for(i=0;i<NC;i++)
  STA=STA+T[i].solde;
  MOY=STA/NC;
  printf("la somme totale est d'argent est:%f\n", STA);
  printf("la moyenne d'argent est :%f\n",MOY);
      for(i=0;i<NC;i++)
{
   printf("information du client numero %d\n",i);
   printf("nom %s\n",T[i].nom);
   printf("prenom %s\n",T[i].Pr);
   printf("adresse %d\n",T[i].adr);
   printf("numero de compte %d\n",T[i].num);
   printf("solde %f\n",T[i].solde);
}
}
Exercice 2

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <ctype.h>
 int main()
{
    float somme ;
    int i ;
   typedef struct
{
    char Nom[20] ;
    char Prenom[30] ;
     float Note[3] ;
    float moyenne ;}etudiant ;
    etudiant eleve ;
    printf("entrer un nom") ;
    scanf("%s",eleve.Nom) ;
    printf("entrer un prenom") ;
    scanf("%s", eleve.Prenom) ;
    printf("entrer les notes");
   somme=0 ;
   for(i=0 ;i<3 ;i++)
{
    scanf ("%f",&eleve.Note[i]) ;
    somme+=eleve.Note[i] ;
}
    i=0 ;
    while(eleve.Nom[i]!='\0')
{
    eleve.Nom[i]=toupper(eleve.Nom[i]) ;
    i++ ;
}
    eleve.moyenne=somme/3 ;
    printf("Nom=%s\n Prenom=%s\n",eleve.Nom,eleve.Prenom);
    printf("Notes");
      for(i=0 ;i<3 ;i++)
     printf("%6.2f",eleve.Note[i]);
      printf("\n Moyenne:%6.2f\n",eleve.moyenne);
     return 0 ;
}
Exercice 3

#include<stdio.h>
typedef struct
{
   char type;
   int reference;
   float prix;
   int quantite;
}
     Produit;
     void Saisie(Produit *p)
{
   printf("Entrez le code du produit : \n");
   scanf("%c", &p->type);
   printf("Entrez la référence : \n");
   scanf("%d", &p->reference); 
   printf("Entrez le prix : \n");
   scanf("%f", &p->prix);
   printf("Entrez la quantité : \n");
   scanf("%d", &p->quantite);
}
     void Affichage(Produit *p)
{
   printf("Produit ");
   switch (p->type)
{
   case '1':
    printf("CM\n");
 break;
   case '2':
    printf("Pr\n");
 break;
    case '3':
    printf("BM\n");
break;
 case '4':
    printf("CG\n");
break;
    default:
     printf("inconnue\n");
}
    printf("Référence : %d\n",p->reference);
    printf("Prix : %f\n",p->prix);
    printf("Quantité : %d\n",p->quantite);
}
  void Commande(Produit *p)
{
   int qte;
    printf("Entrez la quantité commandée : ");
    scanf("%d", &qte);
    printf("Valeur de la commande : %.2f\n", p->prix*qte);
}
    int main()
{
   Produit p;
   Saisie(&p);
   printf("\nRécapitulatif de la commande\n");
   Affichage(&p);
   Commande(&p);
}
Exercice 4

#include <stdio.h>
#include <math.h>
   typedef struct
{
  int x;
  int y;
  int z;} vecteur;
   void saisir(vecteur*A)
{

     printf("donner x y et z\n");
    scanf("\n%d%d%d",&A->x,&A->y,&A->z);
}
  void affiche(vecteur*A)
{
   printf("\n%d %d %d",A->x,A->y,A->z);
}
   vecteur*somme(vecteur*A,vecteur*B)
{
      A->x+=(B->x);
      A->y+=(B->y);
       A->z+=(B->z);
return A;
}
     int produit(vecteur*A,vecteur*B)
{
  int ps;
      ps=(A->x)*(B->x)+(A->y)*(B->y)+(A->z)*(B->z);
return(ps);
}
   int main(){
   vecteur u,v;
int P;
   printf("saisir u\n");
   saisir(&u);
   printf("saisir v\n");
   saisir(&v);
    printf("affiche u");
affiche(&u);
      printf("\naffiche v");
affiche(&v);
      printf("\nle produit de u et v");
      P=produit(&u,&v);
  printf("%d",P);
  printf("\nla somme de u et v");
  affiche(somme(&u,&v));
return 0;
}
                                                         Solution TD 1                                                       
                                                                                                                               Structures de données
   Exercice1

#include<stdio.h>
int main()
{
float TabNotes[3],*ptr,Somme=0;
int i;
ptr=TabNotes;
printf("entrez dix notes : ");
for(i=0;i<3;i++)
{
scanf("%f",ptr);
Somme+=*ptr;
ptr++;}
printf("Moyenne:%6.2f\n",Somme/3);
return 0;
}
Exercice2
#include <stdio.h>
int main()
{
/* Déclarations */
int A[100], B[50]; /* tableaux */
int N, M; /* dimensions des tableaux */
int I; /* indice courant */
/* Saisie des données */
printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
for (I=0; I<N; I++)
{
printf("Elément %d : ", I);
scanf("%d", A+I);
}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
for (I=0; I<M; I++)
{
printf("Elément %d : ", I);
scanf("%d", B+I);
}
/* Affichage des tableaux */
printf("Tableau donné A :\n");
for (I=0; I<N; I++)
printf("%d ", *(A+I));
printf("\n");
printf("Tableau donné B :\n");
for (I=0; I<M; I++)
printf("%d ", *(B+I));
printf("\n");
/* Copie de B à la fin de A */
for (I=0; I<M; I++)
*(A+N+I) = *(B+I);
/* Edition du résultat */
printf("Tableau résultat A :\n");
for (I=0; I<N+M; I++)
printf("%d ", *(A+I));
printf("\n");
return 0;
}
Exercice3

#include<stdlib.h>
#include<stdio.h>
int main()
{
int N,I;
printf("donner votre dimension N \n");
scanf("%d",&N);
int T[N],V[N],W[N];
printf("lecture du vecteur T\n");
for(I=0;I<N;I++)
{
printf("donner l elt %d \n",I);
scanf("%d",&T[I]);}
printf("lecture du vecteur V\n");
for(I=0;I<N;I++)
{
printf("donner l elt %d \n",I);
scanf("%d",&V[I]);}
//calcul du produit vectoriel
for(I=0;I<N-2;I++)
W[I]=T[I+1]*V[I+2]-T[I+2]*V[I+1];
W[N-2]=T[N-1]*V[0]-T[0]*V[N-1];
W[N-1]=T[0]*V[1]-T[1]*V[0];
printf("Voici votre vecteur W =TxV\n");
for(I=0;I<N;I++)
printf("%d |",W[I]);
printf("\n");
system("PAUSE");
return(0);
}
Exercice4

1-Formalisme tableau
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i;
char T[30], c;
printf("\n Indroduire un texte:");
for(i=0;((c=getchar())!=' ');i++)
{
T[i]=c;
}
printf("\n le nouveau texte est:");
for(i=i-1;i>=0;i--)
{
 printf("%c",T[i]);
}
printf("\n");
system("PAUSE");
return 0;
}
2-Formalisme pointeur
#include <stdio.h>
#include <stdlib.h>
int main()
{
 char *T,c;
int i;
T=(char*)malloc(30);
printf("\n Indroduire un texte:");
for(i=0;((c=getchar())!='\0 ');i++)
*(T+i)=c;
printf("\ Le nouveau texte est:");
for(i=i-1;i>=0;i--)
{
printf("%c",*(T+i));}
printf("\n");
free(T);
system("PAUSE");
return 0;
}
Exercice6
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int heures, minutes, secondes;
void lecture(int *h, int *m, int *s);
void print_heure();
void set_heure(int *h, int *m, int *s);
void tick();
int main()
{int N,h,m,s;
lecture(&h,&m,&s);
set_heure(&h,&m,&s);
printf("avant tick\n");
print_heure();
tick();
printf("apres tick\n");
print_heure();
printf("FIN \n");
system("PAUSE");
return 0;
}
void lecture(int *h, int *m, int *s)
{
do{printf("donner trois entiers h<24 m<=59 et s<=59\n");
scanf("%d%d%d",h,m,s);}
while((*h>=24)||(*m>59)||(*s>59));
}
void print_heure()
{
printf("Il est %d heure(s) %d minute(s) %d seconde(s)\n",heures,minutes,secondes);
}
void tick()
{
if(secondes<59)
secondes=secondes+1;
if((secondes==59)&&(minutes<59))
minutes=minutes+1;
if((secondes==59)&&(minutes=59))
heures=heures+1;
}
void set_heure(int *h, int *m, int *s)
{
heures=*h;
minutes=*m;
secondes=*s;
}
                                     structure de données:                TD : N°2

Exercice 1:

Dans une banque le client est connu par :
 Son nom ;
 Son prénom ;
 Son adresse
 Son numéro de compte
 Son solde
1. Écrire la structure client
2. Écrire un programme permettant :
 D’entrer les informations de tous les clients de la banque (on considère NC : nombre de client)
 De faire la somme d’argents totale STA et la moyenne d’argent Moy par client
 D’afficher les données et les résultats à l’écran
Exercice 2 :

crire une structure Étudiant qui contient les informations suivantes.
  Le nom,
  Le prénom,
  Et ses notes.
Écrire un programme permettant :
 1. Transformer le nom en majuscules
 2. Calculer la moyenne des notes
Exercice 3:

Un grossiste en composants électroniques vend quatre types de produits :
 • Des cartes mères (code 1)  • Des processeurs (code 2) ;
 • Des barettes mémoire (code 3) ;
 • Des cartes graphiques (code 4).
 Chaque produit possède une référence (qui est un nombre entier), un prix en euros et des quantités disponibles.
 a) Définir une structure Produit qui code un produit.
b)crire une fonction de saisie et d’affichage des données d’un produit.
 c) Écrire une fonction qui permet à un utilisateur de saisir une commande d’un produit. L’utilisateur saisit les quantités commandées et les données du produit. L’ordinateur affiche toutes les données de la commande, y compris le prix.
2016/2017 Structures de données 
Exercice 4:

Écrire les fonctions qui, étant donnés deux vecteurs u et v (ayant 3 coordonnées chacun stockées dans une structure) permettant :
 1. La saisie d’un vecteur
 2. L’affichage d’un vecteur
 3. La somme de u et v
 4. Le produit scalaire de u et v
 5. Le produit vectoriel de u par v
 6. Écrire un programme de test
                                                    Structures de données:
  
   Exercice 1:

Ecrire un programme qui calcule la moyenne de dix notes. Elles sont rangées dans un tableau. L’accès aux éléments du tableaux utilise les pointeurs.  
Exercice 2 :
Ecrire un programme en langage C qui lit deux tableaux d'entiers A et B et leurs dimensions N et M au clavier et qui ajoute les éléments de B à la fin de A. Utiliser deux pointeurs PA et PB pour le transfert et afficher le tableau résultant A. 
Exercice 3 :

Ecrivez un programme qui calcule le produit vectoriel de deux vecteurs T[N] et V[N]  
Exercice 4 :

Ecrire un programme qui lit au clavier un mot (30 caractères) et qui l'affiche "à l'envers". 
1. En utilisant le « formalisme tableau » ; 
2. En utilisant le « formalisme pointeur ». 
 Exercice 5:

 Écrire un programme comportant :
1. La déclaration de 3 variables globales entières heures, minutes, secondes ;
2. Une fonction print_heure sans argument qui imprimera le message :
Il est ... heure(s) ... minute(s) ... seconde(s)
3. Une fonction set_heure recevant comme arguments trois paramètres de type entiers h, m et s passés par adresse, dont les valeurs seront affectées respectivement à heures, minutes et secondes ;
4. Une fonction tick qui incrémentera l’heure d’une seconde ;
5. Une fonction lecture recevant comme arguments trois paramètres de type entiers h, m et s passés par adresse. Dans cette fonction on lit h, m et s.
6. Une fonction main qui appellera les fonctions print_heure, set_heure et tick.