Benutzer mit den meisten Antworten
C# Funktion zum angleichen zweier Zahlen

Frage
-
Hallo,
ich möchte mit c# folgendes Rechenfunktion durchführen:
Ihc habe eine Anfangszahl (z.B. 20) und eine Endzahl (z.B. 50). Ich möchte jetzt per Funktion errechnen wie die Anfangszahl in 14 Schritten linear zur Endzahl entwickelt.
Hat hier jemand eine Idde wie man das machen kann ? Oder ob es da schon etwas fertiges gibt ?
Vielen Dank
Sven
Antworten
-
Hallo,
Wenn ich dich richtig verstanden habe, müsstest du Zahl a - Zahl b und davon den Betrag berechnen. Dann dieses Ergebnis durch deine 14 Teilen. Das was du dort heraus bekommst ist dann der Abstand zweier Werte.
double a = 20; //Wert 1 double b = 50; // Wert 2 int y = 14; //Anzahl der Teilschritte + 1 zwischen den Zahlen a und b double x = Math.Abs(a - b); x = x / y; //Teilschritt berechnen for(int i = 0; i <= y; ++i) { Console.WriteLine(Math.Min(20, 50) + i * x); //Ausgabe } Console.ReadKey(); //Beenden der Konsole verhindern
Wenn du weißt, das a immer größer ist als b, kannst du natürlich die Math.Abs() und die Math.Min()-Methode weglassen.
Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 12. Juli 2012 20:23
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Juli 2012 11:57
-
Ohne berücksichtigung der Fehelerbehandlung von Eingaben in den Textfeldern....
namespace WindowsFormsApplication2 { public partial class Form1 : Form { Double Anfang, Ende; Int32 Schritte; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Anfang = Double.Parse(textBox1.Text); Ende = Double.Parse(textBox2.Text); Schritte = Int32.Parse(textBox3.Text); label1.Text = String.Empty; foreach (var item in SchrittWerte(Anfang, Ende, Schritte)) { label1.Text += String.Format("{0:f2} \n", item); } } private List<Double> SchrittWerte(Double Anfang, Double Ende, int Schritte) { List<Double> Werte = new List<Double>(); for (int i = 0; i < Schritte; i++) { Werte.Add(((Ende - Anfang) / Schritte * i)+Anfang); } Werte.Add(Ende); return Werte; } } }
***********************************************************
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 12. Juli 2012 20:23
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Juli 2012 11:57
Alle Antworten
-
Hallo,
Wenn ich dich richtig verstanden habe, müsstest du Zahl a - Zahl b und davon den Betrag berechnen. Dann dieses Ergebnis durch deine 14 Teilen. Das was du dort heraus bekommst ist dann der Abstand zweier Werte.
double a = 20; //Wert 1 double b = 50; // Wert 2 int y = 14; //Anzahl der Teilschritte + 1 zwischen den Zahlen a und b double x = Math.Abs(a - b); x = x / y; //Teilschritt berechnen for(int i = 0; i <= y; ++i) { Console.WriteLine(Math.Min(20, 50) + i * x); //Ausgabe } Console.ReadKey(); //Beenden der Konsole verhindern
Wenn du weißt, das a immer größer ist als b, kannst du natürlich die Math.Abs() und die Math.Min()-Methode weglassen.
Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 12. Juli 2012 20:23
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Juli 2012 11:57
-
Ohne berücksichtigung der Fehelerbehandlung von Eingaben in den Textfeldern....
namespace WindowsFormsApplication2 { public partial class Form1 : Form { Double Anfang, Ende; Int32 Schritte; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Anfang = Double.Parse(textBox1.Text); Ende = Double.Parse(textBox2.Text); Schritte = Int32.Parse(textBox3.Text); label1.Text = String.Empty; foreach (var item in SchrittWerte(Anfang, Ende, Schritte)) { label1.Text += String.Format("{0:f2} \n", item); } } private List<Double> SchrittWerte(Double Anfang, Double Ende, int Schritte) { List<Double> Werte = new List<Double>(); for (int i = 0; i < Schritte; i++) { Werte.Add(((Ende - Anfang) / Schritte * i)+Anfang); } Werte.Add(Ende); return Werte; } } }
***********************************************************
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Donnerstag, 12. Juli 2012 20:23
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Juli 2012 11:57
-
Hallo Svennie89,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.