Wurzelfunktion programmieren in c#

Knieto

Cadet 1st Year
Registriert
Sep. 2012
Beiträge
13
Hallo zusammen,

ich bin ein absoluter Neuling auf dem Gebiet der Programmierung mit c#!

Meine Aufgabe lautet:

Gesucht wird die Hypotenuse eines rechtwinkligen Dreiecks!

Die Formel an sich ist ja leicht verständlich:

a^2+b^2=c^2
Umgeformt:

c=Die Wurzel aus (a^2+b^2)

Ich muss die ganze Sache mit der Eingabeaufforderung programmieren!

Ich begann natürlich erstmal in die Console zu schreiben, wählen sie eine Seitenlänge a aus und danach eine mit b!

Vorher habe ich natürlich erstmal 3 Variablen angelegt!

Seite_a
Seite_b
Seite_c

Ich dachte so kann ich erstmal beginnen!
Meine Frage ist jetzt, wie arbeite ich das am besten ab?

Meint ihr eine if then else oder eine if else abfrage wäre am einfachsten zu realisieren???

Wenn ja, wie soll ich da vor gehen?!

Als if Bedingung habe ich geschrieben, dass die Seitenlänge von a und b jeweils größer als 0 sein müssen! Denn es gibt ja keine negativen längenangaben bei einem Dreieck!

Wenn diese Bedingung doch wahr ist, wie gehe ich da weiter vor?

Ich denke mal ich schreibe mal eben das Programm so ab, wie ich es bei mir in visual 2010 geschrieben habe, vllt erkennt ihr ja den Fehler und könnt mir weiter helfen!?


Muss ich dafür eine Dezimal oder eine double Variable verwenden??

Also ich beginne mal:

