IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#]Comment lire fichier et remplir un tableau de réels ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Par défaut [C#]Comment lire fichier et remplir un tableau de réels ?
    Salut
    je suis un novice en C#.Et je voudrais savoir si en une seule lecture d'un fichier contenant des réels je pourrais remplir mon tableau de réels!
    Et écrire le contenu de mon tableau dans un fichier en une seule écriture!(Avec les codes suivants)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Lecture
    double[,] montab=new double[20][25];
    StreamReader fluxInfos=null;
     
    fluxInfos=new StreamReader("infos.txt");
    montab=fluxInfos.ReadToEnd();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //ecriture
    fluxInfos=new StreamWriter("infos.txt");
    fluxInfos.WriteLine(montab);
    Merci pour votre aide!

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Ca ne fonctionnera pas, tu ne peux pas assigner et écrire ton tableau directement de cette manière. La méthode ReadToEnd() renvoie un string et la méthode WriteLine() ne peut pas prendre un tableau de rééls en argument. Et ce n'est pas la méthode ToString() par "défaut" qui fera l'affaire, pour la conversion de ton tableau en chaîne de caractères, à moins de faire une classe pour gérer ce type de tableau et qui implémente la méthode ToString() qui va bien

    Il faudrait savoir comment est constitué ton fichier de rééls, les séparateurs utillisés, si c'est sur plusieurs lignes et que chaque ligne correspond à une ligne du tableau, ... et comment doit être rempli ton tableau en fonction de tout ceci. On ne peut pas deviner ce genre de choses

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Par défaut
    Merci pour ta réponse StormimOn

    Mon fichier de réels est un fichier txt...il est composé de plusieurs lignes et chaque ligne correspond à une ligne du tableau..les séparateurs utlisés sont des tabulations..et chaque réels se trouvant dans le fichier doit être affecté à une cellule de mon tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double[,] montab=new double[20][25];
    ==> dans mon tableau j'aurai 20 lignes et 25 colonnes
    Merci

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    J'ai fait simple sans chercher à vraiment optimiser la chose ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    double[,] montab = new double[20, 25];
     
    // Lecture du fichier et remplissage du tableau
    using (StreamReader reader = new StreamReader("d:\\info.txt"))
    {
    	int idxLigne = 0;
    	string ligne;
    	string[] tabLigne;
     
    	while ((ligne = reader.ReadLine()) != null)
    	{
    		tabLigne = ligne.Split('\t');
    		for (int i = 0; i < tabLigne.Length; i++)
    		{
    			montab[idxLigne, i] = Convert.ToDouble(tabLigne[i]);
    		}
    		idxLigne++;
    	}
    }
     
    // Ecriture du tableau dans un nouveau fichier
    using (StreamWriter writer = new StreamWriter("d:\\info2.txt"))
    {
    	string lignes = string.Empty;
     
    	for (int i = 0; i < 20; i++)
    	{
    		for (int j = 0; j < 25; j++)
    		{
    			if (j == 0)
    			{
    				lignes += montab[i, j].ToString();
    			}
    			else
    			{
    				lignes += '\t' + montab[i, j].ToString();
    			}
    		}
     
    		lignes += Environment.NewLine;
    	}
    	writer.Write(lignes);
    }
    Pour être rigoureux, il faudrait tester que, dans la boucle de remplissage, les index utilisés ne dépassent pas les limites du tableau, si jamais le fichier contenait plus d'infos que ne peut stocker le tableau. Egalement, si le fichier présente une anomalie et que le découpage avec la tabulation est incorrect, la conversion sera peut être cause à erreur. Donc il fauddra blinder un peu le code histoire de

    Ce code est valable si tes rééls utilise une virgule comme séparateur pour les décimales. Si jamais le séparateur des décimales est le point alors modifie ces bouts de code ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Changer
    Convert.ToDouble(tabLigne[i]);
    // En
    Convert.ToDouble(tabLigne[i], new CultureInfo("en-US"));
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Changer
    montab[i, j].ToString();
    // En
    montab[i, j].ToString(new CultureInfo("en-US"));
    La classe CultureInfo se trouve dans l'espace de noms System.Globalization

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Par défaut
    Big Merci StormimOn pour ta précieuse aide et pour le temps que tu as consacrer à m'aider...je vais tester le code dés demain..
    J'éspère que je vais vite m'améliorer en C# et pouvoir aider à mon tour....Pour boucler la boucle..
    Thanks

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2007] Comment lire fichier date files (.dat) ?
    Par boubas53 dans le forum Word
    Réponses: 2
    Dernier message: 13/09/2014, 13h16
  2. Comment faites-vous pour remplir un tableau ?
    Par boboss123 dans le forum jQuery
    Réponses: 11
    Dernier message: 11/02/2010, 16h55
  3. comment lire fichier jlnp
    Par sp2308 dans le forum Ubuntu
    Réponses: 4
    Dernier message: 08/09/2008, 22h57
  4. Réponses: 3
    Dernier message: 20/01/2008, 18h18
  5. [VSTO][VS2005] Comment lire fichier PowerPoint pour export ?
    Par MattC dans le forum Framework .NET
    Réponses: 2
    Dernier message: 24/01/2006, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo