perimgui

À propos de perimgui

Date de naissance : 21 septembre

Envoyer un message

Biographie

Mes programmes

I-Introduction

Je programme en langage C, langage que je trouve très interressant. Mon IDE, c'est Geany, de Debian sous Linux.

J'utilise aussi la SDL qui est très pratique pour les graphisme en 2D.

Je ne sais pas encore mettre à télécharger mes programmes sur internet donc je les exposerai sous forme de code. Merci de votre conpréhension.

II-Ma calculatrice

A) Présentation

Voici la liste des fonctionnalités de ma calculatrice de type collège niveau moyen :


  • Une fonction addition :Comme toute calculatrice dite habituelle, elle contient une fonction addition qui ajoute autant de nombre que voulut (il faut appuyer sur 0 pour terminer car une addition par 0 ne sert à rien, comme chacun le sait)
  • Une fonction soustraction :De la même manière que la fonction addition, celle-ci permet de soustraire plusieurs nombre (le résultat de la soustraction précédente moins un nouveau nombre) où encore 0 permet de teminer le tout.
  • Une fonction multiplicationElle fonctionne de la même manière que les autres fonctions de bases sauf que c'est un 1 qu'il faut entrer pour terminer (car multiplier par 0 change le multiplication contrairement au 1 qui ne change rien comme chacun le sait).
  • Une fonction de divisionEncore une fonction de base sauf et c'est encore un 0 qui l'a termine ( une division par zéro n'est pas bon d'où le choix de cette valeur pour terminer car 1 divisé par un autre nombre ne donne pas )
  • Une fonction de puissanceQui permet d'obtenir le carré d'un nombre, un nombre puissance un autre et la racine carré d'un nombre.
  • Une fonction "Pythagore"Qui permet soit de savoir si un triangle est rectangle ou soit de calculer un des côtés d'un triangle rectangle selon le célèbre théorème.
  • Une fonction de conversion euros / francs Cette fonction permet convertir une somme au préalablement indiquée par l'utilisateur, si elle se trouve en euro, en franc et vise versa.
  • Une fonction de convecteur de noteCette fonction permet de passe d'une note sur un certain coefficient à un autre coefficient :
exemple: 10/20 à 20/40 Une fonction trigonométrique</li>Cette fonction permet d'utiliser les célèbres fonction de tigonométrie ( attention, les résultat sont en radians !!!) Une fonction PGCD</li>Tout simplement une fonction qui calcule le PGCD des deux nombres entrés </ul>


B) Mon code

Voici maitenant mon code en entier :

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

#define MAX 100



int addition();// 1
int soustraction(); // 2
int multiplication(); // 3
int division(); // 4
void puissance();// 5
void pythagore(); // 6
     void rectangleSavoir(); // 6-a)
     void calculCotePythag();// 6-b)
void euro();// 7
void pgcd(); // 8
void note(); //9-a)
     double noteCalcul ( double noteAvant, double surNote, double noteSur ); //9-b)
void trigo(); // 10
     void cosinus(); // 10-a)
     void sinus(); // 10-b)
     void tang(); // 10-c)


int main(int argc, char** argv)
{
	int choix = 0;
	
	printf("#### CALCULATRICE ####\n\n\n");
	printf("Merci encore d'avoir choisi ma calculatrice, commençons :\n\n\n");
	printf("Quelle opération voulez-vous ?\n\n");
	printf("1-Addition\n");
	printf("2-Soustraction\n");
	printf("3-Multiplication\n");
	printf("4-Division\n");
	printf("5-Les puissances\n");
	printf("6-Pythagore\n");
	printf("7-Euro/Franc\n");
	printf("8-PGCD\n");
	printf("9-Convecteur de note\n");
	printf("10-Les fonctions trigonométriques\n\n");
		
	scanf("%d", &choix);
	
	switch (choix)
	       {
	       	case 1:
	       	       addition();
	       	break;
	       	case 2:
	       	       soustraction();
	       	break;
	       	case 3:
	       	       multiplication();
	       	break;
	       	case 4:
	       	       division();
	       	break;
	       	case 5:
	       	       puissance();
	       	break;       
	       	case 6:
	       	       pythagore();
	       	break;       
	       	case 7:
	       	       euro();
	       	break;
	        case 8:
	         	   pgcd();
	        break; 	           
	       	case 9:
	       	       note();
	       	break;
	       	case 10:
	       	       trigo();
	       	break;                     
	       	default:
	       	        printf("Cela ne correspond à aucun choix !\n");
	       	break;
	       }
   return 0;
}

int addition()
    {   
      int tableau[MAX] = {0};
      
      int i =1;
      int y = 0;
      int resultat = 0;
      
      printf("\n\nVous avez donc choisi les addition\n\n");
      printf("Entrez les valeurs à additionner (0 pour terminer) : \n\n");
      
      while ( i != 0)
            {
            	scanf("%d", &tableau[y]);
            	if ( tableau[0] == 0)
            	   {
            	   	printf("Arrêt de la calculatrice\n");
            	   	return 0;
            	   }
                if ( tableau[y] == 0)
                   {
                   	i = 0;
                   	
                   	printf("\n  = %d\n", resultat);
                   	return 0;
				   }
				printf(" + ");
				resultat = resultat + tableau[y];   	   	
                y++;
                
            }
       
       
     return 0; 
    	
    }
    