namespace Aufgabe_1
{
class Programm
{
static void Main(string()args)
{

double a, b, c;

Console.Write("Bitte geben Sie die Länge der Seite a ein:");
a = Double.Parse(Console.ReadLine());
Console.Write("Bitte geben Sie die Länge der Seite b ein:");
b = Double.Parse(Console.ReadLine());

c= Pythagoras(a, b,);
Console.WriteLine("Die dritte Seite ist {0} lang!", c);





Wie gehe ich jetzt weiter vor, wo und wie kann ich die Mathematische Formel einsetzten??

PS:
ich weiß es ist etwas kurzfristig, aber ich bräuchte am besten noch heute die Antwort!
Die Aufgabe ist bis morgen, und ich sitze seit heute Mittag daran! Alleine komme ich wohl nicht auf die Lösung!


Gruß Knieto
 
Math.sqrt(x) - Wurzel aus x
Math.pow(x, y) - x hoch y

c=Math.sqrt(Math.pow(a,2), Math.Pow(b,2)) zum Beispiel
 
Zuletzt bearbeitet:
Und wie tippe ich das wo ein???

Bei dem Befehl: c= Pythagoras(a, b,);

Gibt der mir auch schon einen Fehler raus?!
 
Gibt es denn eine Methode mit dem Namen "Phytagoras"? Außerdem ist dort auch ein Komma zuviel. Habe im anderen Post auch noch was hinzugefügt.
 
Keine Ahnung wie es bei C# ist aber bei C++ muss man Methoden über der main Methode als Prototyp definieren. Falls es bei C# nicht so ist, hab ich leider keine Ahnung warum du bei deiner Methode nen Fehler bekommst, aber Quellcode wäre für die anderen sicherlich hilfreich

Etwa so:

Code:
int pythagoras(int a, int b);

int main()
{
[INDENT]bla main[/INDENT]
}

int pythagoras(int a, int b)
{
[INDENT]bla pythagoras[/INDENT]
}

Zur Wurzel:

Sollte eigentlich eine Methode dazu geben, die wie von über mir schon genannt meistens Math.sqrt(x) lautet. (Am besten mal in der C# API nachschauen)

Edit:

Wir mussten für die Schule auchmal so ein ähnliches Programm schreiben, allerdings in Java und für ein ganzes Haus (also Dreieck und Rechteck/Quadrat) kann ja mal schauen ob ich das noch finde, einfach damit du mal nen Ansatz hast
 
Zuletzt bearbeitet:
@sherk456:

Das wäre echt super! Danke schonmal im voraus!!!



Also ich bin dann jetzt mal den weg gegangen:

habe die Variablen als double a. b, c deklariert!

Dann das übliche was ich schon ganz am Anfang gepostet habe!


Mal kurz zum Verständis, ich bin ein absokuter c# Neuling, das ist mein erstes Programm was ich schreiben soll!

Es wäre nett wenn sich einer die Zeit nimmt, und es mit mir von Anfang an durchkaut?!?!

If, Else???
oder ???
switch, case???

Damit fängt es schon an, ich müsste mich mal festlegen!
 
Find's leider nicht, wird wahrscheinlich noch in der Schule sein, da komm ich allerdings vor Morgen auch nicht ran, bedeutet: Bringt dir realtiv wenig :( Sry


Ich benutze in meinen Programmen eigentlich immer if else, das andere kenne ich garnicht.

Code:
namespace Aufgabe_1
{ 
class Programm
{

double Pythagoras(double a, double b,);
static void Main(string()args)
{

double a, b, c;

Console.Write("Bitte geben Sie die Länge der Seite a ein:");
a = Double.Parse(Console.ReadLine());
Console.Write("Bitte geben Sie die Länge der Seite b ein:");
b = Double.Parse(Console.ReadLine());

c= Pythagoras(a, b,);
Console.WriteLine("Die dritte Seite ist {0} lang!", c);

double Pythagoras(double a, double b,);
{
[INDENT]c = Math.sqrt(Math.pow(a)+Math.pow(b))[/INDENT]
[INDENT]return c[/INDENT]
}

So sollte das Programm erstmal laufen(Quellcode im Spoiler), wenn du jetzt noch Überprüfen willst ob überhaupt ein Ergebnis möglich ist (also a und b < 0) würde das ganze so aussehen.

Code:
namespace Aufgabe_1
{ 
class Programm
{

double Pythagoras(double a, double b,);
static void Main(string()args)
{

double a, b, c;

Console.Write("Bitte geben Sie die Länge der Seite a ein:");
a = Double.Parse(Console.ReadLine());
Console.Write("Bitte geben Sie die Länge der Seite b ein:");
b = Double.Parse(Console.ReadLine());
if(a<0 && b<0)
{
[INDENT]c= Pythagoras(a, b,);
Console.WriteLine("Die dritte Seite ist {0} lang!", c);[/INDENT]
}
else
{
[INDENT]Console.Write("Keine Lösung!")[/INDENT]
}

double Pythagoras(double a, double b,);
{
[INDENT]c = Math.sqrt(Math.pow(a)+Math.pow(b))[/INDENT]
[INDENT]return c[/INDENT]
}

Perfekt wäre das ganze jetzt noch mit Schleifen, die nach jedem Durchgang frägt ob man noch etwas berechnenen will oder ob das Programm beendet werden soll und mit einer Schleife die bei falscher Eingabe eines a oder b Wertes von vorne beginnt, das wäre aber für den Anfang zuviel(vielleicht editier ich das gleich noch schnell rein, bin nur grade am fernsehen :D )
 
Zuletzt bearbeitet:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Aufgabe_3._2
{
class Program
{
double Pythagoras(double a, double b);

static void Main(string()args)
{

double a, b, c;


Console.Write("Bitte geben Sie die Länge der Seite a ein:");
a = Double.Parse(Console.ReadLine());
Console.Write("Bitte geben Sie die Länge der Seite b ein:");
b = Double.Parse(Console.ReadLine());
if(a<0 && b<0)

{

c= Pythagoras(a, b,);

Console.WriteLine("Die dritte Seite ist {0} lang!", c);

}
else
{

Console.Write("Keine Lösung!")

}

double Pythagoras(double a, double b,);
{

c = Math.sqrt(Math.pow(a)+Math.pow(b))

return c

}
}
}
}


Dieses Programm zeigt mir 40 Fehler an!!!!
Kann also nicht ganz so stimmen oder???
 

Anhänge

  • Unbenannt2.png
    Unbenannt2.png
    218,2 KB · Aufrufe: 847
  • Unbenannt.png
    Unbenannt.png
    208 KB · Aufrufe: 549
  • Unbenannt3.png
    Unbenannt3.png
    166,6 KB · Aufrufe: 1.698
Zuletzt bearbeitet: (Sry Bild 3 habe ich vergessen!)
Zu den meisten Fehlern kann ich dir nicht viel sagwn weil ich kein C# beherrsche, allerdings haben viele Fehler etwas mit falschem Umgang von Methoden zu tun ("... ist eine Methode wird aber wie ein Typ verwendet").

Entferne auch mal das String()args aus der Klammer beim Main, das scheint auch einen Fehler zu verursachen.

Um das Programm heute noch zu fertig zu bekommen würde ich mir im Internet ein Tutorial suchen, damit findet man seine Fehler am leichtesten/findet bessere Lösungen.
Das Tutorial sollte bei den Grundlagen beginnen, also erstellen einer Klasse, Umgang mit Methode etc. if else würde ich erstmal aussenvorlassen und erst hinzufügen wenn das einfache Programm fehlerfrei läuft.


Btw tut mir leid das ich dir oben einen falschen Quelltext gepostet hab :-)

Edit: Beim durchscauen deines Quellcodes auf dem Screenshot ist mir aufgefallen das parse, write und die dazugehörigen Zuweisungen rot (also fehlerhaft/falsch) unterstrichen sind. Einfach in der API nachschauen wie der richtige Umgang mit diesen Methoden ist. Denn das wird im tutorial wahrscheinlich noch nicht behandelt werden
 
Zuletzt bearbeitet:
Alles klar, ich habe auf youtube ein Tutorial gefunden, was von anfang an beginnt!

Vllt sollte ich auch erstmal so vorgehen, und dann wenn ich eine spzielle Frage habe, diese hier posten?!

Denn ich denke ein paar Grundlagen sollten dann doch von nöten sein!

Ich danke Dir erstmal für deine Mühe und Hilfe!

Ich werde mich morgen nochmal melden, und mal posten wie ich das Programm dann hoffentlich geschafft habe!

Vllt hast du dann ja auch das JAVA Programm, aus der Schule?!


Ich wünsche einen schönen restlichen Sonntag noch, und einen guten Start in die Woche!

Und danke erstmal an alle beteiligten!!!

Gruß Knieto
 
Also da sind auch extrem viele Fehler drin. Hab mal den Code mit möglichst wenig Modifikationen umgeschrieben, sodass er kompiliert. Heißt aber nicht, dass er das tut was du willst bzw. das gut tut. Beispielsweise steht in der if abfrage a kleiner 0 und b kleiner 0 -> sollte das nicht größer 0 sein? Versuch am besten nochmal jeden einzelnen Schitt nachzuvollziehen und informier dich genau über Frameworkmethoden! Math.Pow(a) z.B. gibt es nicht. Und den Methodenheader musst du auch nicht hinschreiben, wie es shrek456 meinte (Also dieses double Pythagoras(double a, double b); am Anfang. Vergiss das am besten direkt wieder). Bei Pythagoras(a,b) hast du immer ein Komma hinter b gesetzt. Solche Kleinigkeiten musst du direkt erkennen und korrigieren. Sonst hast du so eine Fehlerliste, die aber nicht mehr wirklich was mit dem Fehler zu tun hat, denn so gut wie alle Fehler sind Folgefehler, nur weil du am Anfang z.B. ein Komma falsch gesetzt hat. Da hilft dir Visual Studio ja. In Screen #3 sind z.B. die ganzen ReadLine Sachen rot. Das hat aber nichts damit zu tun, dass sie falsch wären. Der Fehler ist schon bei string() args. Also Fehler immer direkt und von oben nach unten korrigieren.
Code:
    class Program
    {
        static void Main(string[] args)
        {
            double a, b, c;
            Console.Write("Bitte geben Sie die Länge der Seite a ein:");
            a = Double.Parse(Console.ReadLine());
            Console.Write("Bitte geben Sie die Länge der Seite b ein:");
            b = Double.Parse(Console.ReadLine());

            if(a<0 && b<0)
            {
                c= Pythagoras(a, b);
                Console.WriteLine("Die dritte Seite ist {0} lang!", c);
            }
            else
            {
               Console.Write("Keine Lösung!");
            }
        }

        static double Pythagoras(double a, double b)
        {
            return Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));
        }
    }

Kann dir wenn du willst gerne nochmal alle Fehlerkorrekturen detailliert beschreiben wenn du willst.
Mal zu if else vs Switch: Beides kann das gleiche tun, aber in einer If Else Abfrage kannst du detaillierter Abfragen (wie in deinem Fall a<0 && b<0). Ein typischer Fall für if else wäre also dein Programm. Bei einfachen Vergleichen mit einigen Fällen nimmt man dann eher Switch. Typisch wäre.
Code:
            int i = 2;
            switch (i)
            {
                case 0:
                    // hier passiert was wenn i 0 ist
                    break;
                case 1:
                    // hier was anderes bei 1
                    break;
                case 2:
                case 3:
                    // hier passiert etwas wenn i 2 oder 3 ist
                    break;
                default:
                    // das passiert wenn keiner der vorherigen Fälle eintritt
                    break;
            }
 
Zuletzt bearbeitet:
Zurück
Oben