sqrt



  • 1ntrud0r schrieb:

    btw zur Programmlogik ... Man kann durchaus Wurzeln aus negativen Zahlen ziehen.

    Ja, aber nur in C und nicht in R. Und für ersteres ist double wohl eher ungeeignet.



  • @Andreas2: Was soll das? Wieso zeigst du die brutealen C-Casts. Der static_cast ist vollkommen ausreichend.

    Nochwas prinzipielles: Heutzutage werden Variablen immer so spät wie möglich definiert.

    #include <iostream>  
    #include <cmath>  
    
    using namespace std;  
    
    int main()  
    {  
    
      cout << "Programm zur Wurzelberechnung\n\n";  // hier muss noch nicht geflsuht werden
    
      double eingabe;
      cout << "Geben Sie bitte eine Zahl ein: ";  
      cin >> eingabe;  
    
      //Es erfolgt eine Umwandlung in eine GZ(int) damit nicht mit einer GKZ gerechnet wird 
      eingabe = floor(eingabe); // floor passt irgendwie besser
      if (eingabe >= 0)  
      {  
        double wurzel = sqrt(eingabe);  
          // und jetzt merkst du auf einmal, dass die Variable überflüssig wird
    
        cout << "Wurzel von " << eingabe << " = "  
             << wurzel << endl;  
      }  
      else  
      {  
        cout << "Wurzel negativer Zahlen kann nicht "  
                "berechnet werden." << endl;  
      }  
      cout << '\n;  
      cout << "Programm wird beendet." << endl;  
      return  0;  
    }
    

    std::floor runded den wert ab, was hier wohl das passenste ist.

    Das mit den Namensräumen ist eigentlich auch recht einfach. Du kannst einen namensraum aufmachen, der dann mehrere Klasse und Funktionen gruppiert

    namespace Foo {
       void bar ()
       { 
          ... 
       }
    
       class Quer {
          ...
       };
    }
    

    Später sprichst du die Bestandteile dann per Namensraum::Element an, also hier Foo::bar() oder Foo::Quer. Du kannst aber auch ein using verwenden, um den ganzen Namensraum oder auch nur Teile davon im aktuellen Scope bekannt zu machen. Mit using namespace std; machst du den Namensraum std im globalen Scope bekannt. Alle Elemente der Standardbibliothek sind in diesem Namensraum definiert. Wenn du das using weglässt musst du std::cout, ... verwenden.

    Wenn du den MSVC verwendest sind nur die neueren Teile im Namensraum std und die von C stammenden nicht. Das ist manchaml ganzschön lästig.



  • Helium schrieb:

    @Andreas2: Was soll das? Wieso zeigst du die brutealen C-Casts. Der static_cast ist vollkommen ausreichend.

    Brutal? In diesem Sinne ist der gleichbedeutend mit static_cast, man übersieht ihn nur leichter.



  • Viel besser waere eine while-Schleife 😉 !!

    mfg Gaunlet



  • Brutal? In diesem Sinne ist der gleichbedeutend mit static_cast, man übersieht ihn nur leichter.

    Wie er hier gebaucht wird ist doch egal. Er ist und bleibt brutal. Ich kann ein Gewehr auch benutzen, um meine Wäsche daran aufzuhängen, dennnoch bleibt es eine Waffe.

    Viel besser waere eine while-Schleife !!

    Und noch Besser würde mir jetzt ein Wiener Schnitzel gefallen.



  • Helium schrieb:

    Ich kann ein Gewehr auch benutzen, um meine Wäsche daran aufzuhängen...

    Ui wie brutal 😃 . Ich meinte auch nur, dass er zwar Verwirrung stiftet aber sich an dem Kompilat nichts ändert. Brutal ist das falsche Wort. Hinterlistig wäre besser.



  • Ich finde ihn sehr brutal. Er castet einfach wild durch die gegend ohne Rücksicht auf Verluste 🙂



  • Naja, C++ hat ihn immerhin ein wenig gedrosselt. 😉



  • Wen eine mögliche warnung d. compilers nicht stört, der kann eingabe auch als
    int deklarieren, was imho die absicht d. programmiererIn besser ausdrückt, auf floor verzichten und folgendes tun:

    int eingabe;
    cin >> eingabe;
    
    double ergebnis = sqrt(double(eingabe));
    


  • Nachdem das geklärt ist:

    Wie soll man eine Wurzel aus einem negativen Radikanden ziehen?

    MfG MAV



  • Mis2com schrieb:

    Wie soll man eine Wurzel aus einem negativen Radikanden ziehen?

    Hier eine kleine Einführung:
    http://www.uni-ulm.de/~s_fwinkl/komplex/komplex.html



  • Mis2com schrieb:

    Wie soll man eine Wurzel aus einem negativen Radikanden ziehen?

    Das geht wie gesagt nur in C (nicht zu verwechseln mit der Programmiersprache 😉 ).



  • Schreib doch |C, wie es die meisten hier im Forum tun. Dann ist es eindeutiger.



  • Sieht aber kacke aus 😉 . Na gut, wenn es der Übersicht dient.



  • Wogfür steht C?

    Complex?



  • Ja.


Anmelden zum Antworten