Taille d'un tableau et enregistrement dans un fichier

Résolu
chandler8692 Messages postés 49 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 février 2007 - 28 mars 2006 à 13:03
chandler8692 Messages postés 49 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 février 2007 - 1 avril 2006 à 14:08
Salut, comme beaucoup je débute en C#. Ce n'est pas faute de volonté mais juste de temps (je suis en prépa). Mais comme c'est bientôt les vacances et que j'adore la programmation, j'ai imaginé un projet qui requière entre autre de créer un tableau de taille 80*10000 dont chaque case contiendrait une variable de type char, une lettre quoi.

En fait je veux associer à chaque caractère parmis une liste (a,b,c,d,e,f,8,5,&,(, dans mon exemple), un autre caractère (&,h,5,[,8,a,é,.,+,µ par exemple) et créer 10000 listes d'associations différentes, c'est à dire 10000 autres possibilités d'associations, et je souhaite placer toutes ces associations dans un tableau (dans mon exemple ci-dessous, un tableau 10*3 c'est à dire 10 carctères et 2 listes d'associations différentes)

a % f ...
b h 3 ...
c 5 # ...
d [ d ...
e 8 5 ...
f a g ...
8 é * ...
5 . ² ...
& + ] ...
( µ = ...

- Ma première question est quelle taille ferai ce tableau et est-ce que le programme ne va pas exploser à la millière colonne (pour la 999ème liste d'associations).
- Ma seconde question porte sur le fait que j'aimerai pouvoir enregistrer ce tableau pour n'avoir à le construire qu'une seule fois et pour pouvoir le réutiliser dans un autre programme.
Quelle commande utiliser pour créer un fichier qui contiendrait ce tableau, et quelle commande utiliser pour pouvoir le rapeller et m'en servir ?

Voilà, si je n'ai pas été clair (et c'est peut-probablement le cas), dites le moi, je reepliquerai. En fait j'ai tenté d'expliquer concrètement ce que je souhaite faire, au cas vous pensiez que construire un tableau 80*10000 n'est pas la meilleure solution. Mais c'est pour l'instant la seule à laquelle j'ai pensé.

Voilà merci beaucoup, gloire au C#

Guy

7 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
28 mars 2006 à 15:14
Salut, il est possible aussi de Sérialiser/Désérialiser ton tableau avec la classe BinaryFormatter.
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
1 avril 2006 à 06:53
Ca va prendre une seconde ce qui en informatique est très long . On peut aller encore plus loin et compresser le fichier en ZIP.

public void GZipSerialize( string filename, object serializableObject )
{
try
{
using ( FileStream fs = new FileStream( filename, FileMode.Create, FileAccess.Write ) )
{
using ( GZipStream gzip = new GZipStream( fs, CompressionMode.Compress ) )
{
BinaryFormatter bf = new BinaryFormatter( );
bf.Serialize( gzip, serializableObject );
}
}
}
catch ( Exception ex )
{
MessageBox.Show( ex.ToString( ) );
}
}


public object GZipDeserialize( string filename )
{
object serializableObject = null;


try
{
using ( FileStream fs =new FileStream( filename, FileMode.Open, FileAccess.Read ) )
{
using( GZipStream gzip = new GZipStream( fs, CompressionMode.Decompress ) )
{
BinaryFormatter bf = new BinaryFormatter( );
serializableObject = bf.Deserialize( gzip );
}
}
}
catch ( Exception ex )
{
MessageBox.Show( ex.ToString( ) );
}


return serializableObject;
}
3
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
28 mars 2006 à 13:48
Un tableau de 80*10000 fera en gros 780 ko de mémoire, cela reste donc parfaitement utilisable.
Pour enregistrer ton tableau dans un fichier, tu as plusieurs solutions :
- la première : tout balancer dans un fichier texte en brut et récupérer les données de la même manière. Lire/ecrire dans un fichier
- la seconde : utiliser un fichier CSV (tu pouras même le lire sous MSExcel). Lire/ecrire dans des fichier CSV

Voilà 2 idées que tu peux explorer (il y en a certainement beaucoup d'autres)

-*- switch -*-
0
chandler8692 Messages postés 49 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 février 2007
30 mars 2006 à 12:59
Est-ce qu'un fichier texte est vraiment adapté pour y enregistrer un gros tableau comme ça ? Et une fois le tableau enregistré dans le fichier CSV, est-ce que la taille du fichier ne sera pas bien plus grosse que 780 ko ?

Sinon, je viens un peu de regarder ce qu'étaient les sérialisation/désérialisation, et ça a l'air pas mal. Je vais regarder un peu plus en détail cette aprèm.
Danke
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
31 mars 2006 à 05:32
la sérialisation c'est très bien, il faut 4 lignes de code pour enregistrer ton tableau dans un fichier et 4 lignes pour l'extraire . Ca te fera un fichier de 780ko
0
chandler8692 Messages postés 49 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 février 2007
31 mars 2006 à 12:42
Ok, ça me va. Ca a vraiment l'air d'être la solution la plus simple et la plus adaptée. Ensuite, j'ai lu sur le forum que les sérialisation/désérialisation étaient longues à effectuer. Si je le fait avec mon tableau, ça va prendre dans les 30 secondes ou les 15 minutes (que je sache si le programme fait quelque chose ou si il a planté) ?
0
chandler8692 Messages postés 49 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 février 2007
1 avril 2006 à 14:08
Excellent, merci beaucoup. Bon, je vois que j'étais vraiment loin du compte avec mes 30 secondes !!
Merci Lutinore pour tes conseils avisés.
Salut, Guy
0
Rejoignez-nous