Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Die meistgestellten Fragen  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9
  Zeige alle Beiträge auf einer Seite
Thema geschlossen
Autor Nachricht
asdasdasd
Unregistrierter




Beitrag asdasdasd Unregistrierter 17:19:22 29.05.2008   Titel:              Zitieren

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int cgls ( Sparse_Matrix &A , const Vektor &b , Vektor &x0 , int k_max , double &eps )
{
    if(A.Zeilen() < A.Spalten())
    {
        cerr << "Ungültige Matrix für cgls, Zeilen < Spalten" << endl;
        return 0;
    }
    Vektor r(b - A*x);
    Vektor s(r*A);
    Vektor d(s);
    double alpha, beta, norm_s;
    int k = 0;
    while(++k < k_max && s.Norm2() < eps)
    {
        alpha =  s.Norm2()*s.Norm2()/((A*d).Norm2()*(A*d).Norm2());
        x0 += alpha * d;
        r -= alpha * (A*d);
        norm_s = s.Norm2();
        s = r*A;
        beta = s.Norm2()*s.Norm2()/(norm_s*norm_s)
        d  = s + beta*d;
    }
    eps = s.Norm2();
    return k;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int cgls ( Sparse_Matrix &A , const Vektor &b , Vektor &x0 , int k_max , double &eps )
{
if(A.Zeilen() < A.Spalten())
{
cerr << "Ungültige Matrix für cgls, Zeilen < Spalten" << endl;
return 0;
}
Vektor r(b - A*x);
Vektor s(r*A);
Vektor d(s);
double alpha, beta, norm_s;
int k = 0;
while(++k < k_max && s.Norm2() < eps)
{
alpha = s.Norm2()*s.Norm2()/((A*d).Norm2()*(A*d).Norm2());
x0 += alpha * d;
r -= alpha * (A*d);
norm_s = s.Norm2();
s = r*A;
beta = s.Norm2()*s.Norm2()/(norm_s*norm_s)
d = s + beta*d;
}
eps = s.Norm2();
return k;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int cgls ( Sparse_Matrix &A , const Vektor &b , Vektor &x0 , int k_max , double &eps )
{
    if(A.Zeilen() < A.Spalten())
    {
        cerr << "Ungültige Matrix für cgls, Zeilen < Spalten" << endl;
        return 0;
    }
    Vektor r(b - A*x);
    Vektor s(r*A);
    Vektor d(s);
    double alpha, beta, norm_s;
    int k = 0;
    while(++k < k_max && s.Norm2() < eps)
    {
        alpha =  s.Norm2()*s.Norm2()/((A*d).Norm2()*(A*d).Norm2());
        x0 += alpha * d;
        r -= alpha * (A*d);
        norm_s = s.Norm2();
        s = r*A;
        beta = s.Norm2()*s.Norm2()/(norm_s*norm_s)
        d  = s + beta*d;
    }
    eps = s.Norm2();
    return k;
}


// Edit: Code tags hinzugefügt


Zuletzt bearbeitet von evilissimo am 15:32:48 27.09.2008, insgesamt 1-mal bearbeitet
Tobi3000
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.07.2006
Beiträge: 209
Beitrag Tobi3000 Mitglied 14:28:18 27.09.2008   Titel:              Zitieren

Warum werden bei manchen Funktionsaufrufen '::' benutzt und an anderen stellen benutzt man '.' oder '->'?
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 2692
Beitrag Swordfish Mitglied 15:23:03 27.09.2008   Titel:              Zitieren

Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.

Bei statischen Methoden musst Du nur den Scope angeben:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
class foo_t {

    public:
        static void bar( ) { };
};

int main( ) {

    foo_t::bar( );
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
class foo_t {

public:
static void bar( ) { };
};

int main( ) {

foo_t::bar( );
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
class foo_t {

    public:
        static void bar( ) { };
};

int main( ) {

    foo_t::bar( );
}

für andere benötigst du ein Objekt:


C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
class foo_t {

    public:
        void bar( ) { };
};

int main( ) {

    foo_t a_foo;

    a_foo.bar( );
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
class foo_t {

public:
void bar( ) { };
};

int main( ) {

foo_t a_foo;

a_foo.bar( );
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
class foo_t {

    public:
        void bar( ) { };
};

int main( ) {

    foo_t a_foo;

    a_foo.bar( );
}

cheers, Swordfish

_________________
Thou shall not fflush stdin!
Thou shall not cast void pointers! And therefore
Thou shall not cast the result of malloc!
camper
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 4974
Beitrag camper Mitglied 13:21:53 29.09.2008   Titel:              Zitieren

Swordfish schrieb:
Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.
Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.
asc
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.01.2007
Beiträge: 5050
Beitrag asc Mitglied 13:56:24 29.09.2008   Titel:              Zitieren

camper schrieb:
Swordfish schrieb:
Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.
Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.


Auch wenn du recht hast das es keine standisierte Bedeutung hat, ist diese Verwendung von Funktion/Methode doch sehr verbreitet. Also als falsch würde ich die Aussage von Swordfish auch nicht hinstellen, auch wenn es nicht überall so verwendet wird (Wobei ich es aus den bisherigen Firmen auch nur in dieser Art kenne, und es auch in OO-Büchern eine recht verbreitete Bezeichnung ist [gehe hier mal von ca. 80%+ aus]).

cu André

_________________
in theory there's no difference between theory and practice. in practice there is. (yogi berra)

In der Theorie gibt es kein Unterschied zwischen Theorie und Praxis. In der Praxis sehr wohl.
camper
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 4974
Beitrag camper Mitglied 17:50:06 29.09.2008   Titel:              Zitieren

asc schrieb:
camper schrieb:
Swordfish schrieb:
Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.
Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.


Auch wenn du recht hast das es keine standisierte Bedeutung hat, ist diese Verwendung von Funktion/Methode doch sehr verbreitet. Also als falsch würde ich die Aussage von Swordfish auch nicht hinstellen, auch wenn es nicht überall so verwendet wird (Wobei ich es aus den bisherigen Firmen auch nur in dieser Art kenne, und es auch in OO-Büchern eine recht verbreitete Bezeichnung ist [gehe hier mal von ca. 80%+ aus]).

cu André
Die Wahrheit oder Unwahrheit einer Behauptung ist nicht davon abhängig, wieviele Personen diese verbreiten (dass ich das überhaupt sagen muss, betrachte ich als Zumutung). In C++ ist jeder Methodenaufruf (egal, welche übliche Verwendung wir nutzen) ein Funktionsaufruf, weil jede Methode eine Funktion ist. Mithin ist Swordfishs Aussage falsch, ohne wenn und aber. Es spielt auch keine Rolle, wie verständlich es ist, das dieser Fehler gemacht wurde - das kann schon gar kein Kriterium sein in einem Thread wie diesem, der immer wieder gelesen werden wird.
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 2692
Beitrag Swordfish Mitglied 17:26:52 30.09.2008   Titel:              Zitieren

Sorry. Ich meinte den aus der OOP - als Konzept - bekannten Begriff der Methode ... nicht wirklich passend auf die gestellte Frage hin. :o)

Natürlich ist es - auf C++ bezogen - eine Memberfunktion.

cheers, Swordfish

_________________
Thou shall not fflush stdin!
Thou shall not cast void pointers! And therefore
Thou shall not cast the result of malloc!


Zuletzt bearbeitet von Swordfish am 17:28:16 30.09.2008, insgesamt 1-mal bearbeitet
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Die meistgestellten Fragen  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9
Thema geschlossen

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.