int  soustraction()    	
    {
      int tableau[MAX] = {0};
      
      int i =1;
      int y = 0;
      int resultat = 0;
      
      printf("\n\nVous avez donc choisi les soustractions\n\n");
      printf("Entrez les valeurs à soustraire (0 pour terminer) : \n\n");
      
      while ( i != 0)
            {
            	scanf("%d", &tableau[y]);
            	if ( tableau[0] == 0)
            	   {
            	   	printf("Arrêt de la calculatrice\n");
            	   	return 0;
            	   }
                if ( tableau[y] == 0)
                   {
                   	i = 0;
                   	
                   	printf("\n  = %d\n", resultat);
                   	return 0;
				   }
				resultat = resultat - tableau[y];
				if ( tableau[y] != tableau[0])
				   {
				    printf("   (%d)\n", resultat);
				   }    
				printf(" - ");
				   	   	
                y++;
                
            }
       
       
     return 0; 
    }
    
int multiplication()
    { 
      int tableau[MAX] = {0};
      
      int i =1;
      int y = 0;
      int resultat = 1;
      
      printf("\n\nVous avez donc choisi les multiplications\n\n");
      printf("Entrez les valeurs à multiplier (1 pour terminer) : \n\n");
      
      while ( i != 0)
            {
            	scanf("%d", &tableau[y]);
            	if ( tableau[0] == 1)
            	   {
            	   	printf("Arrêt de la calculatrice\n");
            	   	return 0;
            	   }
                if ( tableau[y] == 1)
                   {
                   	i = 0;
                   	
                   	printf("\n  = %d\n", resultat);
                   	return 0;
				   }
				resultat = resultat * tableau[y];
				printf(" x ");				   	   	
                y++;
                
            }
       
       
     return 0; 
    }
    
int division()
     {
      int tableau[MAX] = {0};
      
      int i =1;
      int y = 0;
      int continuer = 1;
      double resultat = 1;
      int reste = 0;
      
      printf("\n\nVous avez donc choisi les divisions\n\n");
      
      while ( continuer == 1)
            {
             printf("Entrez les valeurs à diviser (0 pour terminer) : \n\n");
      
             while ( i != 0)
                   {
            	    scanf("%d", &tableau[y]);
            	    if ( tableau[0] == 0)
            	       {
            	   	    printf("Arrêt de la calculatrice\n");
            	   	    return 0;
            	        }
                    if ( tableau[y] == 0)
                       {
                   	    i = 0;
                   	
                   	    printf("\n  = %f\n", resultat);
                   	                     	    
                   	        return 0;
                   	   }
                   	       			        
				    if (tableau[y] != tableau[0])
				       { 
				       		  
				        resultat = resultat / tableau[y];
				       } 
				    printf(" : ");				   	   	
                    y++;                
                   }  
                               
           }         
       
     return 0;
     }
     
void puissance()
     {
     	int choix = 0;
     	int nombre = 0;
     	int carre = 0; 
     	int puissance = 0;
     	int resultat = 0;
     	double racine = 0;
     	   	
     	printf("\n\n\nQue voulez-vous ?\n");
     	printf("1-Le carré d'un nombre\n");
     	printf("2-Un nombre puissance un autre nombre\n");
     	printf("3-La racine carré d'un nombre\n");
     	
     	scanf("%d", &choix);
     	
     	switch (choix)
     	       {
     	       	case 1: 
     	       	        
     	       	        
     	       	        printf("\n\n\nEntrez ce nombre : ");
     	       	        scanf("%d", &nombre);
     	       	        carre = nombre * nombre;
     	       	        printf("\n\n %d ² = %d\n", nombre, carre);
     	       break;
     	       case 2:
     	                
     	                printf("\n\n\nEntrez votre nombre : ");
     	                scanf("%d", &nombre);
     	                printf("\n\nPuis entrez sa puissance : ");
     	                scanf("%d", &puissance);
     	                resultat = pow(nombre, puissance);
     	                printf("\n\n%d puissance %d = %d\n", nombre, puissance, resultat);
     	      break;
     	      case 3 :
     	                
     	                printf("\n\n\nEntrez votre nombre : ");
     	                scanf("%d", &nombre);
     	                racine = sqrt(nombre);
     	                printf("\n\nLa racine carré de %d vaut %f\n", nombre, racine);
     	     break;
		 }
}		                   	             
     
