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 :: Die Artikel ::  Grundlegende Algorithmen in der Bildverarbeitung  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
b7f7
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.04.2003
Beiträge: 538
Beitrag b7f7 Mitglied 02:16:21 16.02.2006   Titel:              Zitieren

bei grössen daten ist es besser den median in dieser Art zu rechnen
damit commt man in logN zum Ziel
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
template <typename T>
struct divider
{
  divider(const T&o):val(o){}
  bool operator()(const T&o) {return o<val;}
  T val;
};

template <typename T,typename RandItr>
RandItr median(RandItr begin, RandItr end)[cpp]
{
  while(begin!=end)
  {
    divider<T> Pred((*(begin) + *(end-1))/2 );
    RandItr pos=std::partition(begin,end,Pred);
    size_t distB=std::distance(begin,pos);
    size_t distE=std::distance(pos,end);
    if(distB==0)            return begin;
    else if(distB<distE)    begin=pos;
    else                    end=pos;

  }
  return begin;
}
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
template <typename T>
struct divider
{
divider(const T&o):val(o){}
bool operator()(const T&o) {return o<val;}
T val;
};

template <typename T,typename RandItr>
RandItr median(RandItr begin, RandItr end)[cpp]
{
while(begin!=end)
{
divider<T> Pred((*(begin) + *(end-1))/2 );
RandItr pos=std::partition(begin,end,Pred);
size_t distB=std::distance(begin,pos);
size_t distE=std::distance(pos,end);
if(distB==0) return begin;
else if(distB<distE) begin=pos;
else end=pos;

}
return begin;
}
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
template <typename T>
struct divider
{
  divider(const T&o):val(o){}
  bool operator()(const T&o) {return o<val;}
  T val;
};

template <typename T,typename RandItr>
RandItr median(RandItr begin, RandItr end)[cpp]
{
  while(begin!=end)
  {
    divider<T> Pred((*(begin) + *(end-1))/2 );
    RandItr pos=std::partition(begin,end,Pred);
    size_t distB=std::distance(begin,pos);
    size_t distE=std::distance(pos,end);
    if(distB==0)            return begin;
    else if(distB<distE)    begin=pos;
    else                    end=pos;

  }
  return begin;
}

das hat sicher noch paar macken aber dafür is mir grad zu früh
kenner der linuxsxsteme
Unregistrierter




Beitrag kenner der linuxsxsteme Unregistrierter 16:44:16 19.02.2006   Titel:              Zitieren

Wie führt man das unter linux aus?

g++ dateiname.cpp -o dateiname
./dateiname

funktioniert nicht,

Ausserdem würde es mich interessieren, was für ein datei ich jetzt als erstes aus deinem projekt compilern soll ... da sind nämlich mehr als eine .cpp datei ;)
Korbinian
Moderator

Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
Beitrag Korbinian Moderator 17:43:25 19.02.2006   Titel:              Zitieren

@b7f7: keine schlechte idee beim median gleich beim einfügen zu sortieren, das spart sicher zeit!

@kenner: nuja was hast du denn alles runtergeladen? das von dir genannte prinzip sollte es eigentlich schon tun. bei dem beispielprojekt von mir war allerdings auch ein makefile dabei :)

_________________
Frage an mich? korbinian at c-plusplus dot de
kenner der linuxsxsteme
Unregistrierter




Beitrag kenner der linuxsxsteme Unregistrierter 18:00:32 19.02.2006   Titel:              Zitieren

das : http://www.korbinian-riedhammer.de/misc/ip-suite.tar.bz2

was kann man den mit dem makefile machen?
wie funktioniert das ... ich habe mir sowas nochnie gearbeitet
Korbinian
Moderator

Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
Beitrag Korbinian Moderator 20:48:46 19.02.2006   Titel:              Zitieren

wenn du mehr über make wissen möchtest, empfehle ich dir ein make tutorial, leicht über google erhältlich (im linux forum hier gibts auch eins, glaub ich). generell kannst du mit einem schlichten 'make' alles bauen, die binaries findest du dann unter bin/ oder lib/ steht glaub ich auch in der readme drin.

_________________
Frage an mich? korbinian at c-plusplus dot de
zafiro
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2006
Beiträge: 85
Beitrag zafiro Mitglied 15:52:53 20.02.2006   Titel:              Zitieren

Zitat:
make -f Makefile

= make das Makefile

Zitat:
bin/test-rotation sample.pgm out.pgm

= out.pgm is das bild was "raus kommt"

PS: natürlich musst du alles in die Konsole eingeben ;)
zafiro
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2006
Beiträge: 85
Beitrag zafiro Mitglied 17:13:25 20.02.2006   Titel:              Zitieren

@Korbinian: kannst du mal bitte ein vernünftiges makefile erstellen?
Korbinian
Moderator

Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
Beitrag Korbinian Moderator 17:29:10 20.02.2006   Titel:              Zitieren

was passt dir an diesem nich?

_________________
Frage an mich? korbinian at c-plusplus dot de
zafiro
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2006
Beiträge: 85
Beitrag zafiro Mitglied 18:01:08 20.02.2006   Titel:              Zitieren

der konventionen ignorierte passte einem nicht
konventionon = benennung das targets, allgemein zuviel text, kein "start"-target, ignore von CPPFLAGS

Kannst das auch alles vergessen ;)


Zuletzt bearbeitet von zafiro am 18:02:51 20.02.2006, insgesamt 1-mal bearbeitet
Korbinian
Moderator

Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
Beitrag Korbinian Moderator 21:18:34 20.02.2006   Titel:              Zitieren

deine konventionen sind mir neu, ein start oder main mach ich nur, wenn es sich um ein programm handelt. das ist nur eine sammlung von klassen und funktionen, jemand der das benutzt sucht gezielt einzelne sachen. genauso die cppflags, drauf geschissen, ich will _meine_ compilierregeln für das projekt, nicht die standardmaessig eingestellten (auch hier wieder: es handelt sich nicht um ein auslieferbares programm/lib, sondern um ein spielzeug zum basteln).

aber es hindert dich niemand daran hier ein makefile reinzustellen. aber vielleicht schreibst du erst den datenbankartikel fertig...

_________________
Frage an mich? korbinian at c-plusplus dot de
C/C++ Forum :: Die Artikel ::  Grundlegende Algorithmen in der Bildverarbeitung  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine 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.