Fragen zur Funktion sqrt



  • ich meine nicht mit sqrt() ausgeben....
    aber ich habe bis jetzt nur gesehen das man mit der Funktion sqrt() immer nur eine Zahl berechnen kann...

    und ich würde gerne wissen ob es geht das ich alle Quadratzahlen von 1 bis 144 ausgeben kann auf einmal?



  • mit for ?

    for( double x=1; x<=144; x+=1.0 ) {
            cout << "sqrt(" << x << ")= " << sqrt(x) << endl;
        }
    


  • whaaatz schrieb:

    und ich würde gerne wissen ob es geht das ich alle Quadratzahlen von 1 bis 144 ausgeben kann auf einmal?

    Nein, auf einmal garantiert nicht, nicht mit nur einem Aufruf.



  • sjdlcuskajdnca schrieb:

    mit for ?

    for( double x=1; x<=144; x+=1.0 ) {
            cout << "sqrt(" << x << ")= " << sqrt(x) << endl;
        }
    

    Das hatte ich auch schon... aber meine vorstellung ist das ich als ausgabe 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, dies habe...

    aber ich denke es geht gar nicht :S

    Danke das du dir zeit genommen hast



  • whaaatz schrieb:

    ich meine nicht mit sqrt() ausgeben....
    aber ich habe bis jetzt nur gesehen das man mit der Funktion sqrt() immer nur eine Zahl berechnen kann...

    und ich würde gerne wissen ob es geht das ich alle Quadratzahlen von 1 bis 144 ausgeben kann auf einmal?

    Also mit sqrt kannst Du gar nichts ausgeben. Und Quadratzahlen lassen sich mit sqrt erst recht nicht berechnen. Eher doch die Wurzel. Und zwar immer nur eine auf einmal.


  • Administrator

    @whaaatz,
    Und wieso der Umweg über sqrt , also der Quadratwurzel?

    for(int i = 0; i < 13; ++i)
    {
      std::cout << (i * i) << ' ';
    }
    
    std::cout.flush();
    

    Grüssli


  • Mod

    Na, wenn's dich so freut, eine Funktion mit beliebiger Parameterzahl zu haben:

    #include<iostream>
    #include<cstdarg>
    
    void my_sqr(int n, ...)   // Erster Parameter: Anzahl der zu quadrierenden Zahlen
    						  // Danach die zu quadrierenden Zahlen
    {
       int t;
       va_list ap;
       va_start(ap,n);
       for(int i=0;i < n; i++)
       {
         t=va_arg(ap,int);
         std::cout<< t*t;
    	 if (i<(n-1)) std::cout << ", ";
       }
       std::cout << std::endl;
       va_end(ap);
    }
    
    int main(){
    	my_sqr(1,3);                // 9
    	my_sqr(5, 1, 2, 3, 4, 5);   // 1, 4, 9, 16, 25
    }
    


  • whaaatz schrieb:

    meine vorstellung ist das ich als ausgabe 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, dies habe...

    aber ich denke es geht gar nicht

    und was ist mit Deinem letzten Thread hier ??



  • SeppJ schrieb:

    Na, wenn's dich so freut, eine Funktion mit beliebiger Parameterzahl zu haben:

    void my_sqr(int n, ...)   // Erster Parameter: Anzahl der zu quadrierenden Zahlen
    						  // Danach die zu quadrierenden Zahlen
    

    Also wenn schon, dann schon den C++-Weg - oder!?:

    #include <algorithm>
    #include <iostream>
    #include <iterator>
    
    struct QuadratIterator : std::iterator< std::input_iterator_tag, int >
    {
        explicit QuadratIterator( int root = 1 ) : m_val(root*root), m_delta(2*root+1) {}
        int operator*() const { return m_val; }
        QuadratIterator& operator++()
        {
            m_val += m_delta;
            m_delta += 2;
            return *this;
        }
        bool operator!=( const QuadratIterator& b ) const
        {
            return m_val != b.m_val;
        }
    private:
        int m_val, m_delta;
    };
    
    int main()
    {
        using namespace std;
        // gibt: 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, aus
        copy( QuadratIterator(), QuadratIterator(13), ostream_iterator< int >( cout, ", " ) );
        cout << endl;
        return 0;
    }
    

  • Mod

    Werner_logoff schrieb:

    Also wenn schon, dann schon den C++-Weg - oder!?:

    Ja, ich hätte ja auch die C++ Variante genommen, aber der Threadersteller hat ja ausdrücklich nach variabler Parameterzahl gefragt und moniert, dass das nicht ginge. Das konnte ich so nicht stehen lassen.

    Aber noch eine allgemeine Warnung an alle die mein Programmbeispiel gelesen haben: Funktionen mit variabler Parameterzahl sind fehleranfällig und können in C++ leicht durch bessere Sprachmittel ersetzt werden. Siehe Werner_logoffs Beitrag für ein Beispiel dazu.



  • Werner_logoff schrieb:

    Also wenn schon, dann schon den C++-Weg - oder!?:

    Ich halte das zwar eigentlich für einen schlechten Witz, aber leider weiß ich, dass du das ernst meinst.


Anmelden zum Antworten