Anfänger sucht Profis



  • Hallo zusammen,

    das ist mein erster Beitrag in diesem Forum, da ich absoluter Anfänger bin. Ich hoffe ihr könnt mir weiterhelfen. Ich habe erst vor einigen Tagen angefangen mich in das Thema C-Programmieren einzulesen. Habt also bitte Nachsicht, ich hoffe meine Fragen sind nicht zu doof.
    Leider weiß ich nicht wie ich mir sonst helfen soll. Hierfür also schon mal ein großes Danke Schön an alle die helfen.

    Ich habe mir das Buch "Objektiv-C Der Einstieg" von Aaron Hillegrass gekauft. Ich glaube ich komme auch ganz gut voran. Es werden immer wieder Aufgaben gestellt die aber leider keine Lösungen beinhalten. So habe ich das Problem dass ich nicht weiß ob mein "erbautes" korrekt ist.

    Die aktuelle Aufgabe möchte ich euch gerne mit meinem Lösungsversuch hier aufführen.

    Aufgabe:
    Die Innenwinkel eines Dreiecks müssen zusammen 180 Grad ergeben. Schreiben Sie in main.c eine Funktion, die die ersten beiden Winkel annimmt und den dritten zurückgibt.

    Meine Lösung:
    #include <stdio.h>

    float remainingAngle(angleA, angleB)
    {
    float wert = 180.0 - 30.0 - 60.0;
    return wert;
    }

    int main(int argc, const char * argv[])
    {
    float angleA = 30.0;
    float angleB = 60.0;
    float angleC = remainingAngle(angleA, angleB);
    printf("The third angle is %.2f\n", angleC);

    return 0;
    }

    Die Ausgabe ist korrekt im Output, ich weiß nur nicht ob es auch richtig erstellt ist.

    Viele Grüße,
    Verschuetter



  • Objektiv-C Der Einstieg

    Das ist aber nicht C.

    ersten beiden Winkel annimmt

    D.h. der Benutzer soll in der Lage sein, zwei Winkel dem Programm zu uebergeben. Das geschieht in deinem Programm nicht.



  • Danke für deine Antwort
    Ich weiß das es nicht C ist aber im Buch wird mit C als Grundlage angefangen. Wie gesagt, ich bin totaler Neuling und kann mit deiner Aussage relativ wenig anfangen.
    Vielleicht ein Beispiel möglich?

    Gruß



  • knivil schrieb:

    D.h. der Benutzer soll in der Lage sein, zwei Winkel dem Programm zu uebergeben.

    Woraus liest du das denn?

    Die Aufgabe ist, eine Funktion zu erstellen. Ich sehe da keine Notwendigkeit einer Benutzereingabe.



  • In deiner Funktion rechnest du doch gar nicht mit angleA und angleB.



  • DirkB schrieb:

    In deiner Funktion rechnest du doch gar nicht mit angleA und angleB.

    Ja das habe ich mir irgendwie auch schon gedacht. Hmm ich will nicht zu viel verlangen aber könnte es jemand korrigieren?

    Danke im Voraus



  • Ich glaube ich habe es selber geschafft:

    #include <stdio.h>

    float remainingAngle(angleA, angleB)
    {
    float wert = 180.0 - angleA - angleB;
    return wert;
    }

    int main(int argc, const char * argv[])
    {
    float angleA = 30.0;
    float angleB = 60.0;
    float angleC = remainingAngle(angleA, angleB);
    printf("The third angle is %.2f\n", angleC);

    return 0;
    }


  • Mod

    Sieht doch ganz vernünftig aus. 👍

    Du solltest noch Code-Tags benutzen, wenn du Programme hier in's Forum stellst (unter dem 😡 -Smiley).

    Du könntest noch den temporären Wert weglassen und gleich

    return 180.0 - angleA - angleB;
    

    schreiben. Optimiert der Compiler zwar sowieso, aber ist kürzer, ohne unübersichtlicher zu sein (Ich finde es sogar eher übersichtlicher).



  • Super, vielen Dank euch. Ein Erfolgserlebnis ist eine super motivation. Code Tags werde ich zukünftig nutzen.



  • Kleine Anmerkung:

    float remainingAngle(angleA, angleB)
    

    sollte

    float remainingAngle(float angleA, float angleB)
    

    sein, sonst sind angleA und angleB per Konvention Integer (also Ganzzahlen). Das kannst du schön sehen, wenn du unten mal

    float angleA = 30.123;
    float angleB = 60.456;
    

    hinschreibst und siehst, dass sich das Ergebnis nicht ändert.



  • Super, danke auch noch hier für.



  • Ich war mir jetzt nicht sicher und wollte keinen neuen Threat öffnen, deshalb noch mal hier. Sitze seit geraumer Zeit hier und komme nicht voran. Ich bin bei Funktionen für Gleitkommazahlen.

    Aufgabe:
    Verwenden Sie die math-Library! Fügen Sie Code in main.c ein, der den Sinus von 1 Radiant ausgibt. Runden Sie die Zahl auf drei Nachkommastellen. Sie sollte 0.841 lauten.

    Mein Code:

    #include <stdio.h>
    #include <math.h>
    
    int main(int argc, const char * argv[])
    {  
        double g = 1.800 * 102, Pi = M_PI;        //Zuweisung der Variablenwerte   
            double s = sin((g / Pi));             //Berechnung 
                printf("Sinus ist %.3f\n", s);    //Ausgabe von Sinus
    
        return 0;
    }
    

    Ich bekomme leider im Output "Sinus ist 0.949". Kann mir jemand sagen was ich falsch mache?

    Vielen lieben Dank schon mal.

    Grüße



  • sin erwartet das argument in rad, du braucht nichts umzurechnen



  • hab kurz zeit schrieb:

    sin erwartet das argument in rad, du braucht nichts umzurechnen

    Wärst du so nett es mir eben zu Tippen, ich steh total am Schlauch. Danke.



  • sin(1)



  • Boa vielen Dank!



  • Verschuetter schrieb:

    double g = 1.800 * 102, Pi = M_PI;
    

    M_PI ist kein C-Standard, d.h. er muss nicht in math.h vorhanden sein.



  • Wutz schrieb:

    Verschuetter schrieb:

    double g = 1.800 * 102, Pi = M_PI;
    

    M_PI ist kein C-Standard, d.h. er muss nicht in math.h vorhanden sein.

    Und wenn Du M_PI eh als Konstante nutzt, brauchst Du es auch nicht einer weiteren Variable ( double Pi ) zuweisen.



  • Hi community, ich habe so meine probleme mit c unter linux

    hier das problem:

    [code="c"]

    #include <stdio.h>
    #include <string.h>

    int main()
    {
    char str_a[20];

    strcpy(str_a, "Hello, world!\n");
    printf(str_a);

    return 0;

    }

    unter code::block wird mir ein fehler bei der printf anweisung angezeigt (build)

    wenn ich nun ins terminal gehe(ubuntu) und dort die bahs-befehle eingebe

    --->gcc char-array.c //Befehl

    --->char_array.c:9:5: Warnung: Format ist kein Zeichenkettenliteral, und keine Formatargumente [-Wformat-security] //Fehler

    was soll ich machen 😡

    THX für eure hilfe



  • Klappt doch prima.


Anmelden zum Antworten