Piphilologie

Soyez le premier à donner votre avis sur cette source.

Vue 11 451 fois - Téléchargée 431 fois

Description

Piphilologie : Création et utilisation de mnémotechniques pour retenir la constante Pi. Comme par exemple, un poème en français. Le nombre de lettres de chaque mot correspond à une décimale.

Source / Exemple :


/*


  
using System;
using System.IO;

namespace Piphilologie
{
	class MainClass
	{
		public static void Main(string[] args)
		{	
			//Variables
			int cpt = 0;
			string choix = "";
			int longPi = 0;
			int longDico = 0;
			int nboccurence = 0;
			string Pi = "";
			string nom;
			string temp ="";
			int temp2=0;
			
			//Affichage
			Console.WriteLine("Piphilologie");
			Console.WriteLine(" ");
			Console.WriteLine("GNU General Public License"); //Licence publique générale GNU
			
			//Chargement de la sauvegarde de Pi
			//Console.WriteLine("-----");
			nom = "Pi";
			//Console.WriteLine("Lecture du fichier " + nom + ".txt en cours...");
			lecture_fichier(ref Pi, nom, ref nboccurence);
			
			//Annonce de la longueur des décimales
			longPi = Pi.Length ;
			//Console.WriteLine(" ");
			//Console.WriteLine("Il y a " + longPi + " décimales dans le fichier Pi.txt");
			
			//Mise dans le tableau des décimales de Pi
			string [,] Tpi = new string [longPi,3];
			for (cpt=0;cpt<=(longPi-1);cpt++) 
			{
				Tpi[cpt,1] = System.Convert.ToString(Pi[cpt]) ;
			}
			
			//Chargement de la sauvegarde du poème de Pi
			Console.WriteLine(" ");
			nom = "Pi_sauvegarde";
			//Console.WriteLine("Lecture du fichier " + nom + ".txt en cours...");
			cpt = 2;
			lecture_fichier_tab(ref Tpi, nom, cpt);
			
			//Compter le nombre de mots des listes
			//Console.WriteLine(" ");
			//Console.WriteLine("Lecture des listes de 0 à 9 en cours...");
			for (cpt=0;cpt<=9;cpt++)
			{	
				nom = "fr\\fr_" + cpt ;
				lecture_fichier(ref temp, nom, ref longDico);
			}
			//Console.WriteLine(" ");
			//Console.WriteLine("Total de " + longDico + " mots dans les listes de 0 à 9.");
			
			//Chargement des listes des mots dans le tableau Trepartition
			string [,] Trepartition = new string [longDico,10]; //modifier ici si des mots ont été rajoutés
			for (cpt=0;cpt<=9;cpt++) 
			{
				nom = "fr\\fr_" + cpt ;
				lecture_fichier_tab(ref Trepartition, nom, cpt);
			}		
			//Console.WriteLine("-----");
			
			// Debut
			do{	
				Console.WriteLine(" ");
				Console.WriteLine("MENU ");
				Console.WriteLine(" ");
				Console.WriteLine("1 - Voir Piphilologie (les décimales et le poème de 1 à " + longPi + ")");
				Console.WriteLine(" ");
				Console.WriteLine("2 - Modifier une partie du poème");
				Console.WriteLine(" ");
				Console.WriteLine("3 - Réinitialiser une partie du poème");
				Console.WriteLine(" ");
				Console.WriteLine("4 - Sauvegarder le poème");
				Console.WriteLine(" ");
				Console.WriteLine("5 - Importer des extraits");
				Console.WriteLine(" ");
				Console.WriteLine("0 - Sortie");
				Console.WriteLine(" ");
				choix=Console.ReadLine();
				
				switch (choix)
				{
				case "0" : //Sortir
					break;
				case "1" : affiche_Piphilology(cpt, longPi, Tpi);
					break;
				case "2" : modifier_Pi_poeme(ref Tpi, longPi);
					break;
				case "3" : Réinitialiser_poeme(longPi, ref Tpi, Trepartition);
					break;
				case "4" : sauvegarde_Pi_poeme (cpt, longPi, Tpi);
						Console.WriteLine(" ");
						Console.WriteLine("Enregistrement du poème terminé avec succès.");
					break;
				case "5" : importer_extrait (ref nboccurence);
							string [,] TabImport = new string [nboccurence,3]; //tableau d'importation
							nom = "Pi_Poeme_insert";
							lecture_fichier_tab(ref TabImport, nom, 2);
							
							Console.WriteLine(" ");
							Console.WriteLine("| Place | Décimale | Mot |");
							Console.WriteLine(" ");
							for(cpt=0;cpt<=(nboccurence-2);cpt++)
							{	//calcul de la longueur des mots
								temp = TabImport[cpt,2];
								temp2= temp.Length ;
								TabImport[cpt,1]= temp2.ToString();
								//Affichage
								Console.WriteLine("| " + (cpt+1) + " | " + TabImport[cpt,1] + " | " + TabImport[cpt,2] + " |");
							}
							//Ensuite, fonction compare et demande de remplacement à faire
					break;
				}
				
				
			}while(choix!="0");
		}
		
		static void affiche_Piphilology(int cpt, int longPi, string [,]Tpi)
		{     
			Console.WriteLine(" ");
			Console.WriteLine("Lecture du tableau Tpi en cours...");
			Console.WriteLine(" ");
			Console.WriteLine("| Place | Décimale | Mot |");
			Console.WriteLine(" ");
			for(cpt=0;cpt<=(longPi-1);cpt++)
			{
				Console.WriteLine("| " + (cpt+1) + " | " + Tpi[cpt,1] + " | " + Tpi[cpt,2] + " |");
			}
			Console.WriteLine(" ");
			Console.WriteLine("Vous pouvez également voir les résultats dans le répertoire :");
			Console.WriteLine("Piphilologie/bin/debug/");
		}
		
		static void modifier_Pi_poeme(ref string [,]Tpi, int longPi)
		{   int cpt = 0;
			string mot;
			int longmot = 0;
			int decideb=0;
			int decifin=0;
			
			do{
				Console.WriteLine(" ");
				Console.WriteLine("Numéro de la décimale du mot de début : (Entre 1 et "+longPi+")");
				decideb=Int32.Parse(Console.ReadLine());
			}while(decideb<1 || decideb>longPi);
			
			do{
				Console.WriteLine(" ");
				Console.WriteLine("Numéro de la décimale du mot de fin : (Entre 1 et "+longPi+")");
				decifin=Int32.Parse(Console.ReadLine());
			}while(decifin<1 || decifin>longPi);
			
			decideb = decideb - 1;
			decifin = decifin - 1;
			
			// Pour de la décimale de début jusq'à la décimale de fin
			for (cpt=decideb;cpt<=decifin;cpt++)
				{
					do{
						longmot = Tpi[cpt,2].Length ;
						Console.WriteLine("Que voulez vous mettre à la place de '" + Tpi[cpt,2] + "' (le mot doit faire " + longmot + " caractères) ?");
						mot=Console.ReadLine();
					}while(longmot!=mot.Length);
					Tpi[cpt,2] = mot;
				}
		}
				
		static void lecture_fichier(ref string phrase, string nom, ref int nboccurence)
		{	
        	using (StreamReader sr = new StreamReader(nom + ".txt") )
            {
                String line;
                while ((line = sr.ReadLine()) != null) 
                {
                    //Console.WriteLine(line);
                    phrase=line;
                    nboccurence = nboccurence + 1;
                }
           	}
        }
		
		static void lecture_fichier_tab(ref string [,]Tab, string nom, int cpt)
		{	int nboccurence=0;
            using (StreamReader sr = new StreamReader(nom + ".txt") )
            {
                String line;
                while ((line = sr.ReadLine()) != null) 
                {
                    //Console.WriteLine(line);
                    Tab[nboccurence,cpt]=line;
                    nboccurence = nboccurence + 1; // compte le nombre de lignes
                }
           	}
        }
		
		static void Réinitialiser_poeme(int longPi, ref string [,] Tpi, string [,] Trepartition)
		{ 	int decideb=0;
			int decifin=0;
			int cpt = 0 ;
			Random ran = new Random(); 
			int longDico = 0;
			int cpt2=0;
			string nom="";
			string temp="";
			
			do{
				Console.WriteLine(" ");
				Console.WriteLine("Numéro de la décimale du mot de début : (Entre 1 et "+longPi+")");
				decideb=Int32.Parse(Console.ReadLine());
			}while(decideb<1 || decideb>longPi);
			
			do{
				Console.WriteLine(" ");
				Console.WriteLine("Numéro de la décimale du mot de fin : (Entre 1 et "+longPi+")");
				decifin=Int32.Parse(Console.ReadLine());
			}while(decifin<1 || decifin>longPi);
			
			Console.WriteLine(" ");
			Console.WriteLine("Réinitialisation en cours... Veuillez patienter.");
			
			//Ecrasement des anciennes valeurs dans le tableau Tpi
			for (cpt=(decideb-1);cpt<=(decifin-1);cpt++)
			{	// Pour les liste de 0 à 9
				for (cpt2=0;cpt2<=9;cpt2++)
				{	longDico=0;
					nom = "fr\\fr_" + cpt2 ;
					lecture_fichier(ref temp, nom, ref longDico);
					if(Tpi[cpt,1]==(cpt2).ToString()) //Si le mot de la 1ere colonne vaut entre 0 et 9
					{Tpi[cpt,2] = Trepartition[ran.Next(longDico),cpt2];} // Met un chiffre aléatoire dans la 2eme colonne de même valeur
				}
			}
			
			Console.WriteLine(" ");
			Console.WriteLine("Réinitialisation terminée.");
		}
		
        static void sauvegarde_Pi_poeme (int cpt, int longPi, string [,]Tpi)
		{		
			StreamWriter sw = new StreamWriter("Pi_sauvegarde.txt");
			for(cpt=0;cpt<=(longPi-1);cpt++)
			{	
				sw.WriteLine(Tpi[cpt,2]);
			}
			sw.Close();
		}
        
        static void importer_extrait (ref int nboccurence)
		{	string nom = "Pi_Poeme_insert";
        	string temp = "";
        	
        	//compte le nombre d'occurence
			lecture_fichier(ref temp, nom, ref nboccurence);
		}
	}
}

Conclusion :


Mettre une syntaxe (auxiliaire, sujet, verbe, complément) pour chaque phrase du poème dans ses differents sens.
(avec grammaire et conjugaison des verbes)
Incorporer une recherche de mots dans le poeme pour un éventuel remplacement.
Et une recherche par la taille des mots importé comparé avec les décimales de Pi.

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.