Gestion avec menu

Description

un petit gestionnaire qui fait un tas de calcul:produit matriciel,triangle de pascal,point col,tris de tableau et sans doublon

Source / Exemple :


/*BARRY Thierno Ibrahima*/
/*c'est mon 1er code*/
#include <stdio.h>
#include <conio.h>
const int max_ligne = 20;
const int max_col = 20;
int i,j,k;
int nbre_ligne,nbre_col;
//////////////////////////////////////////////////////////////////////////////////
////////////////////////    DEFINITION DES FONCTIONS     ////////////////////////
/////////////////////////////////////////////////////////////////////////////////

///////////////////////////Fonction Produit Matriciel///////////////////////////
void produit_matriciel(void)
{
  int A[max_ligne][max_col], B[max_ligne][max_col];
  int C[max_ligne][max_col];
  int nbre_ligneA,nbre_colA,nbre_ligneB,nbre_colB;
  puts("Entrez les dimensions des matrices");
  do{
      printf("\n\tMATRICE A\n\n");
      puts("Entrez le nombre de lignes");
      scanf("%i",&nbre_ligneA);
      puts("Entrez le nombre de colones");
      scanf("%i",&nbre_colA);
      printf("\n\tMATRICE B\n\n");
      puts("Entrez le nombre de lignes");
      scanf("%i",&nbre_ligneB);
      puts("Entrez le nombre de colones");
      scanf("%i",&nbre_colB);
      if (nbre_colA!=nbre_ligneB)
          puts("\a\aERREUR");
  }while(nbre_colA!=nbre_ligneB);
  puts("La saisie commence. Pour continuer appuyer sur une touche");
  _setcursortype(0);
  getch();
  _setcursortype(2);
  printf("\n\tMATRICE A\n\n");  //saisie de la matrice A//
  for(i=0;i<nbre_ligneA;i++)
     for(j=0;j<nbre_colA;j++)
        {
           printf("A[%i,%i]\t",i+1,j+1);
           scanf("%i",&A[i][j]);
        }
  printf("\n\tMATRICE B\n\n");  /*saisie de la matrice B*/
  for(i=0;i<nbre_ligneB;i++)
     for(j=0;j<nbre_colB;j++)
        {
          printf("B[%i,%i]\t",i+1,j+1);
          scanf("%i",&B[i][j]);
        }   ///////produit commence///////
  C[0][0]=0;
  for(i=0;i<nbre_ligneA;i++)
     for(j=0;C[i][j]=0,j<nbre_colB;j++)
        for(k=0;k<nbre_colA;k++)
            C[i][j]+=A[i][k]*B[k][j];
  printf("\n\tLA MATRICE AINSI OBTENUE EST:\n\n");
  for(i=0;i<nbre_ligneA;i++)
     {
       for(j=0;j<nbre_colB;j++)
          printf("\t%5i",C[i][j]);
       printf("\n");
     }
}
//////////////////////////////Recherche Du piont col////////////////////////////
void point_col(void)
{
    int mat[max_ligne][max_col];
    int MAX[max_ligne][max_col],MIN[max_ligne][max_col];
    int min,max,c;
    do{
         printf("ENTREZ LA DIMENSSION DE LA MATRICE\n");
         puts("Entrez le nombre de lignes");
         scanf("%i",&nbre_ligne);
         puts("Entrez le nombre de colones");
         scanf("%i",&nbre_col);
    }while((nbre_ligne<0)||(nbre_col<0));
    puts("Pour continuer appuyer sur une touche");
    _setcursortype(0);  //Fait disparaitre le curseur en attendant une touche//
    getch();
    _setcursortype(2);
    for(i=0;i<nbre_ligne;i++)
       for(j=0;j<nbre_col;j++)
          {
             printf("A[%i,%i]\t",i+1,j+1);
             scanf("%i",&mat[i][j]);
             MAX[i][j]=MIN[i][j]=0;
          }
    puts("Appuyer sur une touche pour commencer la recherche");
    _setcursortype(0);
    getch();
    _setcursortype(2);
    if (nbre_ligne==1)  puts("Il n'y a qu'une seule ligne");
    else
       {
          printf("Matrice donn?e :\n");
          for(i=0;i<nbre_ligne;i++)
            {
               for(j=0;j<nbre_col;j++)
                    printf("%5d",mat[i][j]);
               printf("\n");
            }
          for(i=0;i<nbre_ligne;i++)
            {
        //// Recherche du maximum et du minimum sur la ième ligne ////
               min=max=mat[i][0];
               for (j=1;j<nbre_col;j++)
                  {
                     if (mat[i][j]>max)      max=mat[i][j];
                     else if(mat[i][j]<min)  min=mat[i][j];
                  }
               for (j=0;j<nbre_col;j++)
                  {
                     if (mat[i][j]==max)        MAX[i][j]=1;
                     else if (mat[i][j]==min)   MIN[i][j]=1;
                  }
            }
          for (j=0;j<nbre_col;j++)
            {
      //// Recherche du minimum et du maximum sur la jème colonne ////
               min=max=mat[0][j];
               for (i=1;i<nbre_ligne;i++)
                 {
                    if (mat[i][j]<min)       min=mat[i][j];
                    else if (mat[i][j]>max)  max=mat[i][j];
                 }
               for (i=0;i<=nbre_ligne;i++)
                 {
                    if (mat[i][j]==min)        MIN[i][j]=1;
                    else  if (mat[i][j]==max)  MAX[i][j]=1;
                 }
            }
      //////// Affichage de la matrice avec les points cols ////////
          c=0;
          for(i=0;i<nbre_ligne;i++)
             for (j=0;j<nbre_col;j++)
                 if ((MAX[i][j]==1)&&(MIN[i][j]==1))   c++;
           if (c==0)
             {
                textcolor(4);
                cprintf("Cette matrice ne contient pas de points-cols.\r\n");
             }
          else{
          puts("Points cols:");
          for(i=0;i<nbre_ligne;i++)
             {
                for (j=0;j<nbre_col;j++)
                   {
                      if ((MAX[i][j]==1)&&(MIN[i][j]==1))
                         {
                            textcolor(4);
                            cprintf("%5i",mat[i][j]);
                         }
                      else
                            printf("%5i",mat[i][j]);
                   }
                printf("\n");
             }
          }
       }
}
///////////////////////////////Tris de tableau////////////////////////////////////
void tris_tab(void)
{
   int tab[max_ligne],c;
   int rep1,reprandre;
   do{
       puts("Entrez la taille du tableau");
       puts("Nombre de d'?l?ments?");
       scanf("%i",&nbre_col);
   }while(nbre_col<=0);
   for(i=0;i<nbre_col;i++)
     {
        printf("TAB[%i]\t",i+1);
        scanf("%i",&tab[i]);
     }
   reprandre=0;
   do{
       if(reprandre==1)    clrscr();
       printf("\n\n\t\tQUEL GENRE DE TRIS VOULEZ-VOUS FAIRE?\n\n");
       printf("\t\t1\t CROISSANT?\n\n");
       printf("\t\t2\t DECROISSANT?\n\n");
       puts("\t\t\t ENTREZ VOTRE CHOIX 1 OU 2 ?");scanf("%i",&rep1);

       reprandre=1;
   }while((rep1!=1)&&(rep1!=2));
   if(rep1==1)
      {
         clrscr();
         printf("\n\n\t\t\t     ****************\n");
         printf("\t\t\t     *TRIS CROISSANT*\n");
         printf("\t\t\t     ****************\n\n");
         for(i=0;i<nbre_col-1;i++)
            for(j=i+1;j<nbre_col;j++)
               {
                  if(tab[j]<tab[i])
                     {
                        c=tab[i];
                        tab[i]=tab[j];
                        tab[j]=c;
                     }
               }
         puts("Le tableau tri? est:");
         for(i=0;i<nbre_col;i++)
            printf("%3i",tab[i]);
      }
   else
      {
         clrscr();
         printf("\n\n\t\t\t     ******************\n");
         printf("\t\t\t     *TRIS DECROISSANT*\n");
         printf("\t\t\t     ******************\n\n");
         for(i=0;i<nbre_col-1;i++)
            for(j=i+1;j<nbre_col;j++)
              {
                 if(tab[j]>tab[i])
                    {
                       c=tab[i];
                       tab[i]=tab[j];
                       tab[j]=c;
                    }
              }
         puts("Le tableau tri? est:");
         for(i=0;i<nbre_col;i++)
            printf("%3i",tab[i]);
      }
}
////////////////////////////////Doublons////////////////////////////////////
void doublon(void)
{
   int t[max_col],t1[max_col];
   int existe,taille;
   do{
        printf("Entrez la taille du tableau\t");
        scanf("%i",&taille);
        if((taille==0)||(taille==1))
            printf("\a\a\nPas de doublons possibles");
   }while((taille<=0)&&(taille==1));
   for(i=0;i<taille;i++)
      {
         printf("A[%i]\t",i+1);
         scanf("%i",&t[i]);
      }
   puts("Le tableau ci-dessous:");
   for(i=0;i<taille;i++)
      printf("%-5i",t[i]);
   printf("\n");
   t1[0]=t[0]; k=1;
   for(i=1;i<taille;i++)
      {
         existe=0;
         j=0;
         while((j<k)&&(existe==0))
            {
                if(t1[j]!=t[i])
                  {
                     existe=0;
                     j++;
                  }
                else  existe=1;
            }
         if(existe==0)
            {
               t1[k]=t[i];
               k++;
            }
      }
   printf("\nLe tableau sans doublon est:");
   printf("\n");
   for(i=0;i<k;i++)
      printf("%5i",t1[i]);
}
//////////////////////////////////////A PROPOS///////////////////////////////////////////
void a_propos(void)
{
  printf("\n\n\n\n\n\t\t\tGESTION AVEC MENU");
  printf("\n\n\t\t\tVERSION 1.0 - 22/04/2005");
  printf("\n\n\t\t\tEDITEUR: BARRY Thierno IB.");
  printf("\n\n\t\t\tDERNIERE MISE A JOUR 01/05/2005, CASA.");
  _setcursortype(0);
  getch();
  _setcursortype(2);
}
/////////////////////////////  quiter  /////////////////////////////////////////////////////
void quiter(void)
{

  printf("\n\n\n\n");
  printf("   *****    *       *     ******     ******* *       *   ******   **  ******    \n");
  printf("  *     *   *       *     *     *    *       *       *  *      *  **  *     *   \n");
  printf(" *       *  *       *     *     *    *       *       *  *      *      *     *   \n");
  printf(" *       *  *       *     ******     *****    *     *   *      *  **  ******    \n");
  printf(" *********  *       *     *     *    *         *   *    *      *  **  *     *   \n");
  printf(" *       *  *       *     *      *   *          * *     *      *  **  *      *  \n");
  printf(" *       *   *******      *       *  *******     *       ******   **  *       *   ");
  _setcursortype(0);
  getch();
}

