C# sind diese Rechenwege zu Zinsen so richtig?

Kurz und knapp: In der Schule haben wir das Thema Zinsen und ich will eine Art Converter zum ermitteln der Werte programmieren. Sind die Rechenwege so richtig?

Hier der Code:

Musste den Code in 3 Teile aufteilen.

       private void CmdAnzeigen_Click(object sender, EventArgs e)
        {
            double summe;
            double Laufzeit;
            double Kapital1, Kapital2, Kapital3;
            double Zinsen1, Zinsen2, Zinsen3;
            double Zinssatz1, Zinssatz2, Zinssatz3;

            // Hr (1, 2) = Hochrechnung. 

            if (Txt3.TextLength == 0)
                Laufzeit = 1;
            else
                Laufzeit = Convert.ToInt32(Txt3.Text);

            if (Chk1.Checked == true)
            {
                Zinsen1 = Convert.ToDouble(TxtEingabe1.Text);
                Zinssatz1 = Convert.ToDouble(TxtEingabe2.Text);

                double x = Zinssatz1;
                double y = Laufzeit;
                double Hr = System.Math.Pow(x, y);

                summe = Zinsen1 / Hr * 100;
                LblAnzeige.Text = "Das Ergebnis ist: " + summe + "\n" + "Der Rechenweg: " + Zinsen1 + " : " + x + "hoch" + y + " * 100" + "\n" +
                    "Zinsen geteilt durch Zinssatz (hoch Laufzeit) mal 100";
            }

           else if (Chk2.Checked == true)
            {
                Kapital2 = Convert.ToDouble(TxtEingabe1.Text);
                Zinssatz2 = Convert.ToDouble(TxtEingabe2.Text);

                double x = Zinssatz2;
                double y = Laufzeit;
                double Hr1 = System.Math.Pow(x, y);

                summe = Kapital2 * Hr1 / 100;
                LblAnzeige.Text = "Das Ergebnis ist: " + summe + "\n" + "Der Rechenweg: " + Kapital2 + " * " + x + "hoch" + y + " / 100" + "\n" +
                    "Kapital mal Zinssatz (hoch Laufzeit) geteilt durch 100";
            }
            else if (Chk3.Checked == true)
            {
                Zinsen3 = Convert.ToDouble(TxtEingabe1.Text);
                Kapital3 = Convert.ToDouble(TxtEingabe2.Text);

                double x = Kapital3;
                double y = Laufzeit;
                double Hr2 = System.Math.Pow(x, y);

                summe = Zinsen3 / Hr2 * 100;
                LblAnzeige.Text = "Das Ergebnis ist: " + summe + "\n" + "Der Rechenweg: " + Zinsen3 + " : " + x + "hoch" + y + " * 100" + "\n" +
                    "Zinsen geteilt durch Kapital (hoch Laufzeit) mal 100";
            }

        }

Falls ihr oben kaum was erkennt:

Ich denke es gibt beim Rechen mit z.b. "hoch 2" Probleme, im unteren Bild können niemals 100€ Zinsen rauskommen. Das ist so, wie wenn ich 100€ zur Bank bringe und nach 2 Jahren mein Geld verdoppelt hätte, echt ne' geile Bank.

Welchen Fehler gibt es beim "Hochrechnen"?

Ich rede hier vom Zinseszins, hatte diesen Begriff vergessen^^

Bild zum Beitrag
Computer, Schule, Mathematik, Programm, programmieren, C Sharp, Zinsen
Projekt in Visual Studio C# wie mache ich z.b. 100*5 hoch 2? Fragen zur Zinsrechnung in C#?

In der Schule haben wir das Thema Zinsen in Mathe, ich möchte nun eine Anwendung erstellen, welche mir z.b. bei der Suche der Zinsen nur durch das eingeben von dem Kapital, Zinssatz und der Laufzeit in Jahren das Ergebnis + Rechenweg gibt.

  1. Frage

Ich habe es schon geschafft, dass mir bei einer Laufzeit von einem Jahr das Richtige angezeigt wird, aber bei z.b. 2 Jahren wird der Wert einfach verdoppelt. Das ist natürlich nicht falsch, da ich * diesen Wert (Wert3) geschrieben habe. Aber es soll so sein, dass die Zinsen nach dem ersten Jahr auch mitgerechnet werden. So wie beim Taschenrechner bei der Hochrechentaste: ("X" und oben rechts ein "y").

Wie mache ich es, dass das mitgerechnet wird?

zweite Frage:

Wenn die Jahre/Laufzeit nur 1 ist, soll automatisch "1" bei Wert3 stehen, ohne es bei der TextBox einzugeben (Wert3 ist der Wert für die Jahre/Laufzeit). Wie mache ich das?

dritte Frage:

Ist es möglich Rechenwege mit Klammern zu schreiben? (Z.B. (Wert1 * Wert2 / 100) * Wert3. Ja bei dieser Rechnung wären Klammern unnötig, aber ihr wisst was ich meine.)^^

Vierte Frage:

Kann ich irgendwie z.b. der Variable "wert1" zu der Variable "Kapital" zuweisen bei einer if-Abfrage? Also dass ich beim If-Teil "Wert1 = Kapital" und bei der Rechnung "Kapital * …." eingeben kann? Wenn ich das so mache, kommt immer 0 raus, egal was ich in die TextBox eingebe.

Und letzte Frage:

Kann man irgendwie in die TextBoxen mit Kommata (,) schreiben? (Z.B. das Kapital ist 100,75€ groß), bei der Eingabe eines Kommas kommt immer der Fehler, dass die Zeicheneingabefolge falsch sei (oder so ähnlich).

