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

VB.NET Discussion :

lire ligne par ligne


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Par défaut lire ligne par ligne
    bonjour a tous.
    j'ai une fonction du genre

    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
     Function point_fixe(ByVal x0 As Double, ByVal epsilon As Double, ByVal N As Integer)
            Dim r As Double
            Dim compteur As Integer
     
            Do
                r = ((Math.Abs(g(x0) - x0))) / (Math.Abs(g(x0)))
     
                x0 = g(x0)
                compteur = compteur + 1
                If compteur > N Then
                    Return Nothing
                Else
                    Return x0
     
                End If
     
     
            Loop Until r < epsilon
     
     
        End Function
    j'aimerais lire dans 1 fichier texte les arguments ligne par ligne .
    exemple: sur la premiere ligne je lis mon x0
    sur la deuxieme ligne je lis mon epsilon
    sur la 3eme ligne je lis mon N .
    pour écrire ensuite la réponse dans un autre fichier.

    comment je peux faire??

    Merci pour vos reponses.

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,

    Pour ta question, tu peux par exemple regarder sur MSDN ou le tutoriel VB.Net présent sur Developpez.com

    Par contre je m'interroge sur ta fonction ; déjà elle n'a pas de type de retour, mais surtout la boucle Do Loop et les calculs n'ont aucune utilité en l'état actuel de ta fonction.
    En effet tu déclares une variable compteur de type entier (implicitement initialisée à 0) dans ta boucle, tu l'incrémentes (elle passe donc à 1) et ensuite si compteur est strictement plus grand que N (autrement dit si 1 est strictement plus grand que N ou encore autrement, si N est inférieur ou égal à 0) tu renvoies Nothing sinon tu renvoies x0.
    Donc à ce point là ta fonction renverra toujours son résultat dans le premier tour de boucle (et qui est par conséquent inutile tout comme les calculs "intermédiaires).

    Comme du code valent mieux que des mots, voilà ta fonction réécrite sans ce qui est inutile et qui donnera les mêmes résultats (Note: étant donné les types de retour possibles - Nothing ou un Double - j'ai choisi comme type de retour un Double? ou Nullable(Of Double))

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function point_fixe(ByVal x0 As Double, ByVal N As Integer) As Double?
    	If N <= 0 Then
    		Return Nothing
    	Else
    		Return x0
    	End If
    End Function

    Cordialement !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Par défaut
    Merci pour avoir corrigé la fonction.

    En fait j'aimerais écrire l'algo suivant:

    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
    1- soit une fonction f(x) qui contient une racine et soit (x1,x2) l'intervalle qui contient la racine.
     
    2- soit epsilon 1 critere d'arret et soit N 1 nombre d'itérations.
     
    (x1,x2, epsilon et N je dois aller les lire dans 1 fichier texte avec des valeurs choisies adéquatement)
     
    3- on calcule xm = (x1+x2)/2
     
    4- on calcule e = |x2-x1| / 2|xm|
             si e< epsilon , on a une convergence, on retourne xm , fin de l'algo
     
    5- si e>epsilon 
             si f(x1).f(xm) < 0 alors x2 = xm 
     
             ou si f(x2).f(xm)<0 alors x1 = xm
     
    6- si nombre d'itérations > N , pas de solution, fin de l'algo
     
    7- retour a l'étape 3
     
    .
    Apres avoir bien écrit la fonction, jaimerais comme dit dans mon 1er message, aller chercher ligne par ligne dans 1 fichier1.txt chaque parametre et donner le resultat écrit dans 1 autre fichier2.txt.

    Mon veritable probleme est de savoir comment aller prendre les paramètres ligne par ligne.
    x1 sur la 1ere ligne
    x2 sur la 2eme ligne
    epsilon sur la 3eme
    N sur la 4eme

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Par défaut
    Une application console avec une solution (il y en a plusieurs) pour lire les paramètres, il suffit de l'adapter pour écrire les résultats.

    J'ai utilisé List(of Integer) mais cela aurait pu être un tableau d'entiers:
    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
    Imports System.IO
     
    Module Module1
     
     
        Private Function LitParamètres() As List(Of Integer)
            Dim _Paramètres As New List(Of Integer)
            Try
                Dim sr As StreamReader = New StreamReader("E:\Mes Documents\fichier1.txt")
                For i = 1 To 4
                    _Paramètres.Add(CInt(sr.ReadLine()))
                Next
                sr.Close()
                Return _Paramètres
            Catch E As Exception
                Console.WriteLine("Impossible de lire ce fichier:")
                Console.WriteLine(E.Message)
                Return Nothing
            End Try
        End Function
     
        Sub Main()
            Dim MesParamètres As New List(Of Integer)
            MesParamètres = LitParamètres()
            If MesParamètres IsNot Nothing Then
                With MesParamètres
                    Console.WriteLine(.Item(0)) 'x1
                    Console.WriteLine(.Item(1)) 'x2
                    Console.WriteLine(.Item(2)) 'epsilon
                    Console.WriteLine(.Item(3)) 'N
                End With
            End If
            Console.ReadLine()
        End Sub
     
    End Module

Discussions similaires

  1. Lire un fichier ligne par ligne
    Par lephyrexian dans le forum VBScript
    Réponses: 2
    Dernier message: 07/12/2006, 08h29
  2. Lire un fichier ligne par ligne avec Awk
    Par Krispy dans le forum Linux
    Réponses: 8
    Dernier message: 07/09/2006, 15h14
  3. Lire un fichier ligne par ligne
    Par Guillaume602 dans le forum C
    Réponses: 3
    Dernier message: 18/03/2006, 21h41
  4. lire un fichier ligne par ligne
    Par peuf23 dans le forum C
    Réponses: 6
    Dernier message: 21/09/2005, 10h43

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