void pythagore() 
     {   
      int choix = 0;
	  int rechoix = 1;
	
	  printf("\nVoulez-vous savoir si un triangle est rectangle ou calculer un côté ?\n");
	  printf("1-Savoir si un triangle est rectangle\n");
	  printf("2-Calculer la longueur d'une côté\n\n");
	
	  scanf("%d", &choix);
	
	  while (rechoix == 1)
	        {
	          if ( choix == 1)
	             {
	          	   rechoix = 0;
	   	           rectangleSavoir();	   	       
	             }
	         else if ( choix == 2)
	             {
	               rechoix = 0;
	   	           calculCotePythag();	   	      
	             }
	         else 
	            {
	   	          printf("\n\n\nCe choix ne fait pas partie des choix proposé !\n\n\n");   	   
	            }
	        }       
	
	   	   	
    }       	    	   	

void rectangleSavoir()
    {
    	
	int hypo = 0;
	int cote1 = 0;
	int cote2 = 0;
	int resultat1 = 0;
	int resultat2 = 0;
	
	printf("\n#### Pythagore ####\n\n\n");
	printf("Entrez la valeur du côté le plus long : ");
	scanf("%d", &hypo);
	printf("\n\nMaintenant, entrez la valeur du premier côté :");
	scanf("%d", &cote1);
	printf("\n\nPuis la valeur du deuxième côté : ");
	scanf("%d", &cote2);
	
	resultat1 = pow ( hypo, 2);
	resultat2 = pow( cote1, 2) + pow ( cote2, 2);
	printf("Le carré du côté le plus long est %d\n", resultat1);
	printf("La somme des carrés des deux autres côtés vaut %d", resultat2);
	
	if ( resultat1 == resultat2)
	   {
	   	printf("\n\nDonc votre triangle est rectangle\n\n");
	   }
	else
	   {
	   	printf("\n\nDonc votre triangle n'est pas rectangle\n\n");
	   }
	   
    }	   

void calculCotePythag()
     {
     	int choix = 0;
     	
     	printf("\n\n\nVoulez-vous savoir l'hypothénuse ou un autre côté?\n\n");
     	printf("1-L'hypothénuse\n");
     	printf("2-Un autre côté\n");
     	
     	scanf("%d", &choix);
     	
     	if ( choix == 1)
     	   {
     	   	int cote1 = 0;
     	   	int cote2 = 0;
     	   	double hypo = 0;
     	   	
     	   	printf("\n\n\n\nEntrez un des côté : ");
     	   	
     	   	scanf("%d", &cote1);
     	   	
     	   	printf("\n\nEntrez maintenant le second côté : ");
     	   	
     	   	scanf("%d", &cote2);
     	   	
     	   	hypo = sqrt(pow(cote1, 2) + pow(cote2, 2));     	   	
     	   	
     	   	printf("\n\nDonc l'hypoténuse de ce triangle vaut %f\n\n", hypo);
     	   }
     	
     	else if ( choix == 2)
     	  {
     	  	int hypo = 0;
     	  	int cote1 = 0;
     	  	double cote2 = 0;
     	  	
     	  	printf("\n\n\nEntrez d'abord l'hypoténuse de ce triangle : ");
     	  	
     	  	scanf("%d", &hypo);
     	  	
     	  	printf("\n\nPuis entrez l'autre côté connu : ");
     	  	
     	  	scanf("%d", &cote1);
     	  	
     	  	cote2 = sqrt(pow(hypo, 2) - pow(cote1, 2));
     	  	
     	  	printf("\n\nDonc cet autre côté vaut %f\n", cote2);
     	  }
       
       else
           {
           	printf("\n\nCe choix n'existe pas\n");
           }	  
 
      }     	 
   	
void euro()
    {
    	int choix = 0;
    	double euros = 0;
        double francs = 0;
            	
    	printf("Quelle convertion voulez-vous faire ?\n\n");
    	printf("1-Euros -> Francs\n");
    	printf("2-Francs -> Euros\n");
    	
    	scanf("%d", &choix);
    	
    	if ( choix == 1)
    	   {
    	   	printf("\n\nEntrez votre somme en euro \n");
    	    
    	    scanf("%lf", &euros);
    	    
    	    francs = 6.55957 * euros;
    	    
    	    printf("\n\n%f euros = %f francs\n", euros, francs);
		   }
		else if ( choix == 2)
		   {
		   	printf("\n\nEntrez votre somme en francs\n");
		   	
		   	scanf("%lf", &francs);
		   	
		   	euros = francs / 6.55957;
		   	
		   	printf("%f francs = %f euros\n", francs, euros);
		   }
		 else
		   {
		   	printf("\n\nCeci ne fait pas partie des choix proposés !!!\n");
		   }	  	
		
		}   	   
 
 
void pgcd()
     {
     	int valeur1 = 0;
     	int valeur2 = 0;
     	int nombre1 = 0;
     	int nombre2 = 0;
     	int nombre3 = 0;
     	int continuer = 0;
     	int resultat = 0;
     	
     	printf("\n\n\nEntrez votre première valeur:");
     	scanf("%d", &valeur1);
     	
     	printf("\n\nEntrez le second nombre :");
     	scanf("%d", &valeur2);
     	
     	nombre1 = valeur1;
     	nombre2 = valeur2;
     	    	
     	while ( continuer != 1)
     	      {
     	        nombre3 = nombre1 % nombre2;
     	        
     	        if ( nombre3 == 0 )
     	           {
     	           	resultat = nombre2;
     	           	continuer = 1;
     	           }
     	        else 
     	           {
     	           	nombre1 = nombre2;
     	           	nombre2 = nombre3;
     	           	nombre3 = 0;
     	           }
     	      }
     
     printf("\n\n\nDonc PGCD ( %d, %d ) = %d", valeur1, valeur2, resultat);    	
     	
     }
     	 
    	    
