Taille d'un tableau et enregistrement dans un fichier [Résolu]

chandler8692 49 Messages postés vendredi 6 mai 2005Date d'inscription 9 février 2007 Dernière intervention - 28 mars 2006 à 13:03 - Dernière réponse : chandler8692 49 Messages postés vendredi 6 mai 2005Date d'inscription 9 février 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 28 mars 2006 à 15:14
3
Merci
Salut, il est possible aussi de Sérialiser/Désérialiser ton tableau avec la classe BinaryFormatter.

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Lutinore
Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 1 avril 2006 à 06:53
3
Merci
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;
}

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Lutinore
huberdine 158 Messages postés samedi 8 février 2003Date d'inscription 17 juin 2010 Dernière intervention - 28 mars 2006 à 13:48
0
Merci
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 -*-
Commenter la réponse de huberdine
chandler8692 49 Messages postés vendredi 6 mai 2005Date d'inscription 9 février 2007 Dernière intervention - 30 mars 2006 à 12:59
0
Merci
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
Commenter la réponse de chandler8692
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 31 mars 2006 à 05:32
0
Merci
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
Commenter la réponse de Lutinore
chandler8692 49 Messages postés vendredi 6 mai 2005Date d'inscription 9 février 2007 Dernière intervention - 31 mars 2006 à 12:42
0
Merci
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é) ?
Commenter la réponse de chandler8692
chandler8692 49 Messages postés vendredi 6 mai 2005Date d'inscription 9 février 2007 Dernière intervention - 1 avril 2006 à 14:08
0
Merci
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
Commenter la réponse de chandler8692

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.