/////////////////////////////////////////////////////////////////////////////////
////////////////////////      PROGRAMME PRINCIPAL     //////////////////////////
/////////////////////////////////////////////////////////////////////////////////
void main()
{
  int facto,n;
  char rep,rep1;
  int degre,ch1,ch2;
  int tgle[max_ligne][max_col];
	  clrscr();
     printf("\n\n\n\n\n\n\n\n\t\t\t     GESTION AVEC MENU\n\n\n\n\n\n\n\n");
     printf("\n\t\t\t\tversion 1.0");
     printf("\n\n\n\t\t\t\t\t\t\t  EDITEUR:");
     printf("\n\t\t\t\t\t\t\t  BARRY Thierno IB.");
     _setcursortype(0);
     getch();
     _setcursortype(2);
     clrscr();
debut: do{  /////////////////MENU PRINCIPAL/////////////////
       clrscr();
       printf("\n\n\t\t\t     ****************\n");
       printf("\t\t\t     *MENU PRINCIPAL*\n");
       printf("\t\t\t     ****************\n\n\n\n");
       printf("\t   CHOISISSEZ UN NIVEAUX...:\n\n\n\n");
       printf("\t\t1\t FACTORIEL\n\n");
       printf("\t\t2\t MATRICE\n\n");
       printf("\t\t3\t TABLEAU\n\n");
       printf("\t\t4\t A PROPOS\n\n");
       printf("\t\t5\t SORTIE\n\n");
       printf("\t\t\t ENTREZ VOTRE CHOIX 1..5?  ");
       scanf("%i",&ch1);
       switch(ch1)
          {
       /////////////////////////////////////////////////////////////////////////
         //                        TRAITTEMENT POUR LE FACTORIEL             //
       /////////////////////////////////////////////////////////////////////////
             case 1:
                    do{  clrscr();
                         printf("\n\n\t\t\t     ***********************\n");
                         printf("\t\t\t     *FACTORIEL D'UN NOMBRE*\n");
                         printf("\t\t\t     ***********************\n\n");
                         do{
                              printf("Entrez un nombre positif   ");
                              scanf("%i",&n);
                           }while(n<0);
                         facto=1;
                         if(n>1)
                            for(i=1;i<=n;i++)
                               facto*=i;

                         printf("Le factoriel de %i est %i\n",n,facto);
                         puts("Pour sortir appuyer sur ESC");
                         rep=getch();
                     }while(rep!=27);
             break;  //break du factoriel//
//////////////////////////////////////////////////////////////////////////////////////////
//////////////          Affichage du second volet du menu "MATRICE"        ///////////////
//////////////////////////////////////////////////////////////////////////////////////////
             case 2:
                    do{  clrscr();          ////SOUS MENU 1////
                         printf("\n\n\t\t\t     *******************\n");
                         printf("\t\t\t     *SOUS-MENU MATRICE*\n");
                         printf("\t\t\t     *******************\n\n\n\n");
                         printf("\t   CHOISISSEZ UN NIVEAUX...:\n\n\n\n");
                         printf("\t\t1\t PRODUIT MATRICIEL\n\n");
                         printf("\t\t2\t POINTS COLS\n\n");
                         printf("\t\t3\t TRIANGLE DE PASCAL\n\n");
                         printf("\t\t4\t RETOUR MENU PRINCIPAL\n\n");
                         printf("\t\t\t ENTREZ VOTRE CHOIX 1..4?  ");
                         scanf("%i",&ch2);
                         switch(ch2)
                            {
              ///////////////////////////////////////////////////////////////////
                         // traitement pour le produit matriciel //
              ///////////////////////////////////////////////////////////////////
                             case 1:
                                   do{
                                       clrscr();
                                       printf("\n\n\t\t\t     *******************\n");
                                       printf("\t\t\t     *PRODUIT MATRICIEL*\n");
                                       printf("\t\t\t     *******************\n\n");
                                       produit_matriciel();
                                       puts("Pour sortir frapper ESC");
                                       rep=getch();
                                    }while(rep!=27);
                             break; ///arret pour le produit matriciel/////
             //////////////////////////////////////////////////////////////////////
                                  //   Recherche du point col   //
            //////////////////////////////////////////////////////////////////////
                             case 2:
                                   do{
                                       clrscr();
                                       printf("\n\n\t\t\t     *************\n");
                                       printf("\t\t\t     *POINTS COLS*\n");
                                       printf("\t\t\t     *************\n\n");
                                       point_col();
                                       puts("Appuyer sur ESC pour sortir");
                                       rep=getch();
                                   }while(rep!=27);
                             break;  ///break du point col////
          ////////////////////////////////////////////////////////////////////
                                //  TRIANGLE DE PASCAL  //
          ////////////////////////////////////////////////////////////////////
                             case 3:
                                   do{
                                        clrscr();
                                        printf("\n\n\t\t\t     ********************\n");
                                        printf("\t\t\t     *TRIANGLE DE PASCAL*\n");
                                        printf("\t\t\t     ********************\n\n\n\n");
                                        do{  ///Saisie des dimensions///
                                             printf("Entrez le d?gr?e du triangle? <= %i\n",max_ligne);
                                             scanf("%i",&degre);
                                        }while((degre<=0)||(degre>max_ligne));
                                        for(i=0;i<=degre;i++)
                                           {
                                             tgle[i][i]=tgle[i][0]=1;
                                             for(j=1;j<i;j++)
                                               tgle[i][j]=tgle[i-1][j]+tgle[i-1][j-1];
                                           }
                                        for(i=0;i<=degre;i++) /////AFFICHAGE DU TRIANGLE////
                                           {
                                              printf("n=%i :--: ",i);
                                              for(j=0;j<=i;j++)
                                                 printf("%-5i",tgle[i][j]);
                                              printf("\n");
                                          }
                                        puts("Pour sortir taper sur ESC");
                                        rep=getch();
                                   }while(rep!=27);
                             break;  /////break triangle de PASCAL////
                            } //////////fermeture du switch(ch2),pour le volet "matrice".///////////
                    }while(ch2!=4);
             break;   ///////Arret du case 2 du switch(ch1)///////
//////////////////////////////////////////////////////////////////////////////////////////
///////////////////////        AFFICHAGE DU VOLET TABLEAU         ///////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
             case 3:        ////switch(ch1)////
                   do{  clrscr();
                         printf("\n\n\t\t\t     *******************\n");
                         printf("\t\t\t     *SOUS-MENU TABLEAU*\n");
                         printf("\t\t\t     *******************\n\n\n\n");
                         printf("\t   CHOISISSEZ UN NIVEAUX...:\n\n\n\n");
                         printf("\t\t1\t TRIS DE TABLEAUX (CROISSANT OU DECROISSANT)\n\n");
                         printf("\t\t2\t SANS DOUBLONS\n\n");
                         printf("\t\t3\t RETOUR MENU PRINCIPAL\n\n");
                         printf("\t\t\t ENTREZ VOTRE CHOIX 1..3?  ");
                        scanf("%i",&ch2);
                        switch(ch2)
                            {
          /////////////////////////////////////////////////////////////////////////
                                     // TRIS DE TABLEAUX  //
          ////////////////////////////////////////////////////////////////////////
                              case 1:
                                   do{
                                       clrscr();
                                       printf("\n\n\t\t\t     *****************\n");
                                       printf("\t\t\t     *TRIS DE TABLEAU*\n");
                                       printf("\t\t\t     *****************\n\n");
                                       tris_tab();
                                       printf("\nPour sortir appuyer sur ESC");
                                       rep=getch();
                                   }while(rep!=27);
                              break;
        ///////////////////////////////////////////////////////////////////////
                                           //DOUBLONS//
        ////////////////////////////////////////////////////////////////////////
                              case 2:
                                   do{
                                       clrscr();
                                       printf("\n\n\t\t\t     ***********************\n");
                                       printf("\t\t\t     *TABLEAU SANS DOUBLONS*\n");
                                       printf("\t\t\t     ***********************\n\n");
                                       doublon();
                                       printf("\nPour sortir appuyer sur ESC");
                                       rep=getch();
                                   }while(rep!=27);
                              break;
                            }/*FERMETURE DU SWITCH(CH2)*/
                   }while(ch2!=3);
             break;
             case 4: /*AFFICHER A PROPOS*/
                   clrscr();
                   a_propos();
             break;
             case 5: /*AFFICHER QUITER*/
erreur_choix:      clrscr();
                   char quit;
                   printf("\n\n\n\n\n\t\tVOULEZ-VOUS VRAIMENT QUITER CETTE APPLICATION O/N?");
                   _setcursortype(0);
                   quit=getch();
                   _setcursortype(2);
                   if((quit=='n')||(quit=='N'))
                       goto debut;  /*c'est mon 1er code, soyez indulgent avec le goto*/
                   else if((quit=='o')||(quit=='O'))
                      {
                         clrscr();
                         quiter();
                       }
                   else
                       {
                         clrscr();
                         printf("\a\a\n\n\t\tERREUR DE CHOIX");
                         _setcursortype(0);
                         getch();
                         _setcursortype(2);
                         goto erreur_choix;
                       }
             break;
          } /*FIN DU SWITCH PRINCIPAL*/
  }while(ch1!=5);
}

Conclusion :


c'est ma 1ere source, mais il fonction casiment tout seul.je n'est pas encore trouvé de bugs.donc en cas de pepin avertissez moi...svpmon mail c'est <delpibar@yahoo.fr>...bon takam a tout le monde

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.