void note()
   {
    int surNote = 0;
	int noteSur = 0;
	int noteAct = 0;
	int noteProch = 0;
	
	printf("Bonjour et bienvenue dans ce convecteur de note !\n\n");
	printf("Entrez d'abord votre  diviseur actuel (exemple  20)\n");
	
	scanf("%d", &surNote);
	
	printf("\n\nMaintenant, entrez le diviseur sur lequel vous voulez votre note (exemple 40 )\n");
	
	scanf("%d", &noteSur);
	
	printf("\n\nPuis votre note actuelle (exemple 10)\n");
	
	scanf("%d", &noteAct);
	
	noteProch = noteCalcul ( noteAct, surNote, noteSur);
	
	printf(" %d / %d = %d / %d", noteAct, surNote, noteProch, noteSur); 
   }
   
double noteCalcul ( double noteAvant, double surNote, double noteSur )
           {
           	 double nouvelleNote = (noteAvant / surNote) * noteSur; 
           	            	            	 
           	 return nouvelleNote;
           }	 
           	
void trigo()
     {
     	int choix = 0;
     	int i = 0;
     	
     	while (i == 0)
     	      {
     	       printf("\n\n\nDonc vous avez choisi les fonctions trigonométriques : \n\n\n");
     	       printf("Quel fonction voulez-vous ?\n\n");
     	       printf("1-Le cosinus\n");
     	       printf("2-Le sinus\n");
     	       printf("3-La tengeante\n");
     	
     	       scanf("%d", &choix);
     	       
     	       if (choix == 1)
     	          {
     	          	cosinus();
     	          	i = 1;
     	          }	
     	      	      
     	      else if (choix == 2)
     	         {
     	         	sinus();
     	         	i = 1;
     	         }
     	      else if (choix == 3)
     	         {
     	         	tang();
     	         	i = 1;
     	      	  }
     	      else
     	          {
     	          	printf("\n\nCe choix n'est pas disponible !\n\n");
     	      	  }
     	      	     
     	     }
     }
     
void cosinus()
     {
      int choix = 0;
      int nombre = 0;
      double prov = 0;
      double resultat = 0;	
     	
      printf("\n\nQue voulez-vous ?\n\n");
      printf("1-Cosinus simple\n");
      printf("2-Arc cosinus\n");
     
      scanf("%d", &choix);
      
      switch (choix)
             {
             	case 1:
             	       printf("\nEntrez votre valeur : ");
             	       scanf("%d", &nombre); 
             	       prov = cos(nombre);
             	       resultat = ( prov * 180) / 3.14159;  
             	       printf("\n\nLe cosinus de %d vaut %f", nombre, resultat);
             	break;
             	case 2:
             	       printf("\nEntrez votre valeur : ");
             	       scanf("%d", &nombre);
             	       prov = acos(nombre);
             	       resultat = ( prov * 180) / 3.14159;
             	       printf("\n\nDonc le résultat est %f", resultat);
             	break;
             }	              
      	
     }
     
void sinus()
     {
      int choix = 0;
      int nombre = 0;
      double prov = 0;
      double resultat = 0;	
     	
      printf("\n\nQue voulez-vous ?\n\n");
      printf("1-Sinus simple\n");
      printf("2-Arc sinus\n");
     
      scanf("%d", &choix);
      
      switch (choix)
             {
             	case 1:
             	       printf("\nEntrez votre valeur : ");
             	       scanf("%d", &nombre); 
             	       prov = sin(nombre);
             	       resultat = ( prov * 180) / 3.14159;
             	       printf("\n\nLe sinus de %d vaut %f", nombre, resultat);
             	break;
             	case 2:
             	       printf("\nEntrez votre valeur : ");
             	       scanf("%d", &nombre);
             	       prov = asin(nombre);
             	       resultat = ( prov * 180) / 3.14159;
             	       printf("\n\nDonc le résultat est %f", resultat);
             	break;
             }	              
      	
     }

void tang()
     {
      int choix = 0;
      int nombre = 0;
      double prov = 0;
      double resultat = 0;	
      
     	
      printf("\n\nQue voulez-vous ?\n\n");
      printf("1-Tangeante simple\n");
      printf("2-Arc tangeante\n");
     
      scanf("%d", &choix);
      
      switch (choix)
             {
             	case 1:
             	       printf("\nEntrez votre valeur : ");
             	       scanf("%d", &nombre); 
             	       prov = tan(nombre);
             	       resultat = ( prov * 180) / 3.14159;
             	       printf("\n\nLe sinus de %d vaut %f", nombre, resultat);
             	break;
             	case 2:
             	       printf("\nEntrez votre valeur : ");
             	       scanf("%d", &nombre);
             	       prov = atan(nombre);
             	       resultat = ( prov * 180) / 3.14159;
             	       printf("\n\nDonc le résultat est %f", resultat);
             	break;
             }	    		
     }



