Anfänger sucht Profis



  • 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.



  • Bei mir leider nicht 😞 woran kann es liegen?



  • Du zeigst uns nicht den richtigen Code.



  • hmmm sry für die dumme frage, aber wie meinst du das?
    das ist der code den ich unter der IDE CODE::Block geschrieben habe.

    Ps: Bezüglich des terminals ich wollte euch die fehlermeldung zeigen vll hilft sie euch weiter 😕



  • newbieee schrieb:

    hier das problem:

    char str_a[20];
    
        strcpy(str_a, "Hello, world!\n");
        printf(str_a);
    

    Wenn Du Dir den Prototypen von printf() anschaust wirst Du sehen, dass das erste Argument der format string ist.
    Du könntest jetzt einen passenden format string verwenden, der Dein char[] ausgibt:
    printf("%s", str_a);
    Oder ausweichen, auf eine Funktion, die einen const char* ausgibt:
    puts(str_a);



  • ich danke dir, jetzt funktioniert das programm !



  • #include <stdio.h>
    
    int main() {
    
      char string[10];
      int A = -73;
      unsigned int B = 31337;
    
      strcpy(string, "sample");
    
      //Beispiel für die Ausgabe mit verschiedenen Formatstrings
      printf("[A] Dec: %d, Hex: %x, Unsigned: %u\n", A, A, A);
      printf("[B] Dec: %d, Hex: %x, Unsigned: %u\n", B, B, B);
      printf("[field width on B] 3: '%3u', 10: '%10u', '%08u'\n", B, B, B);
      printf("[string] %s Adresse %08x\n", string, string);
    
      //Beispiel für unären Adressoperator (Deferenzierun) und ein %x-Formatstring
      printf("variable A is at address: %08x\n", &A);
    
    }
    

    Hi Leute, was habe ich schon wieder falsch gemacht?
    Code::Block
    sagt:|9|Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy« [standardmäßig aktiviert]|
    15|Warnung: Format »%x« erwartet Argumenttyp »unsigned int«, aber Argument 3 hat Typ »char *« [-Wformat]|
    18|Warnung: Format »%x« erwartet Argumenttyp »unsigned int«, aber Argument 2 hat Typ »int *« [-Wformat]|
    ||=== Build finished: 3 errors, 0 warnings ===|

    MfG


  • Mod

    #include <string.h>
    

    P.S. %08x ist nicht der Formatspezifizierer für Pointer. Das wäre %p .

    P.P.S.: Warum überhaupt strcpy? Initialisier dein "string" doch einfach direkt.



  • Das ist ein Beispiel aus einem Buch und ich frage mich wie kann es passieren, dass so grobe Fehler produziert werdeno0 Naja aber danke jetzt funktioniert es!

    MfG


Anmelden zum Antworten