cette page est consacrée a la programmation, en c++, j'y ai mis mes différents TP:

 

(bien sûr vue de ma! manière)

retour sur etudes et cours

retour sur fabium

                                             (inactif)suite


Sommaire

  1. TP1: généralités  
  2. TP2: généralités(suite)  
  3. TP3: fonctions et sous programmes
  4. TP4: récursivité
  5. TP5: les enregistrement
  6. TP6: liste et pointeur

TP1: généralités

il s'agit d'une première approche au c++:

*)réaliser le jeu suivant en c++:

l'ordinateur et le joueur choisisse un nombre a tour de rôle, le nombre ne peut prendre que 3 valeur{0, 1 ou 2}, si la différence entre les deux nbre choisi vaut:

2: alors le joueur qui a proposer le plus grand nbre gagne 1point.                                                                         

1: alors c'est le joueur qui a proposer le plus petit nbre qui gagne 1 point.

0: aucun point n'est marquer.

celui qui totalise 10 point le premier gagne le jeu, l'humain peut aussi sortir directement du jeu en introduisant un nbre négatif.  

le programme: (code source)

/*------------------------------------------------------------------------*/
/* fichier: jeu.ccp                                                                                     */
/* description: jeu pour l'initiation au turbo c++.                                       */
/* remarque: on aurai pu utiliser le graphisme, ça serais super!                  */
/*                  pour que ce programme fonctionne en visuelle c++ il faut    */
/*                 désactiver l'instruction clrscr()et getch()                               */
/*----------------------------------------------------------------------- */

#include <stdio.h>  //pour les fonctions printf et scanf. 
#include <conio.h> //pour les fonctions clrscr() et getch().
#include <stdlib.h> //pour la fonction random
main()
{    //********** déclaration des variables**************//
int ca=0;
int cb=0,a=0,b;
clrscr();    //debut des instructions 
while (ca<10 && a>=0 && cb<10)
    {
    printf("donner un nombre des trois 0 1 ou 2\n");
    scanf("%d",&a);
        if(a<3)
        {
        b=random(3);//le choie de l'ordinateur est mis dans b
        printf("fabi a choisi le numéro %d\n",b);//zâama fabi c'est l'ordi!
        if (abs(b-a)==2)
            {
            if (b>a)
            {
            cb=cb+1;
            }
            else
            {
            ca=ca+1;
            }
            }
        if (abs(b-a)==1)
           {
            if (b>a)
                {   
                ca=ca+1;
                }
            else
                {
                cb=cb+1;
                }
            }
            printf("la somme de vos point est %d\n",ca);
            printf("la somme des points de fabi est %d\n",cb);
           }
        else
        {
        printf("vous devez donner un chiffre parmis {0,1,2}!\n");
        }
    }
if (ca==10)
    {
    printf("felicitation! vous avez gagner!");
    }
else
    {
    printf("vous avez perdu???!!");
    }
getch();
}

 

Retour en haut

TP2 généralités (suite)...

écrire un programme qui dit si un nbre est parfait ou non.

remarque: un nbre parfait est un nbre au quelle la somme de ces diviseurs est égale a lui même exemple{6, les diviseur sont 1,2,3 et on a:1+2+3=6}  

le programme: (code source)

/*------------------------------------------------------------------------*/
/* fichier: premier. ccp                                                                             */
/* description: programme en turbo c++ qui calcul si un nbre est premier. */
/* remarque:  même chose:                                                                      */
/*                  pour que ce programme fonctionne en visuelle c++ il faut    */
/*                 désactiver l'instruction clrscr()et getch()                               */
/*----------------------------------------------------------------------- */

#include <stdio.h>  //pour les fonctions printf et scanf. 
#include <conio.h> //pour les fonctions clrscr() et getch().
#include <math.h> //pour la fonction fmod
main()
{
int t,i; //t sera le nbre a vérifier 
int c=0;
printf("donner le nombre\n");
scanf("%d",&t);
for (i=1;i<t;i++)
  {
   if ( fmod(t,i)==0 )
    {
    c=c+i;
    }
  }
if (c==t)
 {
 printf("nombre parfait\n");
 }
else
 {
 printf("non parfait\n");
 }
getch();
}

Retour en haut

TP3:fonctions et sous programmes...

écrire les sous programme suivant:

1)lecture_vect(float tab[],int taille): qui lit un vecteur tab de taille 'taille'

2)affiche_vect(float tab[],int taille): qui affiche le vecteur tab de taille 'taille'

3)fonction : cherche_vect(float tab[], int taille, float val): qui recherche un élément val dans un vecteur tab de taille 'taille', si l'élément existe cherche_vect retourne son indice, sinon elle retourne -1.

le programme: (code source)

#include<stdio.h>
#include<conio.h>
float a[5];
float x;
int n=5;
int indice;
void lecture_vect(float tab[],int taille);
void affiche_vect(float tab[],int taille);
int cherche_vect(float tab[], int taille, float val);
                 //////////////////////////
         /**programme principale**/
                 //////////////////////////