Voici le menu quand le programme s'exécute :

#### CALCULATRICE ####



        
Merci encore d'avoir choisi ma calculatrice, commençons :
        

Quelle opération voulez-vous ?
1-Addition
2-Soustraction
3-Multiplication
4-Division
5-Les puissances
6-Pythagore
7-Euro/Franc
8-Calcul de moyenne
9-Convecteur de note
10-Les fonctions trigonométriques



Si vous avez des question sur la calculatrice, n'hésitez pas


II-Mes jeux

A) Mon morpion


Le but du jeu

C'est un jeu de morpion habituel


Le code du jeu :

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

void afficheTableau (char carre[]);

int main(int argc, char *argv[])
    {
    	int gagne = 0; // variable initialisée à 0 pour entrer dans la boucle et mise à 1 quand un joueur a gagné
        
        int refaire = 1;

        int rejouer = 1; // variable pour faire rejouer le joueur qui se trompe et qui joue dans une case déjà joué ou qui n'existe pas

        srand(time(NULL));
        int MIN = 1, MAX= 2, joueurCommence = (rand() % (MAX - MIN + 1)) + MIN; // pour tirer au sort le joueur qui commence

        int choixCase; // pour choisir où jouer

        int i = 0;      
        
        int a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, j =0; // variables pour savoir si la case à déjà été jouée ou non

        char prenomJ1[30]; 
        int scoreJ1 = 0;
                          // les prénoms des joueurs
        char prenomJ2[30];
        int scoreJ2 = 0;
        
        int joueurActuel = 0;

        // Suit le tableau pour compléter la grille
        char carre[9]={'1', '2', '3', '4', '5', '6', '7', '8', '9'}; 
        
        printf("\nJoueur 1 (les croix) : entrez votre prénom : ");
        scanf("%s", prenomJ1);
        
        printf("\n\n\n Joueur 2 (les ronds) : entrez votre prénom : ");
        scanf("%s", prenomJ2);
        
        while ( refaire == 1)
              {
               
        while(gagne != 1) // tant qu'aucun joueur n'a gagné
             {  
               rejouer = 1;	   
               while ( rejouer == 1) // La première fois et si le joueur s'est trompé de case
                     {
                     	afficheTableau ( carre );
                     	
                     	if ( joueurCommence == 1) //Si le joueur a commencé est le 1, alors le joueur à jouer est le 
                     	   {
                     	   	 joueurActuel = 1; 
                     	   	 joueurCommence = 0;
                     	   }
                     	else if ( joueurCommence == 2) // Si le joueur à commencer est le 2, alors le joueur à jouer est le 2
                     	   {
                     	   	 joueurActuel = 2;
                     	   	 joueurCommence = 0;
                     	   }	
                     	 
                     	 if ( joueurActuel == 1) // Si le joueur à jouer est le 1, alors c'est son prénom que l'on demande
                     	    {     	
                     	   	 printf("\n\n\n%s, c'est à vous de jouer : quel case ? : ", prenomJ1 ); 
                     	   	                     	   	 
                     	   	}
                     	 else if ( joueurActuel == 2 )// Si le joueur à jouer est le 2, alors c'est son prénom que l'on demande
                     	    {  	 
                     	   	 printf("\n\n\n%s, c'est à vous de jouer : quel case ? : ", prenomJ2 );                     	   	 
                     	   	} 
                     	 scanf("%d", &choixCase);  //Là, il chosit la case sur laquelle jouer
                     	 
                     	  
                     	 switch (choixCase) // On test la case choisit
                     	   	    {	
                     	   	     case 1: //Si la case est la 1
                     	   	        	
                     	   	        	if ( a == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[0] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[0] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     a = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	   case 2: //Si la case est la 2
                     	   	        	if ( b == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[1] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[1] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     b = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	   case 3: //Si la case est la 3
                     	   	        	if ( c == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[2] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[2] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     c = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	   case 4: //Si la case est la 4
                     	   	        	if ( d == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[3] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[3] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     d = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	   case 5: //Si la case est la 1
                     	   	        	if ( e == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[4] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[4] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     e = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   case 6: //Si la case est la 1
                     	   	        	if ( f == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[5] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[5] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     f = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	   case 7: //Si la case est la 1
                     	   	        	if ( g == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[6] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[6] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     g = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	   case 8: //Si la case est la 1
                     	   	        	if ( h == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[7] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[7] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     h = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   
                     	   	     case 9: //Si la case est la 1
                     	   	        	if ( j == 0) // Si la case n'a pas encore été jouée
                     	   	        	   {
                     	   	        	   	 i ++;
                     	   	        	     switch (joueurActuel) // On test le joueur actuel
                     	   	        	            {
                     	   	        	              case 1: //Si c'est le joueur 1, alors ce sera une croix
                     	   	        	                     carre[8] = 'X';
                     	   	        	                     joueurActuel = 2;
                     	   	        	              break;
                     	   	        	              case 2: //Si c'est le joueur 2, alors ce sera un rond
                     	   	        	                     carre[8] = 'O';
                     	   	        	                     joueurActuel = 1;
                     	   	        	              break;		
                     	   	        	            }
                     	   	        	     
                     	   	        	     j = 1; //Cette case est maintenan jouée
                     	   	        	     rejouer = 0; // On ne rejoue pas      	
                     	   	        	   }
                     	   	           else  // Si cette case à déjà été jouée
                     	   	               {
                     	   	               	rejouer = 1;
                     	   	               	printf("\n\n\nCette case à déjà été jouée\n\n");
                     	   	               }	
                     	   	                   
                     	   	     break;       
                     	   	   }	
                     	   	 
                      }
                            if( (carre[0] == carre[1] && carre[0] == carre[2]) || (carre[3] == carre[4] && carre[3] == carre[5]) ||
                                (carre[6] == carre[7] && carre[6] == carre[8]) || (carre[0] == carre[3] && carre[0] == carre[6]) ||
                                (carre[1] == carre[4] && carre[1] == carre[7]) || (carre[2] == carre[5] && carre[2] == carre[8]) ||
                                (carre[0] == carre[4] && carre[0] == carre[8]) || (carre[2] == carre[4] && carre[2] == carre[6])  )
                              {
                              	if (joueurActuel == 2)
                              	   {
                              	   	gagne = 1;
                              	   	scoreJ1 ++;
                              	   	
                              	   	afficheTableau ( carre );
                              	   	
                              	   	printf("\n\n\nFélicitations %s !!!! \nTon socre est de %d victoires face à %d victoires de %s", prenomJ1, scoreJ1, scoreJ2, prenomJ2);                              	   	
                              	   }
                              	   
                              	else if (joueurActuel == 1)
                              	   {
                              	   	gagne = 1;
                              	   	scoreJ2 ++;
                              	   	
                              	   	afficheTableau ( carre );
                              	   	
                              	   	printf("\n\n\nFélicitations %s !!!!\nTon score est de %d victoires face à %d victoires de %s", prenomJ2, scoreJ2, scoreJ1, prenomJ1); 
                              	   }
                              	
                              	   		
                              }
                           else if ( i == 9)
                              {
                              	printf("\n\n\nMatch nul !");        	
                              }             
                           
        	                else
                              {
                              	rejouer = 1;
                              }
    }
    gagne = 0;
    
    carre[0] = '1', a = 0;
    carre[1] = '2', b = 0;
    carre[2] = '3', c = 0;
    carre[3] = '4', d = 0;
    carre[4] = '5', e = 0;
    carre[5] = '6', f = 0;
    carre[6] = '7', g = 0;
    carre[7] = '8', h = 0;
    carre[8] = '9', j = 0;          	
    
    printf("\n\n\n\nVoulez-vous refaire une partie ?\n");
    printf("1-Oui\n");
    printf("2-Non\n\n");
    scanf("%d", &refaire);
        
    }
    
    if ( scoreJ1 > scoreJ2 )
       {
       	printf("\n\n\nBravo %s ! Tu as gagné %d à %d !", prenomJ1, scoreJ1, scoreJ2);
       }
    else if ( scoreJ2 > scoreJ1 )
       {
       	printf("\n\n\nBravo %s ! Tu as gagné %d à %d !", prenomJ2, scoreJ2, scoreJ1);
       }
    else
       {
       	printf("\n\n\n Egalité parfaite !!! %d partout !!!", scoreJ1);
       }	  	   	
    
    return 0;
}    
    
void afficheTableau (char carre[])
{
        printf("\n\n\n");

        printf(" ____ ____ ____\n");
        printf("|    |    |    |\n");
        printf("| %c  | %c  | %c  |\n", carre[0], carre[1], carre[2]);
        printf("|____|____|____|\n");
        printf("|    |    |    |\n");
        printf("| %c  | %c  | %c  |\n", carre[3], carre[4], carre[5]);
        printf("|____|____|____|\n");
        printf("|    |    |    |\n");
        printf("| %c  | %c  | %c  |\n", carre[6], carre[7], carre[8]);
        printf("|____|____|____|\n");

        printf("\n\n");
        
}




IV-Mes programmes interresssants

A) Le reconnaisseur de palindrome

Son utilité :

Reconnaitre les palindromes


Son code :

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

int palindrome ( char mot[]);

int main(int argc, char** argv)
    {
   	 char mot[100];
   	 
   	 int reussite = 0;
   	 
   	 printf("\nEntrez votre mot et je vous dirai si c'est un palindrome\n\n");
	 scanf("%s", mot);
	
	 reussite = palindrome ( mot);
	
	 if ( reussite == 1)
	    {
	      printf("\n\n\nOui, c'est un palindrome\n\n");
	    }
	 else
	    {
	      printf("\n\n\nNon, ce n'est pas un palindrome\n");
	    }	     
   	
	 return 0;
    }

int palindrome ( char mot[] )
    { 
	 char copie [100];
	 
	 int i = 0;
	 int y = 0;
	 char caractere = 0;
	 
	 strcpy( copie, mot);

     caractere = mot[0];
	 while ( caractere != '\0')
	       {
	        i++;
	      	caractere = mot[i];
	       }

	 while ( i != 0)
	       {
	      	mot[y] = copie[i-1];
	      	i--;
	      	y++;
	       }

	 if ( strcmp( mot, copie) == 0)
	    {
	   	 return 1;
	    }
	 else
	    {
	   	 return 0;
	    }	    
	
}


V-Mes petites fonctions prises dans les cours

A) Présentation

Dans les cours du site, on retrouve parfois des fonctions utiles : j'ai décidé d'en coder certaines :


Voci la liste des fonctions que j'ai codé :


1°) La fonction strlen :
Cette fonction, permet de renvoyer le nombre de caractère d'un chaine, je l'ai donc codée

2°) La fonction strcpy :
Cette fonction permet de copier une chaine dans une autre, je l'ai donc codée

3°) La fonction strcmp :
Cette fonction permet de savoir si deux chaine sont identiques, je l'ai donc codée

4°) La fonction strchr :
Cette fonction permet de savoir si deux chaine sont identiques, je l'ai donc codée

5°) La fonction pow :
Cette fonction permet de calculer un nombre puissance un autre : je l'ai donc codée


B) Les différentes fonctions

