Anfänger sucht Profis



  • 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


  • Mod

    newbieee schrieb:

    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!

    Weil häufig Bücher von irgendwelchen Sachbuchstümpern geschrieben werden, die alle 6 Monate ein neues Buch auf den Markt schmeißen, jeweils zu einem komplett neuen Thema. Neues Buch? Erfahrungsgemäß ist es sogar immer das gleiche alte Buch, bloß jeweils ein bisschen auf das neue Thema angepasst. Du kannst dir selber denken, wie gründlich für solche Bücher recherchiert wird. Bei Amazon bekommen die dann super Kritiken, weil die Bücher so schön geschrieben sind und weil die Anfänger (die diese Bücher lesen) gar nicht merken, dass sie gerade inhaltlichen Mist gelesen haben.
    Alarmzeichen sind: Der Autor schreibt viele Bücher zu vielen Themen (z.B. der berüchtigte Jürgen Wolf). Das Buch verspricht schnellen ("in 21 Tagen"), vollständigen ("von A bis Z", "komplett") oder einfachen ("für Dummies") Erfolg. Dann lieber die Finger davon lassen.



  • Ok danke für die Info 🙂

    Naja "Gott sei dank" gibt es diese Community!

    MfG


Anmelden zum Antworten