Berechnung einer quadratischen Funktion.

Tutorials.at
Verfügbare Informationen zu "Berechnung einer quadratischen Funktion."

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Kimi - detewe89 - DrPhil_Guth - exbs - Dirty Oerty - wirthi
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 19
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Berechnung einer quadratischen Funktion.
  • Letzte Antwort: vor 16 Jahren, 5 Monaten, 6 Tagen, 10 Stunden, 31 Minuten
  • Alle Beiträge und Antworten zu "Berechnung einer quadratischen Funktion."

    Re: Berechnung einer quadratischen Funktion.

    Kimi - 08.11.2007, 22:19

    Berechnung einer quadratischen Funktion.
    Hi ich habe folgende aufgabe auf und habe die so erstmals gelöst allerdings bitte ich um hilfe.

    Wie man das evtl übersichtlicher oder besser gestalten könnte und wo noch fehler vorhanden sind.

    Danke!

    Code: #include <stdio.h>                                                      // Bibos
    #include <math.h>
    main()
    {
       int schleife=1;
       char schleife2="0";
        double a, b, c, x1, x2, imag, reel;                                       // Deklarieren
       printf("Berechnung einer quadratischen Gleichung der Form a*x^2+b*x+c=0\n\n");      // Daten sammeln
       while (schleife==1)
       {
       printf("\nBitte den Koeffizienten a eingeben: ");
       scanf("%lf", &a);fflush(stdin);
       printf("\nBitte den Koeffizienten b eingeben: ");
       scanf("%lf", &b);fflush(stdin);
       printf("\nBitte den Koeffizienten c eingeben: ");
       scanf("%lf", &c);fflush(stdin);
       if (a != 0)                                                         // Quad oder Lin?
       {
          if ((b*b) - (4*a*c) > 0)                                                // Real oder Irreal?
          {
             x1 = (-b + sqrt ((b*b) - (4*a*c))  )/(2*a);                                       // Real
             x2 = (-b - sqrt ((b*b) - (4*a*c))  )/(2*a);
             printf("\n Die Gleichung ist tats\228chlich eine quadratische reell\228sbare Gleichung, Gl\252ckwunsch :-)"); // Ausg Real
             printf("\nx1 = %f", x1);
             printf("\nx2 = %f", x2);
          }
          else
          {
             imag = (sqrt (-b*b+4*a*c)) / 2*a;                                             // Irreal
             reel = -b / 2*a;
             printf("Die Gleichung ist reel nicht l\246sbar. Die Komplexe L\246sung lautet: ");                     // Ausg Irreal
             printf("\nx1 = %g + %g * i", reel, imag);
             printf("\nx2 = %g - %g * i", reel, imag);
          }
       }
       else
       {
          x1 = - (c/b);
          printf("Das war zwar nicht quadratisch ( also linear :-) ), aber egal...\nx = %f", x1);                  // Ausgabe Linear
       }
       getch();
       printf("\n\nM\246chten Sie noch eine Berechnung machen?(j/n):\n");
       scanf("%c", &schleife2);fflush(stdin);
       if (schleife2=="j") {schleife=1;} else {schleife=0;}
       }
       return 0;
    }


    Ich habe hier noch fehler drin, hmmm shit.


    Vor allem mit der schleife.

    Danke für die hilfe.



    Re: Berechnung einer quadratischen Funktion.

    detewe89 - 09.11.2007, 18:10


    Also ein kleiner "Fehler" ist auf alle Fälle mal, dass Du getch() verwendest, aber den Header conio.h nicht mit einbaust.

    Sonst könntest Du einige Blöcke der Übersintlichkeit halber mit

    Code:
    ///////////////////////////////////////////////


    abtrennen und
    Variablen untereinander deklarieren, mit jeweiligen Hinweisen zur Funktion:

    Code: double a,    //Koeffizient des quadr. Teils
              b,    // Koeffizient des linearen Teils
               c,   // Ordinaten-Abschnitt
               x1,  // erste Gleichungs-Lösung
               x2,  // zweite Gleichungslösung
               imag, //imaginäranteil
               reel;  // Realanteil

    Ich würde außerdem jeder Variablen schon bei der Deklaration den Wert 0 zuweisen:

    Code: double a = 0, //.....
              b = 0, //.....
    (...)


    Sonst gibt es noch einige Compilermeldungen bei mir:

    Deinen Character schleife2 nur in einfachen Hochkommas definieren!
    Auch am Ende Deiner Schleife:

    Code: if (schleife2=='j')

    Sonst ist Dein Programm ja mit allen exceptions gut ausgearbeitet! (Bis auf das, dass es nicht gerade protabel ist :-) )

    Daniel



    Re: Berechnung einer quadratischen Funktion.

    DrPhil_Guth - 09.11.2007, 22:12


    Hi!
    Also zwei kleine Anmerkungen:

    1. Bitte nicht fflush(stdin) verwenden. fflush ist nur für ausgabeströme. Verhalten für eingabeströme ist UNDEFINIERT!!!
    Ersatz und weitere infos hier: FAQ Frage 8

    2. Kimi hat folgendes geschrieben: printf("\n Die Gleichung ist tats\228chlich eine quadratische reell\228sbare Gleichung, Gl\252ckwunsch :-)");

    Sonderzeichen gehören nicht in einen ASCII String!!! deine Escape sequenzen mögen auf einem System funktionieren, aber das ist nicht der sinn von C. Ich denke es tut nicht weh, wenn du statt "ü" einfach "ue" oder für "ä" einfach "ae" verwendest.

    Wenn du glaubst du brauchst WIRKLICH einen anderen zeichensatz, dann solltest du mal nach dem Begriff "widechar character" googeln.


    Ansonsten nichts auszusetzen, sieht alles eigentlich ziemlich gut aus.



    Re: Berechnung einer quadratischen Funktion.

    Kimi - 11.11.2007, 02:30


    Hi, ich habe ne menge gefunden bzw. habe das nochmal überarbeitet z.b. ist der fall nicht gegeben das wenn a = 0 ist und auch b = 0.


    Diesen fall habe ich mit eingebaut und dann noch andere unter anderem die schleife habe ich einfacher gestaltet.

    Ach ja mein professor will das so abgenommen haben also die umlaute will er mit ascii zeichen haben also \228 z.b. und habe da falsche zahlen verwendet aber das habe ich ja abegeändert werde im laufe des tages das fertige programm mal posten.

    ansonste bin ich noch ein totaler anfänger um das andere zu verstehen soll heißen ich verstehe z.b nicht warum man die variable mit ner 0 zuweißen soll.

    Kann es sein das es damit zu tuhen hat das somit verhindert wird das z.b. ein buchstabe eingegeben wird.

    Danke.

    Ich muss mir das mal mit fflush.stdin nochmals durchlesen denn da habe das wohl falsch verstanden ansonsten besten dank für eure hilfe. das bringt mich echt weiter.

    Danke!



    Re: Berechnung einer quadratischen Funktion.

    detewe89 - 11.11.2007, 10:38


    Also diese Sache, alle Variablen gleich null zu setzen, ist teilweise auch übertrieben, aber doch viel sicherer.

    Wenn Du folgendes Programm einmal bei Dir kompilierst und ausführst:

    Code: /*wrong_initialization.c*/

    #include <stdio.h>

    int main(void)
    {
       int a; double b;
       
       printf("%d %lf\n", a, b);
       
       return 0;
    }

    dann wirst Du sehen, dass der Compiler nicht allen Variaben die Werte 0 zuweist, sondern eher irgendwelche Zufallswerte.
    Damit dies dann nicht mitten im Programm passiert, wo Du es vllt. erst recht spät merkst, kann dies fatal werden, daher zur Sicherheit einfach alles von Anfang an null-initialisieren.


    Daniel



    Re: Berechnung einer quadratischen Funktion.

    exbs - 11.11.2007, 16:07


    Die Variablen mit 0 zu initialisieren ist nicht unbedingt notwendig, wenn du ihr danach einen Wert zuweist, dann wird, was auch immer drauf war, der Wert ja sowieso überschrieben!



    Re: Berechnung einer quadratischen Funktion.

    Dirty Oerty - 11.11.2007, 17:06


    Was passiert aber eigentlich in dem Fall?

    Code: int Test;
    //...

    Test *= 3;
    Test += 10;


    Was steht dann in Test?
    Richtigerweise sollte ja 10 dann drinne stehen....

    MfG
    Daniel



    Re: Berechnung einer quadratischen Funktion.

    exbs - 11.11.2007, 17:11


    Undefiniert denke ich mal! Weiß wer, wovon es abhängt, welchen Wert eine Variable nach der Deklaration, aber vor der Initialisierung hat? Macht das der Compiler?



    Re: Berechnung einer quadratischen Funktion.

    wirthi - 11.11.2007, 19:47


    Das ist völlig klar: undefiniert. Aber natürlich heißt das, dass ein konkreter Wert drinnen steht.

    Die Zeile "int Test;" reserviert Speicher; was dort drinnen steht wird behalten, repräsentiert also irgendeine Zahl. Diese wird nun mit drei multipliziert, anschließend 10 dazu gezählt. Das steht dann in der Variablen.



    Re: Berechnung einer quadratischen Funktion.

    DrPhil_Guth - 11.11.2007, 20:53


    exbs hat folgendes geschrieben: Undefiniert denke ich mal! Weiß wer, wovon es abhängt, welchen Wert eine Variable nach der Deklaration, aber vor der Initialisierung hat? Macht das der Compiler?

    *Klugscheisserbrille_aufsetz*

    Eine lokale variable wird auf dem Stack gespeichert. "speicher reservieren" bedeutet nichts anderes, als die Spitze des stacks um diese größe anzuheben (eigentlich zu verkleinern...)
    Nun, das was vorher auf dem Stack steht hängt hauptsächlich davon ab, welche funktion vor der jetzigen aufgerufen wurde.
    Zweifelsfrei steht fest, dass wenn vorher eine funktion aufgerufen wurde, dass die wahrscheinlichkeit dass irgend etwas "sinnvolles" darin steht sehr gering ist.

    *Klugscheisserbrille_absetz*

    Kurz um: es ist wirklich vollkommen _undefiniert_ was in einer nicht initialisierten variable steht.

    Es kann allerdings sein, dass der Compiler bzw der "magische Code, der ein Programm aufruft" den speicher mit bestimmten werten initialisiert. Darüber weiß ich allerdings nichts ausser dass man sich nicht darauf verlassen darf.

    ps.:

    Dirty Oerty hat folgendes geschrieben: Was passiert aber eigentlich in dem Fall?

    Code: int Test;
    //...

    Test *= 3;
    Test += 10;


    Was steht dann in Test?
    Richtigerweise sollte ja 10 dann drinne stehen....

    MfG
    Daniel

    Das sollte in einem Compilerfehler resultieren. Wenn nicht, dann sollte zumindest eine Warnung ausgegeben werden.

    mfg, DrPhil_Guth



    Re: Berechnung einer quadratischen Funktion.

    wirthi - 11.11.2007, 21:01


    Warum Compilerfehler? Schaut für mich gültig aus ..



    Re: Berechnung einer quadratischen Funktion.

    DrPhil_Guth - 11.11.2007, 21:15


    wenn du der variablen danach keinen wert zuweist sollte das einen compilerfehler oder warnung ergeben. Versuchs doch mal!



    Re: Berechnung einer quadratischen Funktion.

    Dirty Oerty - 11.11.2007, 22:45


    Klar gibt das ne Warnung aus.

    Aber das Phänomen könnte man gut als einfachen Zufallsgenerator benutzen^^

    MfG
    Daniel



    Re: Berechnung einer quadratischen Funktion.

    exbs - 11.11.2007, 23:02


    DrPhil_Guth hat folgendes geschrieben: *Klugscheisserbrille_aufsetz*

    Eine lokale variable wird auf dem Stack gespeichert. "speicher reservieren" bedeutet nichts anderes, als die Spitze des stacks um diese größe anzuheben (eigentlich zu verkleinern...)
    Nun, das was vorher auf dem Stack steht hängt hauptsächlich davon ab, welche funktion vor der jetzigen aufgerufen wurde.
    Zweifelsfrei steht fest, dass wenn vorher eine funktion aufgerufen wurde, dass die wahrscheinlichkeit dass irgend etwas "sinnvolles" darin steht sehr gering ist.

    *Klugscheisserbrille_absetz* THX ;) !!



    Re: Berechnung einer quadratischen Funktion.

    wirthi - 12.11.2007, 13:11


    Code: www commenttest # cat comment.c
    #include <stdio.h>

    int main() {
            int Test;
            Test *= 3;
            Test += 10;
            printf("%d\n",Test);
            return 0;
    }
    www commenttest # gcc -o comment comment.c
    www commenttest # ./comment
    667905866
    www commenttest # ./comment
    669331274
    www commenttest # ./comment
    669638474
    www commenttest #
    :-)



    Re: Berechnung einer quadratischen Funktion.

    Kimi - 21.11.2007, 15:07


    Habe das jetzt so gemacht, ist villeicht nicht gerade gut programmiert.

    Code: #include <stdio.h>                                                      // Bibos
    #include <math.h>
    main()
    {
       int en;
       double a, b, c, x1, x2, imag, reel;                                       // Deklarieren
       do{
       printf("Berechnung einer quadratischen Gleichung der Form a*x^2+b*x+c=0\n\n");      // Daten sammeln
       printf("\nBitte den Koeffizienten a eingeben: ");
       scanf("%lf", &a);
       printf("\nBitte den Koeffizienten b eingeben: ");
       scanf("%lf", &b);
       printf("\nBitte den Koeffizienten c eingeben: ");
       scanf("%lf", &c);
       if (a != 0)                                                         // Quad oder Lin?
       {
          if ((b*b) - (4*a*c) > 0)                                                // Real oder Irreal?
          {
             x1 = (-b + sqrt ((b*b) - (4*a*c))  )/(2*a);                                       // Real
             x2 = (-b - sqrt ((b*b) - (4*a*c))  )/(2*a);
             printf("\n Die Gleichung ist tats\228chlich eine quadratische reell\228sbare Gleichung:"); // Ausg Real
             printf("\nx1 = %f", x1);
             printf("\nx2 = %f", x2);
          }
          else
          {
             imag = (sqrt (-b*b+4*a*c)) / 2*a;                                             // Irreal
             reel = -b / 2*a;
             printf("Die Gleichung ist reel nicht l\246sbar. Die Komplexe L\246sung lautet: ");                     // Ausg Irreal
             printf("\nx1 = %lf + %lf * i", reel, imag);
             printf("\nx2 = %lf - %lf * i", reel, imag);
          }
       }
       if(b !=0){printf("Keine L\228sung\n");
       }
          else
          {
          x1 = - (c/b);
          printf("Das war zwar nicht quadratisch ( also linear :-) ), aber egal...\nx = %f", x1);                  // Ausgabe Linear
       }
       printf("\n\nM\246chten Sie noch eine Berechnung machen? Wenn ja dann dr201cken Sie die 2:\n");
       scanf("%d", &en);
       }while(en!=2);
    }   

       return 0;
    }



    Re: Berechnung einer quadratischen Funktion.

    detewe89 - 21.11.2007, 18:31


    Ja, das sieht doch echt schon gut aus, übersichtluch etc... :-)

    Darf man denn fragen, was Du wo studierst? Wir hatten grade heute Unitag und ich glaube ich werd später Softwaretechnik studieren, deshalb wären Meinungen von allen Seiten und überall echt spitze!

    Gruß
    Daniel



    Re: Berechnung einer quadratischen Funktion.

    Kimi - 21.11.2007, 18:48


    Hmm na klar kannste mich ruhig fragen aber übersichtlich ich sage dir ich bin noch brutaler anfänger also bei der aufgabe geht es aber wenn ich dann das harmonische mittelwert berechnen muss was auch in diesem forum ist na dann puhh.

    Bist du im icq vertreten.



    Re: Berechnung einer quadratischen Funktion.

    detewe89 - 21.11.2007, 19:36


    Ne leider hab ich kein ICQ, aber wir können gern mal per Mail kommunizieren. Meine Mail-Adresse steht ja in meinem Profil, kwürde mich über eine Nachricht freuen :-)

    Daniel



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    @Walgo - gepostet von Xin am Samstag 21.07.2007
    Units - gepostet von C+++ am Montag 29.01.2007
    Bitte umhilfe! - gepostet von lFreshManl am Freitag 29.12.2006
    problem bei Hello world - gepostet von computermaus88 am Sonntag 11.11.2007
    Monstersgame-Account abzugeben - gepostet von vpascal am Sonntag 02.09.2007
    Moderator - gepostet von matze(2) am Montag 21.08.2006
    registry - gepostet von Moritz am Sonntag 18.11.2007



    Ähnliche Beiträge wie "Berechnung einer quadratischen Funktion."

    Regeln zum schreiben einer Bewerbung - mitsurugi (Sonntag 09.01.2005)
    wie wäre es mit einer Lyricssektion? - Tahu (Sonntag 18.09.2005)
    Einweisung & Anleitung zur Funktion des abteils - Logro (Montag 26.03.2007)
    ja hier is noch einer ;o) - missendless (Montag 01.05.2006)
    Da schau mal einer an!!!! - [5Köln80]Cäp (Dienstag 04.04.2006)
    Brief einer Tochter - Frieslaender (Freitag 10.11.2006)
    In der naehe einer Post??? - Jasmin (Dienstag 07.03.2006)
    einer von den die nie genug bekommen - mathias (Sonntag 01.04.2007)
    SEGEN ÜBER EINER FEHLGEBURT - cherryk78 (Mittwoch 09.11.2005)
    Einer der schönsten Hadithe von all den schönen Hadithen - Abu Soufian As Salafee (Donnerstag 29.12.2005)