1°) Ma fonction "compteLettre"



Voici son utilité :

Elle permet de savoir, sans compter le '\0', le nombre de caractère d'un chaine


Ce qu'elle renvoit :

Elle renvoit le nombre de caractères de la chaine à stocker dans une variale


Ce qu'il faut lui envoyer:

Il faut tout simplement lui envoyer la chaine en question


Son prototype :

int compteLettres ( const char mot[] );



Son code en entier :

int compteLettres ( const char mot[] )
    {
      int i = 0;
      int caractere = 0;
      
      caractere = mot[0];
      
      while ( caractere != '\0' )
            {
              i++;
              caractere = mot[i];
            } 
                 
     return i;
    }



La fonction d'origine :

Je me suis donc servi de strlen qui renvoit elle aussi le nombre de caractères d'un chaine


2°) Ma fonction "copieMot"



Voici son utilité :

Elle permet de copier une chaine de caractère dans une autre


Ce qu'elle renvoit :

Elle modifier directement la chaine dans laquelle il faut copier sans toucher à l'original


Ce qu'il faut lui envoyer:

Il faut tout d'abord lui envoyer la chaine originale et ensuite la chaine dans laquelle il faut copier l'originale


Son prototype :

void copieMot (const char original[], char copie[] );



Son code en entier :

