Suche simple Grafik- u. Sound-API.
-
1. der code ist unleserlich eingerückt.
2. in zeile 7 fehlt ein "=" und ein "<" ist zuviel. (letzteres verurteile ich nicht, ist offensichtlich ein flüchtigkeitsfehler)
3. dein algorithmus funktioniert nur für mengen die aus den vier buchstaben 'T', 'a', 's', 'e' bestehen, nicht für beliebige zeichen.
4. einen algorithmus sollte man nicht als teil eines programms programmieren sondern z.b. als funktion.
5. dein bool-flag ist komplett nutzlos, da tut es auch ein break;.
6. ich durchblicke dein system mit den ganzen hilfsvariablen nicht. die sind mit sicherheit unnötig und höchstwahrscheinlich falsch.
7. der code kompiliert bei mir nicht weil irgendwo ein } fehlt. (das hat man davon wenn man so scheusslich einrückt)
8. die vergleiche wie du sie in zeile 43 machst, machen höchstwahrscheinlich etwas anderes als du denkst.
9. deine variable "haeufigstes" initialisierst du nicht obwohl du sie danach inkrementierst. (wieso eigentlich postinkrement obwohl du ein präinkrement willst?)
10. "return 0;" ist in der main-funktion auch implizit, daher unnötig.
edit: das ist bestimmt noch nicht alles, aber das was mir auf die schnelle auffällt.
edit 2:
hier mal eine safequote vom vierten edit, leider hat er inzwischen ein paar fehler rauskorrigiert (natürlich heimlich so dass es wirkt, als würde ich halluzinieren):sC++k schrieb:
ausnahmesicherheit, leserlichkeit, geschwindigkeit, parallelisierbarkeit. diese vier kannst du nicht alleine durch den algorithmus gewährleisten.
Da hast du sicher Recht. Das ist auch der Grund warum ich in solchen Foren
aktiv bin.ich kann es dir ganz einfach aufzeigen: wie würde in groben zügen eine funktion aussehen, die von einer menge an zeichen das häufigste bestimmt und es (inkl. anzahl) zurückgibt (ausgehend davon, dass es immer eindeutig ist und es nicht zwei häufigste zeichen gibt)?
Das klingt für Aussenstehende wie: "Wo würde ein Hase hingehen, wenn er trotz Karottenhunger keine Sehnsucht verspürt Nahrung in seinen Magen zu lassen, und dabei auch noch schlafwandelt?"
Hier aber der Test meines Könnens(nur 'versucht', war anstrengend, aber gute Übung):
#include <iostream> using namespace std; int main() { //Beispielzeichenmenge char Zeichenmaenge[5] = {'T', 'a', 's', 's' ,'e'}; //Suchalgoritmus (T,a,s,e) short suchhier=0; char lagerhieraus=0; char vergleichdas=0; Zeichenmaenge[suchhier] += vergleichdas; bool obgefunden; while(obgefunden == true) { //T short T_Test=0; if(vergleichdas == 'T') { T_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //a short a_Test=0; if(vergleichdas == 'a') { a_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //s short s_Test=0; if(vergleichdas == 's') { s_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //e short e_Test=0; if(vergleichdas == 'e') { e_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //Häufigkeitsvergleich short T_Test2; if( T_Test > a_Test >= s_Test >= e_Test) {T_Test2++;} short a_Test2; if( a_Test > T_Test >= s_Test >= e_Test) {a_Test2++;} short s_Test2; if( s_Test > a_Test >= s_Test >= e_Test) {s_Test2++;} short e_Test2; if( e_Test > s_Test >= a_Test >= T_Test) {e_Test2++;} //welches nun des häufigste konkret ist short haeufigstes ; short haeufigstesAbfrage=0 ; while(haeufigstesAbfrage == 1) { haeufigstesAbfrage = haeufigstesAbfrage + T_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + a_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + s_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + e_Test2; haeufigstes++; } //Konsolenausgabe cout<< "Das, in dem Wort 'Tasse' am häufigsten vorkommende Zeichen ist:" << Zeichenmaenge[haeufigstes] << endl << "Drücke Enter um das Programm zu beenden" cin.get(); return 0; }
Zuletzt bearbeitet von sC++k am 14:40:33 06.01.2014, insgesamt 4-mal bearbeitet
-
sC++k schrieb:
Hier aber der Test meines Könnens(nur 'versucht', war anstrengend, aber gute Übung):
LOL
-
OK, du bist echt noch nicht weit genug.
Hattest du überhaupt schon Klassen?
So in etwa kann das aussehen*:template <typename Iterator, typename CharT = typename std::remove_reference<decltype(*Iterator())>::type> CharT most_frequent(Iterator begin, Iterator end) { if (begin == end) throw std::logic_error("range empty"); std::unordered_map<CharT, std::size_t> counts; std::for_each(begin, end, [&counts](CharT c){counts[c]++;}); return std::max_element(std::begin(counts), std::end(counts), [](std::pair<CharT, std::size_t> a, std::pair<CharT, std::size_t> b) {return a.second < b.second;})->first; }
* Mal eben auf die Schnelle geschrieben, könnten evtl. Fehler drin sein.
Edit: Heute hab ichs aber mit dem Buchstaben weglassen.
-
sC++k schrieb:
Ich finde es ehrlich gesagt fragwürdig, dass alle hier versuchen mich zu entmutigen, dass ich es lieber aufgeben solle,
obwohl mein Konzept, zumindest für das "Unlimited Detail" schon längst steht, wenn auch noch nicht im Code, größtenteils.
Es ist möglich, Leute. Für diese Angelegenheit brauch' ich im Moment wirklich nur noch eine gute API für Pixel Darstellung u. Sound.
Erspart euch eure Missmutmache. Sorry, es hat keinen Zweck mehr
Alles wird gutDas gefürchtete Autobeispiel: Du kommst hier an, und behauptest, dass du nächstes Jahr mit deinem selbstgebauten Auto bei der Formel 1 vorne mitfahren möchtest und du suchst noch ein gutes Schweißgerät, mit dem du deinen Motor zusammensetzen kannst, denn du kaufst natürlich keinen fertigen Motor, denn dein selbstgebauter ist viel besser. Nebenbei präsentierst du ab und zu Pläne und fertige Prototypen deines Autos, die sehen aber eher so aus. Hinweise, dass das Projekt vielleicht zu ambitioniert wäre oder gar Hinweise, wie man es wenigstens etwas besser machen könnte, werden mit Kommentaren beantwortet in der Art von "was ist ein Lenkrad?" oder "was ist diese Aerodynamik, von der ihr dauernd redet?".
Würdest du das ernst nehmen?
-
Die Autobildchen von Sepp sind immer das Beste
-
Zuletzt bearbeitet von sC++k am 14:40:33 06.01.2014, insgesamt 4-mal bearbeitet
Das liegt daran dass ich immer über Absenden die Vorschau mache.
Das mit dem Autobeispiel könnte zutreffen,
nur das ich normalerweise niemandem erzählen wollte wofür ich die API brauche,
das habt ihr aus mir herausgekitzelt :p
Also gut, genug mit diesem Thread, er quillt ja schon über.
Jetzt weiß ich wenigstens, dass ich da evtl. noch ne Menge zu tun hab.
Danke an euch allen. Man muss sich halt manchmal erst die Hörner abstoßen
bye
ALSO GUT, CLOSED!
-
Meine Empfehlung wäre, dass du dir einfach mal SFML schnappst und ein bisschen mit 2D Grafik spielst und dabei eine C++ Kenntnisse vertiefst. Ich weiß, die Konsole wird schnell langweilig...
-
sC++k schrieb:
Hier aber der Test meines Könnens(nur 'versucht', war anstrengend, aber gute Übung):
#include <iostream> using namespace std; int main() { //Beispielzeichenmenge char Zeichenmaenge[5] = {'T', 'a', 's', 's' ,'e'}; //Suchalgoritmus (T,a,s,e) short suchhier=0; char lagerhieraus=0; char vergleichdas=0; for(x=0; x=6; x++) { Zeichenmaenge[suchhier] += vergleichdas; bool obgefunden; while(obgefunden == true) { //T short T_Test=0; if(vergleichdas == 'T') { T_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //a short a_Test=0; if(vergleichdas == 'a') { a_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //s short s_Test=0; if(vergleichdas == 's') { s_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //e short e_Test=0; if(vergleichdas == 'e') { e_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } } //Häufigkeitsvergleich short T_Test2; if( T_Test > a_Test >= s_Test >= e_Test) {T_Test2++;} short a_Test2; if( a_Test > T_Test >= s_Test >= e_Test) {a_Test2++;} short s_Test2; if( s_Test > a_Test >= s_Test >= e_Test) {s_Test2++;} short e_Test2; if( e_Test > s_Test >= a_Test >= T_Test) {e_Test2++;} //welches nun des häufigste konkret ist short haeufigstes ; short haeufigstesAbfrage=0 ; while(haeufigstesAbfrage == 1) { haeufigstesAbfrage = haeufigstesAbfrage + T_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + a_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + s_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + e_Test2; haeufigstes++; } //Konsolenausgabe cout<< "Das, in dem Wort 'Tasse' am häufigsten vorkommende Zeichen ist:" << Zeichenmaenge[haeufigstes] << endl << "Drücke Enter um das Programm zu beenden" cin.get(); return 0; }
Mein Trolldetektor ist gerade explodiert.
Falls das doch Dein ernst ist, das ist für eine Lernzeit von einem halben Jahr vollkommen unterirdisch. Nicht nur dass der "Algo" kaputt ist, auch einfache Sprachmittel werden falsch angewandt.Bin raus.
-
EDIT: kleiner Edit beim Vorbeischauen
Was man beim nochmal Draufschauen doch nicht alles für Fehler findet.
Lässt sich zwar bei mir immer noch nicht kompileren, weil "angeblich" gewisse Vars nicht deklariert wären u. irgendwas anderes , was ich nicht verstehe, aber diese blöden Fehler, die ich da noch hinterlassen hab, konnt' ich einfach nicht so stehen lassen, sorry!
Aber bleibt trotzdem closed, der Thread hier, also bitte nicht drauf antworten!
Nur für evtl. verspätete Leser
CLOSED*.#include <iostream> using namespace std; int main() { //Beispielzeichenmenge char Zeichenmaenge[5] = {'T', 'a', 's', 's' ,'e'}; //Suchalgoritmus (T,a,s,e) char suchhier=0; char lagerhieraus=0; char vergleichdas=0; char x=0; for(x=0; x==6; x++) { Zeichenmaenge[suchhier] += vergleichdas; bool obgefunden; while(obgefunden == true) { //T char T_Test = 0; if(vergleichdas == 'T') { T_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //a char a_Test = 0; if(vergleichdas == 'a') { a_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //s char s_Test = 0; if(vergleichdas == 's') { s_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //e char e_Test = 0; if(vergleichdas == 'e') { e_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } } //Häufigkeitsvergleich char T_Test2; if( T_Test > a_Test >= s_Test >= e_Test) {T_Test2++;} char a_Test2; if( a_Test > T_Test >= s_Test >= e_Test) {a_Test2++;} char s_Test2; if( s_Test > a_Test >= s_Test >= e_Test) {s_Test2++;} char e_Test2; if( e_Test > s_Test >= a_Test >= T_Test) {e_Test2++;} //welches nun des häufigste konkret ist char haeufigstes ; char haeufigstesAbfrage=0 ; while(haeufigstesAbfrage == 1) { haeufigstesAbfrage = haeufigstesAbfrage + T_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + a_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + s_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + e_Test2; haeufigstes++; } //Konsolenausgabe cout<< "Das, in dem Wort 'Tasse' am häufigsten vorkommende Zeichen ist:" << Zeichenmaenge[haeufigstes] << endl << "Drücke Enter um das Programm zu beenden"; cin.get(); return 0; }
-
sC++k schrieb:
EDIT: kleiner Edit beim Vorbeischauen
Was man beim nochmal Draufschauen doch nicht alles für Fehler findet.
Lässt sich zwar immer noch nicht kompileren, weil "angeblich" gewisse Vars nicht deklariert wären u. irgendwas anderes , was ich nicht verstehe, aber diese blöden Fehler, die ich da noch hinterlassen hab, konnt' ich einfach nicht so stehen lassen, sorry!
Aber bleibt trotzdem closed, der Thread hier, also bitte nicht drauf antworten!
Nur für evtl. verspätete Leser
CLOSED*.#include <iostream> using namespace std; int main() { //Beispielzeichenmenge char Zeichenmaenge[5] = {'T', 'a', 's', 's' ,'e'}; //Suchalgoritmus (T,a,s,e) char suchhier=0; char lagerhieraus=0; char vergleichdas=0; char x=0; for(x=0; x==6; x++) { Zeichenmaenge[suchhier] += vergleichdas; bool obgefunden; while(obgefunden == true) { //T char T_Test = 0; if(vergleichdas == 'T') { T_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //a char a_Test = 0; if(vergleichdas == 'a') { a_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //s char s_Test = 0; if(vergleichdas == 's') { s_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } //e char e_Test = 0; if(vergleichdas == 'e') { e_Test++; obgefunden = true; suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle } } //Häufigkeitsvergleich char T_Test2; if( T_Test > a_Test >= s_Test >= e_Test) {T_Test2++;} char a_Test2; if( a_Test > T_Test >= s_Test >= e_Test) {a_Test2++;} char s_Test2; if( s_Test > a_Test >= s_Test >= e_Test) {s_Test2++;} char e_Test2; if( e_Test > s_Test >= a_Test >= T_Test) {e_Test2++;} //welches nun des häufigste konkret ist char haeufigstes ; char haeufigstesAbfrage=0 ; while(haeufigstesAbfrage == 1) { haeufigstesAbfrage = haeufigstesAbfrage + T_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + a_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + s_Test2; haeufigstes++; haeufigstesAbfrage = haeufigstesAbfrage + e_Test2; haeufigstes++; } //Konsolenausgabe cout<< "Das, in dem Wort 'Tasse' am häufigsten vorkommende Zeichen ist:" << Zeichenmaenge[haeufigstes] << endl << "Drücke Enter um das Programm zu beenden"; cin.get(); return 0; } }
ymmd so hart. Aber so richtig.
Du hast auch mit dem Code hier blöde Fehler hinterlassen die niemand machen würde, der sich auch nur ein wenig mit C++ in der Theorie auskennt.Fazit
Grenzenlose Selbstüberschätzung, absolute Inkompetenz und Sturheit. Ebenfalls vom Dunning-Kruger-Effekt betroffen.
-
Bei aufmerksamen nachdenken über diesen Thread hier u. deren Kommentaren ist mir etwas ganz signifikantes klar geworden, weshalb ich mich nicht scheuen werde es noch hineinzuschreiben, folgendes:
Ein Programmierer der glaubt, dass er irgendetwas von effizienten Algoritmen, Mathematik u. Logik "unbedingt" besser verstehe, nur weil er z.B folgendes weiß:- was Bits u. Bytes sind ,
- wie man "vorgegebende" Funktionen adequad schreibt u. anwendet, man dadurch evtl. auf 2-5 FPS mehr im Endresultat kommt, im Vergleich zu solideren Methoden,ist bei Themen wie bei vorangegangenen, "abschweifenden" höchstwarscheinlich nicht in der Lage um etwas signifikant sinnvolles zu jenem beizutragen,
da er vermutlich nicht über die "entsprechende" logische Intelligenz verfügt.Anmerkung:
Hierzu möchte ich meiner Empörung wegens noch etwas anmerken, unzwar das ich es traurig find',
dass jemand der auch noch so nett ist die Frage nach dem "Warum" dieser Threaderöffnung anzugehen,
obwohl dies eher reine Zeitverschwendung ist, und nach der Äußerung dessen, dass er noch ein blutiger Änfänger in dem Thema wäre, aber zumindest "grob"das Prinzip verstanden habe,
verhätnismäßig "argumentlos" auf's heftigste beschimpft u. verurteilt wird,
als Gegenleistung dessen, dass er immer eine gewisse Höflichkeit aufrecht hielt, ist wirklich ein Armutszeugnis der Menschheit u. sehr ernüchternd.
Ich hab hier nie "deutlich" erwähnt, dass ich mit "absoluter Sicherheit", die Fähigkeit besäße
die folgenden Ideen am gleichen Tag korrekt in den Code zu schreiben, auf meisterhaftem Niveu(da ich ja noch, wie deutlich erwähnt, Anfänger bin).
Ich war von Anfang an selbstkritisch u. empfänglich für Verbesserung, doch statt dessen, dass ich einfach verbessert "wurde" (was sinnvoller wäre),
wurde ich zuhauf als arogant, ignorant u. übermütig beschimpft.
Jeder "entsprechende" kann sich nun angesprochen fühlen, wenn ich sage:
"Ihr solltet euch was schämen!"CLOSED
-
Du hast auch mit dem Code hier blöde Fehler hinterlassen die niemand machen würde, der sich auch nur ein wenig mit C++ in der Theorie auskennt.
Fazit
Grenzenlose Selbstüberschätzung, absolute Inkompetenz und Sturheit. Ebenfalls vom Dunning-Kruger-Effekt betroffen.
Vielleicht solltest du anstatt zu sagen, "dass" ich dumme Fehler gemacht hab, wenigstens "andeuten" "welche", denn dieser "Dunning-Kruger-Effekt" von dem du spricht basiert ja auch auf der Annahme, dass Bildung die beste Medikation dagegen sei, was widerrum darauf hindeutet, dass du einen Grund suchen könntest andere zum Kritisieren warm zu halten um dir dann selbst möglich andauernd als toller vorzukommen. Für mich deutet das viel mehr auf den von dir genannten Effekt hin.
Sorry, musste kurz noch raus!
CLOSED
-
@sC++k
Mach dir doch bitte nichts vor.
Du wirst hier als arrogant etc. bezeichnet, weil du es bist.
Du trittst hier auf wie ein trotziges kleines Kind, und willst ernstgenommen werden. Sorry, aber nein.Geht wieder in' Sandkasten spielen.
-
Vielleicht funktioniert das "CLOSED"-Zauberwort ja erst wenn auch closure erreicht wurde?
-
Ich hab mich nochmal über mein Konzept informiert. Das was ich als Voxel Engine beschrieb ist doch eher als Point Cloud Engine zu verstehen! Sorry, wenn es wegen der falschen Benennung Verwirrung gestiftet hat.
CLOSED
-
sC++k schrieb:
Ich hab mich nochmal über mein Konzept informiert. Das was ich als Voxel Engine beschrieb ist doch eher als Point Cloud Engine zu verstehen! Sorry, wenn es wegen der falschen Benennung Verwirrung gestiftet hat.
CLOSEDUnd beim nächsten Mal gibst du einfach zu, dass du vom Thema keine Ahnung hast. Das ist keine Schande, das Forum ist schließlich da, um zu lernen. Aber stattdessen tust du so, als ob du den totalen Masterplan hättest, wie man ein noch nie dagewesenes Konzept effizient realisiert und machst dich natürlich dabei unnötig lächerlich. Hätte nicht sein müssen. Von großen Plänen also in Zukunft erst dann berichten, wenn sie bereits erfolgreich umgesetzt sind.
Man hat dir ja schon erzählt, wie du einfach Pixel zeichnen kannst (Pixeltoaster), aber das hast du als "noch verbuggt" abgetan (die Library existiert seit Jahren und hat ganze 7 open defects - davon würden die meisten Projekt-Maintainer feuchte Träume bekommen).
-
Und noch was: ich hoffe, dir ist klar, dass du mit deiner Art der Tonausgabe nur die entsetzlichen Schrängeltöne, die zu DOS-Zeiten aus dem Systemlautsprecher kamen, nachbilden kannst.
Sowas macht man nicht, sondern man bildet Klänge aus üblicherweise 44100 Samples pro Sekunde. Und jeder Audio-Library kannst du deine eigenen Samples überreichen.
Wenn du dann wirklich Töne mit gleichmäßiger Frequenz erzeugen möchtest, ist das trivial: man nehme die Sinusfunktion und streckt und staucht sie ein wenig, dafür ist keine Extrabibliothek notwendig.
-
Welche Erfahrung hast du denn überhaupt in Grafikprogrammierung? Das liest sich so wie der klassische Programmieranfänger welcher direkt World of Warcraft programmieren will
-
Oha, jetzt erst gesehen, dass das Thema bereits 8 Seiten hat.
Sc++k, du hast leider gar keine Ahnung von C++ bzw. Programmieren und solltest erstmal die Basics erlernen.Btw ist
adequad
eine OpenGL-Primitive?