Brauche Hilfe bei HA



  • Hallo,
    Ich habe dieses Jahr angefangen zu studieren und muss nun auch mit C programmieren. Allerdings muss ich gestehen das ich schon in der Schule mit Delphi nicht besonders gut im programmieren war. Ich hoffe ihr könntet mir etwas behilflich sein mit meinen Hausaufgaben, da sie laut Professor nicht besonders schwer sind. Die erste Aufgabe habe ich sogar schon gelöst ich werde sie trotzdem nocheinmal hier herein schreiben um vielleicht Verbesserungsvorschläge zu bekommen. Da wir ganz am Anfang vom Programmieren stehen haben wir als erstes eine komplexes Beispiel bekommen.

    #include <stdio.h>
    int main(void)
    {
    double a,b,hyp;
    double hoehe, flaeche, umfang;
    a = 3;
    b = 4;
    hyp = 5;
    umfang = a + b + hyp;
    hoehe = (a * b) / hyp;
    flaeche = (a * b) / 2;
    printf("Das Dreieck hat die Seiten:\n");
    //folgende Zeile soll für die Aufgaben
    //verwendet bzw. abgewandelt werden
    printf("Kathete a=%lf Kathete b=%lf Hypothenuse hyp=%lf\n",a,b,hyp);
    return 0;
    }

    Nun ist die Aufgabe 3 Berechnungen als Funktionen zu implementieren und diese in der Main Funktion auszugeben. Dies habe ich so gelöst.

    #include <stdio.h>

    double berechneUmfang(double a, double b, double hyp)
    {
    double umfang = a + b + hyp; //Berechnung
    return 0;
    }

    double berechneHoehe(double a, double b)
    {
    double hoehe = (a * b) / 2; //Berechnung
    return 0;
    }

    double berechneFlaeche(double a, double b)
    {
    double flaeche = (a * b) / 2; //Berechnung
    return 0;
    }

    int main(void)
    {
    double a,b,hyp;
    double hoehe, flaeche, umfang;
    a = 3;
    b = 4;
    hyp = 5;
    umfang = berechneUmfang(a, b, hyp);
    hoehe = berechneHoehe(a, b);
    flaeche = berechneFlaeche(a, b);
    printf("Das Dreieck hat die Seiten: a, b und hyp\n");
    //folgende Zeile soll für die Aufgaben
    //verwendet bzw. abgewandelt werden
    printf("Kathete a=%lf Kathete b=%lf Hypothenuse hyp=%lf\n",a,b,hyp);
    return 0;
    }

    Die 2. Aufgabe ist allerdings etwas komplizierter. Sie lautet:

    Die Gleichungen(ausser Umfang) gelten für
    rechtwinklige Dreiecke. Für die Parameter im Beispiel
    (a,b,hyp) ist dies der Fall.
    Prüfen Sie vor den Berechnungen, ob die Kantenlängen
    einem rechtwinkligem Dreieck entsprechen. Wenn ja,
    dann kann die Berechnung mit Hilfe der im Beispiel
    genannten Gleichungen erfolgen. Falls die Seiten
    nicht rechtwinklig sind, so müssten Fläche und Höhe
    anders errechnet werden. Das Programm sollte daher in
    diesen Fällen eine gehaltvolle Fehlermeldung ausgeben
    und ohne Berechnungen enden.

    Ich habe sie wie folgt gelöst, allerdings meint mein Compiler(MinGW) error: stray '\ 178' in program.

    int main(void)
    {
    double a,b,hyp;
    double hoehe, flaeche, umfang, rechtwinklig;
    a = 3;
    b = 4;
    hyp = 5;
    umfang = berechneUmfang(a, b, hyp);
    if (a² + b² = hyp²)
    {
    hoehe = berechneHoehe(a, b);
    flaeche = berechneFlaeche(a, b);
    }
    else {prinf("Das Dreieck ist nicht rechtwinklig\n")}
    printf("Das Dreieck hat die Seiten: a, b und hyp\n");
    //folgende Zeile soll für die Aufgaben
    //verwendet bzw. abgewandelt werden
    printf("Kathete a=%lf Kathete b=%lf Hypothenuse hyp=%lf\n",a,b,hyp);
    return 0;
    }

    Aufgabe 3.1:
    Implementieren Sie den in der Übung 1
    vorgestellten Dezimal-zu-Binär-
    Konverter/Algorithmus. Der Nutzer soll eine
    positive Ganzzahl eingeben können, die dann
    visuell bestätigt und schlußendlich im
    (zeilenweise) Binärformat ausgegeben wird.
    Implementieren Sie den eigentlichen Algorithmus
    in einer Funktion.
    Hinweis: Benutzen Sie zur Lösung die
    Shiftoperatoren! Machen Sie sich ggf.
    schriftlich vorher klar, was die Operatoren
    (left, right shift) bewirken, wenn um eine
    Stelle geschoben wird.

    Der Dezimal-zu-Binär-Konverter/Algorithmus ist meiner Meinung nach dieser Z=((i=−n)Σ(m))zi⋅2i ("hoffe ihr versteht meine Summenschreibweise")

    Ich weis natürlich das alles ziemlich viel Text ist und auch einige Aufgaben beinhaltet.Ich hoffe trotzdem das ihr mir behilflich sein könntet.

    Gruß,
    Rasta



  • Die erste Aufgabe ist natürlich Aufgabe 1 und nicht Aufgabe 3.

    Gruß,
    Rasta



  • falsches Forum 👎



  • 1. Falsches Forum , das ist C und nicht C#
    2. bitte pack deinen Code in die Codetags



  • Mir scheint es als hast du nicht verstanden, was return macht:

    double berechneFlaeche(double a, double b)
    {
    double flaeche = (a * b) / 2; //Berechnung
    return 0;
    }
    

    Der Befehl gibt schlussendlich das Ergebnis der Funktion zurück. In diesem Fall unabhängig von der vorherigen Berechnung immer 0 ⚠

    So sollte es gehen:

    double berechneFlaeche(double a, double b)
    {
    double flaeche = (a * b) / 2; //Berechnung
    return flaeche;
    }
    

    Diesen Fehler hast du auch bei den anderen Funktionen gemacht. Folgendes ist so auch nicht möglich:

    if (a² + b² = hyp²)
    

    Du musst entweder die Funktion pow benutzen, oder dir selber eine Funktion zur Potenzierung schreiben.
    Außerdem wird ein Vergleich mit == durchgeführt ⚠

    #include <math.h>
    
    if (pow(a, 2) + pow(b, 2) == pow(hyp, 2))
    {
    }
    


  • Danke für die schnelle Hilfe und Antworten. Hab einen neuen Threat im hoffentlich richtigen Forum erstellt. Der Link dazu:

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1801666.html#1801666

    Gruß,
    Rasta


Anmelden zum Antworten