void copieMot ( const char original[], char copie [] )
     {
       int i = 0;
       
       while  ( copie[i] != '\0' )
              {
              	copie[i] = original[i];
              	i++;
              }
              
       
       
     }



La fonction d'origine :

Je me suis donc servi de strcpy qui a les mêmes fonctionnalitées



3°) Ma fonction "compareMot"



Voici son utilité :

Elle permet de savoir si deux chaines sont identiques


Ce qu'elle renvoit :

Elle renvoit 1 si les deux chaines sont identiques, 0 si elles ne le sont pas


Ce qu'il faut lui envoyer:

Il suffit simplement de lui envoyer les deux chaines à comparer sans se soucier de l'ordre d'envoit


Son prototype :

int compareMot ( const char mot1[], const char mot2[] );



Son code en entier :

int compareMot ( const char mot1[], const char mot2[] )
    {
      int i = 0;
      
      while ( mot1[i] != '\0' )
            {
              if ( mot1[i] != mot2[i] )
                 {
                 	return 0;
                 }
              else
                 {
                   i++;
                 }
             }
             
     return 1;
    }



La fonction d'origine :

Je me suis donc servi de strcmp qui a les mêmes fonctionnalitées


4°) Ma fonction "rechercheCaractere"



Voici son utilité :

Elle permet de savoir si un caractere se trouve dans une chaine sans respect de la caste


Ce qu'elle renvoit :

Elle renvoit 1 si le caractere s'y trouve, 0 si non


Ce qu'il faut lui envoyer:

Il faut d'abord lui envoyer le caractere à rechercher et ensuite le mot dans lequel on veut faire la recherche


Son prototype :

int rechercheCaractere (  char caractere, char mot[] );



Son code en entier :

int rechercheCaractere (  char caractere,  char mot[] )
    {
      int i = 0;     
      
      caractere = toupper (caractere);
      
      while ( mot[i] != '\0' )
            {
             
             mot[i] = toupper (mot[i]);
                         
             if ( caractere == mot[i] )
                {
                  return 1;	
                }
                
             else 
                {
                  i++;
                }     	              
            }
      
      return 0;
    }



La fonction d'origine :

Je me suis donc servi de strchr qui a les mêmes fonctionnalitées