main()
{
clrscr();
lecture_vect(a,n);
affiche_vect(a,n);
printf("\n donner la valeur a chercher\n");
scanf("%f",&x);
printf("\n voici l'indice de la valeur %d",cherche_vect(a,n,x));
getch();
}
                  /////////////////////////////////
         /**fin du programme principale**/
                  /////////////////////////////////
        // début du 1er sous programme //
                 /////////////////////////////////

void lecture_vect(float tab[],int taille)
{
int i;
for(i=0;i<taille;i++)
   {
   scanf("%f",&tab[i]);
   }
}
                   /////////////////////////////
            //fin du 1er sous programme//
                  /////////////////////////////

                  ///////////////////////////////
       /////debut du 2eme sous programme/////
                 ///////////////////////////////

void affiche_vect(float tab[],int taille)
{
int i;
for(i=0;i<taille;i++)
  {
  printf("%f .",tab[i]);
  }
}
         //////////////////////////
   ////debut de la fonction/////////
         //////////////////////////

int cherche_vect(float tab[], int taille, float val)
{
int i=0;
int j=0;
while(j==0 && i<taille)
  {
    if( tab[i] == val )
    {
    j=i;
    }
  i=i+1;
  }
if (j==0)
  { j=-1;
  }
return (j+1);
}
 
Retour en haut

TP4:récursivité...

écrire un sous programme qui donne la puissance d'un nombre entier.

écrire un programme récursif qui calcul le factorielle d'un nbre.

écrire un programme récursif qui donne une solution au problème des tours d'anoî.

le programme: (code source)

/* puissance d'un nbre entier  */

#include<stdio.h>
#include<math.h>
#include<conio.h>
main()
{
int a,b;
int puissance(int x,int y);
clrscr();
printf("doner a puis b :");
scanf("%d%d",&a,&b);
printf("\npuissance(%d,%d)=%d",a,b,puissance(a,b));
getch();
}
int puissance(int x, int y)
{
if(y==0)
  {
  return(1);
  }
else
  {
  x=x*puissance(x,y-1);
  }
return(x);
}

/* factorielle d'un nbre  */

#include<stdio.h>
#include<math.h>
#include<conio.h>
main()
{
int a;
int fact(int c);
printf("donner a=\n");
scanf("%d",&a);
printf("\n fact(%d)= %d",a,fact(a));
getch();
}
int fact(int c)
{
if(c==0)
  {
  return(1);
  }
else
  {
  c=c*fact(c-1);
  }
return(c);
}

/* problème d'anoî */

#include<stdio.h>
#include<math.h>
#include<conio.h>
void anoi(int n,int depuis,int vers,int inter)
{
if (n==1)
  {
  printf("de la pile %d à la pile %d\n",depuis,vers);
  }
else
  {
  anoi(n-1,depuis,inter,vers);
  anoi(1,depuis,vers,inter);
  anoi(n-1,inter,vers,depuis);
  }
}
main()
{
int nbdisq;
clrscr();
printf("donner nbre de disq a teplacer\n");
scanf("%d",&nbdisq);
anoi(nbdisq,1,2,3);
getch();
}

Retour en haut

TP5: les enregistrement...

définir 3 type d'enregistrement:

le premier élève contenant 3 champs : le numéro de l'élève, le nom et son numéro de classe.

le deuxième module contenant 3 champs : le numéro du module, le nom et son coefficient.

le 3eme note  contenant 3 champs: le numéro de l'élève, le nom de matière et sa note.

afficher chaque enregistrement et finalement calculer la moyenne de chaque élève ainsi que la moyenne de la classe dans chaque module.
le programme: (code source)