Ich hoffe ihr könnt mir helfen. Ich mache dies hier: 1. um C# weiterzulernen und 2. Falls ich den Rechenweg mal vergesse, ich trotzdem diese Anwendung hier habe.^^

So sieht der Code aus (bin C# Anfänger):

Bild zum Beitrag
PC, Computer, Microsoft, Schule, Mathematik, programmieren, C Sharp, Visual Studio
Taschenrechner programmieren mit C# der die Eingabe aus einer Zeile lesen kann?

Ich habe im Moment einen der nur in dieser Art funktioniert :

5

*

5

10

Also ein normaler Consolen Taschenrechner, aber ich brauche einen der so Rechnen kann: 5+5 10 also in einer Zeile. Ich krieg es nicht gebacken, mein Code:

using System;

namespace ConsoleApplication2 { public enum Rechenoperation { Minus,Plus,Division,Multiplikation, Unbekannt } internal class Program { public static void Main(string[] args) { var zahl1 = AskZahl(); var rechenoperation = AskforRechenoperation(); var zahl2 = AskZahl(); int? ergebnis = null; switch (rechenoperation) { case Rechenoperation.Minus: ergebnis = zahl1.Value - zahl2.Value; break; case Rechenoperation.Plus: ergebnis = zahl1.Value + zahl2.Value; break; case Rechenoperation.Division: ergebnis = zahl1.Value / zahl2.Value; break; case Rechenoperation.Multiplikation: ergebnis = zahl1.Value * zahl2.Value; break; case Rechenoperation.Unbekannt: break; default: throw new ArgumentOutOfRangeException(); }Console.Out.WriteLine(ergebnis); Console.ReadKey(); }

    private static Rechenoperation AskforRechenoperation()
    {
        Console.WriteLine("");
        var eingabe = Console.ReadLine();
        if (eingabe.Contains("-"))
        {
            return Rechenoperation.Minus;
        }
        if (eingabe.Contains("*"))
        {
            return Rechenoperation.Multiplikation;
        }
        if (eingabe.Contains("+"))
        {
            return Rechenoperation.Plus;
        }
        if (eingabe.Contains("/"))
        {
            return Rechenoperation.Division;
        }

        return Rechenoperation.Unbekannt;
    }
    private static int? AskZahl2()
    {
        Console.WriteLine("");
        var eingabe = Console.ReadLine();
        if (int.TryParse(eingabe,out var zahl))
        {
            return zahl;
        }

        return null;
    }

}

programmieren, C Sharp
Wieso bekommt die Variabel einen anderen Wert?

Wenn ich den C# Code ausführe wird der Wert der Variabel tief auf eingabe+48 gesetzt.

Wie kann ich das verhindern?

private static void tri()
        {
            Console.Write("Bitte geben sie die breite an: ");
            int tief = Console.Read();
            Console.WriteLine(tief);
            int tiefe = tief + 2;
            Console.WriteLine(tiefe +" "+ tief);
            StringBuilder dreieck = new StringBuilder(string.Empty);
            char[] form = new char[tiefe];
            for (int i = 0; i < tiefe; i++)
            {
                form[i] = ' ';
            }
            for (int it = 0; it <= tiefe/2-1; it++)
            {
                    try
                    {
                        form[(tiefe / 2 + 1) - it] = '#';
                        form[(tiefe / 2 + 1) + it] = '#';
                    }
                    catch
                    {
                        //abbrechen
                    }
                  dreieck.AppendFormat(new String(form)+ "\n");
              }
              Console.WriteLine(dreieck);
        }
Bild zum Beitrag
Programm, programmieren, C Sharp, Informatik, Visual Studio
C# Prozess mit einem Admin Konto starten. Wie?

Moin,

Ich habe nun sehr lange im Internet gegoogelt und habe immer noch keine Antwort auf mein Problem gefunden.

Aber nun zu meinem Problem:

Ich habe eine Anwendung geschrieben, die ich gerne als Administrator mit erhöhten Rechten starten möchte(mit Hilfe eines neuen Programms). Mein Problem ist nun, dass Visual Studio mir die ganze Zeit bei dem Programm, welches die Anwendung starten soll, die folgende Fehlermeldung bringt: "System.ComponentModel.Win32Exception: "Der angeforderte Vorgang erfordert erhöhte Rechte"".

Im Internet finde ich leider nicht viel darüber, wie man diese Meldung umgehen kann.

Wie ich mein Prozess starte, der die Admin Rechte benötigt:

SecureString securestring = new SecureString();

      string Passwort = "[Admin-Password]";

      foreach (char char in Passwort)

      {

        securestring.AppendChar(char);

      }

      ProcessStartInfo processstartinfo = new ProcessStartInfo();

      processstartinfo.UserName = "[Admin-Account]";

      processstartinfo.Password = securestring;

      processstartinfo.Verb = "runas";

      processstartinfo.FileName = @"[App, die Admin Rechte braucht]";

      processstartinfo.UseShellExecute = false;//wird von VS so verlangt

      Process.Start(processstartinfo);// Hier taucht die Fehlermeldung auf

Und nun ist meine Frage, wie ich das ganze mache....

Oder bin ich auf ein Problem gestoßen, welches ein Sicherheits-Feature von Windows ist?

Edit: Die Aufgabenplanung unter Windows ist leider auch keine Möglichkeit, da das Programm leider nicht angezeigt wird...

Danke schon mal im Vorhinein!

Computer, Windows, programmieren, C Sharp

Meistgelesene Fragen zum Thema C Sharp