5°) Ma fonction "puissance"



Voici son utilité :

Elle permet de calculer la puissance d'un nombre avec son exposant


Ce qu'elle renvoit :

Elle renvoit le résultat de la puissance


Ce qu'il faut lui envoyer:

Il faut d'abord lui envoyer le nombre puis ensuite son exposant


Son prototype :

int puissance ( const int nombre, const int exposant);



Son code en entier :

int puissance ( const int nombre, const int exposant)
    {
      int i = 0;
      int resultat = 1;
      
      while ( i < exposant )
            {
              i++;	
              resultat = resultat * nombre;
            }
            
      return resultat;
   }



La fonction d'origine :

Je me suis donc servi de pow qui a les mêmes fonctionnalitées


VI-Programmes de chimie

A) Présentation

J'ai décidé de coder différentes fonctions qui peuvent être utile en chimie


Voici la liste des différents programmes que j'ai conçue pour la chimie:

-Calculateur de masse molaire (régulièrement mis à jour)


B) Les programmes


1°) Calculateur de masse molaire



Utilité:

Elle permet de calculer la masse molaire atomique ou moléculaire.



Comment s'en servir:

Le programme, en console, va vous demander la formule. Entrez là en respectant ceci:
-les symboles (comme C pour le carbone ou Cl pour le chlore) doivent être entrés de la même manière que d'habitude.
-l'occurence doit être entré en tant que chiffre et suivant le symbole chimique qu'il dénombre. 1 est sous-entendu et il n'est pas nécessaire de l'indiquer.


Ce qu'il nous donne:

Il nous donne la masse molaire avec 6 décimales à la suite.


Exemple:

Entrez votre formule (ex: H20) : C6H12O6
Masse molaire de C6H12O6 vaut 180.000000



Le code:

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


char S[]=" \
	  C 12.0 \
	  H 1.0 \
	  O 16.0 \
	  N 14.0 \
	  B 10.8 \
	  F 18.9 \
          P 30.9 \
	  Cl 35.4 \
	  He 4.00 \
	  Na 22.9 \
	  Mg 21.3 \
	  Al 26.9 \
	  Ca 40.0 \
	  Fe 55.8 \
	  Cu 63.5 \
	  Zn 65.4 \
	  Ag 107.8 \
	  Au 196.9 \
	  Li 6.9 \
	  Be 9.0 \
	  Ne 20.1 \
          Si 28.0 \
	  ";

float chercheMasse(char *s) {
	float masse;
	char *p=strstr(S, s);
	if(p==NULL) {
		fprintf(stderr,"Symbole %s inconnu !\n", s);
		exit(1);
	}

	if((sscanf(p,"%*s %f", &masse))!=1) {
		fprintf(stderr,"Masse invalide pour %s !\n", p);
		exit(1);
	}

	return masse;
}

void cumuler(float* somme, char *s, int o) {
	float masse;
	char t[10];

	strcpy(t, s); strcat(t, " ");
	masse=chercheMasse(t);
	*somme=*somme+o*masse;
}

void decode(float *masse, char *f) {

	// Pointeur dans le symbole
	int ps=0;
	char symbole[4];

	int occurences=0;

	int cont=1;

	char c;

	while(cont) {
		c=*f;
		if (c=='\0' || (c>='A' && c<='Z')) {

			// 1 er cas : premier couple : rien à faire
			// 2 ème cas : un couple à été lu avant : cumuler le couple précédent

			if(ps!=0) {
				if (occurences==0) occurences=1;
				symbole[ps]=0;
				cumuler(masse, symbole, occurences);
				ps=0; occurences=0;
			}	

			ps=0;
			symbole[ps]=c; ps++;

			if(c=='\0') cont=0;
		}
		else if (c>='a' && c<='z') {
			symbole[ps]=c; ps++;
		}

		else if (c>='0' && c<='9') {
			occurences=occurences*10+c-'0';
		}
		f++;
	}
}

int main(void) {
	float mm;
	char formule[100];

	printf("Entrez votre formule (ex : H2O) : ");
	while(fgets(formule, 100, stdin) != NULL) {
		formule[strlen(formule)-1]=0;
		mm=0.0;
		decode(&mm, formule);
		printf("Masse molaire de %s vaut %f\n", formule, mm);
		printf("\n");
		printf("Entrez votre formule (ex : H2O) : ");
	}
	return 0;
}



La liste des éléments chimiques sera régulièrement mise à jour.


Liste des éléments chimiques possibles pour ce programme (régulièrement mise à jour):

Atome Symbole Masse molaire (g/mol)
Hydrogène H 1.0
Helium He 4.0
Lithium Li 6.9
Bérylium Be 9.0
Bore B 10.8
Carbone C 12.0
Azote N 14.0
Oxygène O 16.0
Fluor F 118.9
Néon Ne 20.1
Sodium Na 22.9
Magnésium Mg 21.3
Alluminium Al 26.9
Sillicium Si 28.0
Phosphore

Information sur le compte

Date d'inscription : 8 février 2010

Dernière connexion : 28 mars 2015