#include<stdio.h>
#include<conio.h>
#include<math.h>
typedef struct //pour définir la structure.
{int numel;char nom[12];int class;}eleve;
typedef struct
{int numat;char mat[12];int coef;}matiere;
typedef struct
{int numel;int numat;int note;}noter;
main()
{
char y;
eleve e[2]; //on remarque que élève est devenu un type prédéfinie 
matiere n[2];
noter nt[4];
int i,j,k=0;
float moy[3]={0,0,0};
float moy0;
clrscr();
//********************remplissage du 1er enregistrement********************/
for(i=0;i<2;i++)
  {
  printf("\ndonner le numero de l'eleve nø= ");
  scanf("%d",&e[i].numel); 
  printf("\ndonner son nom= ");
  scanf("%s",&e[i].nom);
  printf("\ndonner son numero de classe= ");
  scanf("%d",&e[i].class);
  }
printf("\n*** en attente.... apuiller sur une touche !");
y=getch();
clrscr();
//*******************remplissage du 2eme enregistrement********************/
printf("\n **** enregistrement numero 2: ****\n");
for(i=0;i<2;i++)
  {
  printf("\ndonner le numero de matiere nø= ");
  scanf("%d",&n[i].numat);
  printf("\ndonner le nom de la matierre= ");
  scanf("%s",&n[i].mat);
  printf("\ndonner sont coeficient= ");
  scanf("%d",&n[i].coef);
  }
printf("\*** en attente.... apuiller sur une touche !");
y=getch();
//******************affichage du 1er et 2eme enregistrement************************/
clrscr();
printf("\n -*-*-*-*-*-** voici le 1er enregistrement **-*-*-*-*-*-\n");
for(i=0;i<2;i++)
  {
  printf("num=%d nom=%s class=%d\n",e[i].numel,e[i].nom,e[i].class);
  }
printf("\n -*-*-*-*-*-** voici le 2eme enregistrement **-*-*-*-*-*-\n");
for(i=0;i<2;i++)
  {
  printf("numat=%d matiere=%s coef=%d\n",n[i].numat,n[i].mat,n[i].coef);
  }
printf("\n*** en attente.... apuiller sur une touche !");
y=getch();
//**********************************************************************/
//*****************remplissage du 3eme enregistrement*******************/
//************************puis l'afficher*******************************/
//**********************************************************************/

clrscr();
printf("\nil sagit maintenent de remplir les notes !\n");
printf("\n\n\n");
printf("\*** en attente.... apuiller sur une touche !");
y=getch();
clrscr();
for(i=0;i<2;i++)
  {
  printf("\neleve numero=ø%d ------*****------ nom : %s\n",e[i].numel,e[i].nom);
  for(j=0;j<2;j++)
    {
    printf("\ndonner sa note en %s = ",n[j].mat);
    scanf("%d",&nt[k].note);
    nt[k].numel=e[i].numel;
    nt[k].numat=n[j].numat;
    k=k+1;
    }
  }
printf("\napuiller sur une touche pour voir l'enregistrement");
y=getch();
clrscr();
printf("\n -*-*-*-*-*-** voici l'enregistrement **-*-*-*-*-*-\n");
for(i=0;i<4;i++)
  {
  printf("numel=%d numat=%d note=%d\n",nt[i].numel,nt[i].numat,nt[i].note);
  }
printf("\n\n\n\n");
printf("calcul des moyennes... apuiller sur une touche pour visualiser les resultats");
printf("\*** en attente.... apuiller sur une touche !");
y=getch();
clrscr();
//***********************************************************************/
//*********************calcule des moyennes******************************/
//***********************************************************************/

j=0;
for(i=0;i<2;i++)
  {
  printf("\neleve numero=ø%d ------*****------ nom : %s\n",e[i].numel,e[i].nom);
  moy0=((float)nt[j].note*n[0].coef+nt[j+1].note*n[1].coef)/(n[0].coef+n[1].coef);//ici (float) force le type
  moy[0]=(float)nt[j].note+moy[0];
  moy[1]=(float)nt[j+1].note+moy[1];
  j=2;
  printf("\nsa moyenne est de : %f",moy0);
  printf("\n\n");
  }
for(i=0;i<2;i++)
  {
  printf("\nla moyenne de la classe en %s est de : %f",n[i].mat,moy[i]/2);
  }
printf("\napuiller sur une touche pour terminer...");
getch();
}

Retour en haut

listes et pointeurs...

il est demander de crée une liste et d'insère de nouveau élément par la tête à l'aide de la procédure insert_debu:

le programme: (code source)

#include<stdio.h>
#include<conio.h>
// ************************************
// ********partie déclaration *********
// ************************************

typedef struct list
{int info;list* suivant;};
int i,y,x;
list** al;//declaration du pointeur sur le pointeur de la liste
            //qu'on vas utiliser dans la fonction
list* l;//la tete
list* noeud;//creation du pointeur sur la liste
void insert_debu(list** p,int x);//declaration de la fonction
// *************************************
// ******* programme principal *********
// *************************************

main()
{
clrscr();
l=NULL;//initialiser la tete a 0
for(i=1;i<=4;i++)
  {
  printf("\ndonner y= ");
  scanf("%d",&y);
  al=&l;//pour effectuer les changement dans l et non dans une copie
  insert_debu(al,y);//appelle de la fonction
  }
// ******affichage******
printf("\nvoici la liste\n");
for(i=1;i<=4;i++)
  {
  printf("n=%d ; ",l->info);
  l=l->suivant;
  printf(" adresse %d\n",l);
  }
getch();
}
// ********************************************************
//      *******fin du programme principale**********************
// ********************************************************
//            *************************
// ******** debut de sous programme ********
//            *************************

void insert_debu(list** p,int y)
{
list* nov;
nov=new list;//creation du nouveau noeud
nov->info=y;
nov->suivant=*p;//donner la valeur de l'ancien noeud au nouveau noeud
*p=nov;//affecte la tête au noeud
printf("adresse %d",*p);
}
//            ***********************
// ******** fin du sous programme ********
//            ***********************

Retour en haut

n'oublier pas de m'écrire pour toute suggestion:
fabi_dz@yahoo.fr