myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Mit aus einer Textdatei ausgelesenen Werten weiter rechnen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Mit aus einer Textdatei ausgelesenen Werten weiter rechnen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Misteraus
myCSharp.de-Mitglied

Dabei seit: 14.06.2019
Beiträge: 2
Entwicklungsumgebung: C#, bald in Javascript


Misteraus ist offline

Mit aus einer Textdatei ausgelesenen Werten weiter rechnen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

Meine Ziel ist es Zahlen aus einer Text Datei Auszulesen und dann so abzuspeichern, dass ich damit Rechnen kann. Das auslesen der werte vom StreamReader und parsen in Double klappt bisher aber ich kriege es nicht in die werte Nachhaltig zu speichern.

Hier mein Code Snip:

C#-Code:
            for (int i = 0; i < textlines.Count; i++)

            {
                string text = textlines[i];
                double winkel, radius, tiefe;
                int startWinkel = text.IndexOf("Winkel = ");
                int startRadius = text.IndexOf("; Radius = ");
                int startTiefe = text.IndexOf("; Tiefe = ");
                int startEnde = text.Length - 1;

                string sWinkel = text.Substring(startWinkel + 9,(startRadius -(startWinkel+9))); //Anfangswert, Differenz zwischen Anfangswert und nächstenwert                    
                winkel = double.Parse(sWinkel);  //String in Zahlen umwandeln

                string sRadius = text.Substring(startRadius + 11, (startTiefe - (startRadius + 11)));
                radius = double.Parse(sRadius);

                string sTiefe = text.Substring(startTiefe + 10, (startEnde - (startTiefe + 10)));
                tiefe = double.Parse(sTiefe);

                Console.WriteLine(Convert.ToString(winkel) + " ", Convert.ToString(radius) + " ", Convert.ToString(tiefe));


            }

Später will ich die werten in Polarkoordinaten umwandeln, hier ein kleines test Programm:

C#-Code:
///{
            //    double radius = 0, winkel = 0;
            //    double x = 0, y = 0;

            //    try
            //    {
            //        radius = Convert.ToInt16(textBox1.Text);
            //        winkel = Convert.ToInt16(textBox2.Text);

            //        double phi = Convert.ToInt32(winkel * Math.PI / 180.0);
            //        x = (radius * Math.Cos(phi));
            //        y = (radius * Math.Sin(phi));

            //        richTextBox1.Text = "x = " + Convert.ToString(Math.Round(x, 2)) + Environment.NewLine + "y = " + Convert.ToString(Math.Round(y, 2));
            //    }
            //    catch { }

            //}

 Hier habe ich folgenden Code Snip gefunden:

C#-Code:
//Hilfsklasse, die die Messdaten darstellt
class SamplePoint
{
    public SamplePoint(string input)
    {
        var stringValues = input.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
        if (stringValues.Length != 2) throw new FormatException(string.Format(@"Ungültiger Eintrag: ""{0}""", input));

        double x, y;

        if(!double.TryParse(stringValues[0], NumberStyles.Any, CultureInfo.InvariantCulture, out x) ||  !double.TryParse(stringValues[1], NumberStyles.Any, CultureInfo.InvariantCulture, out y))
            throw new FormatException(string.Format(@"Ungültiger Eintrag: ""{0}""", input));
        X = x;
        Y = y;
    }

    public double X { get; private set; }
    public double Y { get; private set; }
}
//Anwendung:
var resultList = File.ReadAllLines("test.txt").Select(line => new SamplePoint(line));
foreach (var samplePoint in resultList)
{
    Console.WriteLine("X: {0}, Y: {1}", samplePoint.X, samplePoint.Y);
}

Da ist eine andere Methoden zum auslesen beschrieben, was ja auch ok ist. Aber ich verstehe nicht woher die Values herkommen

C#-Code:
if(!double.TryParse(stringValues[0], NumberStyles.Any, CultureInfo.InvariantCulture, out x) ||  !double.TryParse(stringValues[1], NumberStyles.Any, CultureInfo.InvariantCulture, out y))

Hier übrigens die text Datei:

Winkel = 263,24; Radius = 100; Tiefe = 25;
Winkel = 260; Radius = 107; Tiefe = 30;
Winkel = 25,75; Radius = 105,7; Tiefe = 35;
Winkel = 284,50; Radius = 110,8; Tiefe = 40;
Winkel = 293; Radius = 105,0; Tiefe = 45;
Winkel = 350; Radius = 108,9; Tiefe = 50;

Idealerweise suche ich nach einfachen Lösungen da ich noch Ziemlich neu bin beim Programmieren

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Misteraus am 14.06.2019 10:35.

14.06.2019 10:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 944
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

wenn ich dich richtig verstehe kannst du die Datei korrekt auslesen und die Werte auch in entsprechende double-Variablen parsen. Soweit so gut.

Die nächsten Schritte wären:
a) Eine Klasse erstellen, welche Properties für alle 3 Werte anbietet
b) Eine Liste erstellen, welche mehrere Instanzen der vorher genannten Klasse halten kann
c) Mit den Werten rechnen

Grundsätzlich ist das Anfängerwissen und wird eigentlich als gegeben angesehen - falls das nicht der Fall ist - kann ich dir nur das neben schon in der Navi verlinkte OpenBook empfehlen - andernfalls wirst du wohl eher aufgeben als dein Programm fertig schreiben.

Dennoch ein kurzes Beispiel:

Zu a)

C#-Code:
public class MyDataClass
        {
            public double Winkel { get; set; }

            public double Radius { get; set; }

            public double Tiefe { get; set; }
        }

Zu b)

C#-Code:
List<MyDataClass> myValues = new List<MyDataClass>();
            for (int i = 0; i < textlines.Count; i++)

            {
               // dein bisheriger Schleifencode...
                myValues.Add(new MyDataClass { Winkel = winkel, Radius = radius, Tiefe = tiefe});
            }

Wenn du das hast - hast du danach eine Liste von MyDataClass-Objekten mit den entsprechend gemeinsam eingelesenen Werten - diese Liste kannst du ggf. an separater Stelle innerhalb einer for/foreach-Schleife durchlaufen und entsprechend mit arbeiten.

LG
14.06.2019 11:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Misteraus
myCSharp.de-Mitglied

Dabei seit: 14.06.2019
Beiträge: 2
Entwicklungsumgebung: C#, bald in Javascript

Themenstarter Thema begonnen von Misteraus

Misteraus ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielen dank! Schaue mir das jetzt mal genauer an
18.06.2019 08:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.07.2019 04:53