Das nächste Problem: Funktion tut anscheinend rein gar nichts...



  • @lemon03 sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Amateurastronomie würde ich schätzen. Bis Du da die Grundlagen drinne hast, kannst Du lesen, lesen, lesen bis der Arzt kommt 😉 Und musst niemand was beweisen, weil jeder besser gewesen ist. Weißt schon, man steht auf Schultern von Riesen. Eine gute Grundlage fürs Alterseisen.

    Aber ist leider unverbindlich.

    Amateurastronomie hat leider den Nachteil, dass es ein sehr teures Hobby ist, erst recht, wenn man auch noch durchs Teleskop fotografieren will... mit der Ausrüstung, die ich mir gerade so leisten kann (4,5-Zoll-Reflektor auf wackeliger EQ-2-Montierung, gebrauchte Canon PowerShot S40 für die RAW-Fotos, dazu eine Digiklemme für die Kamera) ist hier in der Großstadt außer Mondfotos kaum etwas möglich...

    Mitunter wünsche ich mir geradezu, dass mir durch äußeren Zwang (Diktatur, Krieg, allgemeiner zivilisatorischer Zusammenbruch) ein bestimmter Lebensweg auferlegt wird, dem ich mich dann nicht mehr entziehen kann - all die Milliarden Optionen, die man hierzulande heutzutage hat (und bei näherer Betrachtung dann eben doch nicht hat, weil materielle Mittel und/oder Persönlichkeitsstruktur nicht dazu passen), treiben mich in die Verzweiflung!



  • @yadgar sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Amateurastronomie hat leider den Nachteil, dass es ein sehr teures Hobby ist, erst recht, wenn man auch noch durchs Teleskop fotografieren will...

    Naja, am Anfang steht immer noch Information sammeln, sonst weißt Du gar nicht, wie Du Deine wertvolle Ausrüstung ausrichten sollst. Und das ist so gut wie kostenlos.

    Aber mal unter uns Schnaps-Psychologen. Solange Du kein ernsthaftes Interesse für eine Sache entdeckst, wirst Du immer vor Dich her wurschteln. Du musst Dich mal aufraffen und was in die Hand nehmen. Klar, das Leben kann Kacke sein. Kenne ich. Aber das sagst Du seit dreißig Jahren, scheinbar ohne Erfolg. Das zu ändern geht nicht von heute auf morgen. Du musst Dich bewegen oder wirst sterben. Entscheide Dich für etwas. Nicht für alles, sondern für etwas.



  • @yadgar sagte in [Das nächste Problem: Funktion tut anscheinend rein gar nichts.

    Mitunter wünsche ich mir geradezu, dass mir durch äußeren Zwang (Diktatur, Krieg, allgemeiner zivilisatorischer Zusammenbruch) ein bestimmter Lebensweg auferlegt wird, dem ich mich dann nicht mehr entziehen kann - all die Milliarden Optionen, die man hierzulande heutzutage hat (und bei näherer Betrachtung dann eben doch nicht hat, weil materielle Mittel und/oder Persönlichkeitsstruktur nicht dazu passen), treiben mich in die Verzweiflung!

    Das hätteste gerne, was? Wegen Deinem Unvermögen sollen alle bluten? Tschuldigung, aber das setzt Deine Person in eine Wichtigkeit, die Du im selben Atemzug negierst.

    Das ist doch alles ein Joke hier auf den ich reingefallen bin!?



  • #include <iostream>
    #include <cmath>
    #include <vector>
    #include <cassert>
    #include <algorithm>
    
    using namespace std;
    
    class pixel
    {
    public:
    	pixel() : r{}, g{}, b{} {}
    	pixel(short red, short green, short blue) : r{ red }, g{ green }, b{ blue } {}
    	void set_red(short red) { r = red; }
    	void set_green(short green) { g = green; }
    	void set_blue(short blue) { b = blue; }
    	short get_red() { return r; }
    	short get_green() { return g; }
    	short get_blue() { return b; }
    	void invert() { r = 255 - r; g = 255 - g; b = 255 - b; }
    	void rgb2grey() { r = g = b = static_cast<short>(round(getvalue())); }
    	void rgb2grey(float, float, float);
    	float getvalue() { return r * 0.299f + g * 0.587f + b * 0.114f; }
    private:
    	short r;
    	short g;
    	short b;
    };
    
    void pixel::rgb2grey(float redw, float greenw, float bluew)
    {
    	float sumw = redw + greenw + bluew;
    	float red = r * (redw / sumw);
    	float green = g * (greenw / sumw);
    	float blue = b * (bluew / sumw);
    	float sum = red + green + blue;
    	r = g = b = static_cast<short>(round(sum));
    }
    
    std::vector<pixel> palette;
    
    bool c64fill(vector<vector<pixel>> const & img, vector<vector<pixel>> & c64img, string const & md, std::size_t fcolor)
    {
    	assert(fcolor < palette.size());
    
    	if (md != "blocks" && md != "multicolor")
    		return false;
    
    	std::size_t target_width{ md == "blocks" ? 40u : 160u };
    	std::size_t target_height{ md == "blocks" ? 25u : 200u };
    
    	std::copy(img.begin(), img.end(), c64img.begin());
    
    	c64img.resize(target_height);
    	for (auto & col : c64img)
    		col.resize(target_width);
    
    	auto ori_width{ img[0].size() };
    	auto ori_height{ img.size() };
    
    	for (std::size_t y{ 0 }; y < ori_height; ++y)
    		std::fill(c64img[y].begin() + ori_width, c64img[y].end(), palette[fcolor]);
    
    	for (std::size_t y{ ori_height }; y < target_height; ++y)
    		std::fill(c64img[y].begin(), c64img[y].end(), palette[fcolor]);
    
    	return true;
    }
    


  • @yadgar Hey, ich habe mir deinen Code mal angeschaut.
    Bei meinen kleinen Versuchen, ist zumindest irgendwas passiert. Um da genauer was zu sagen, musst du mal ein Beispiel Aufruf angeben, mit dem man deinen Fehler reproduzieren kann.

    Du hast irgendwo geschrieben, dass du vor 20 Jahren deine ersten Erfahrungen mit C++ gemacht hast, aber nicht wirklich dran geblieben bist.
    Wenn C++ die Sprache deine Wahl ist, rate ich dir dringend zu einem aktuellen Anfänger-Lehrbuch. Einfach mal auf Null stellen und vo Grund auf ordentlich anfancgen. Es gab hier mal irgendwo eine Liste, dazu. Ein gerne empfohlenes ist der "C++ Primer".
    Außerdem möchte ich dir dringend raten, dir was zum Thema Softwaredesign anzulesen. Dein Code ist für dritte so kaum bis nicht les - oder wartbar. Alleine deine main() hat 1425 Zeilen Code und ist eine reine Kaskade aus ifdef und ifs.
    Deine Gesamte Algorithmik ist in freien Funktionen die auf Vektoren von Vektoren arbeiten (die meistens Image heißt). Was spricht zum Beispiel gegen eine Image Klasse, in die man sowas wunderbar kapseln könnte.
    Du solltest dein Code auch dringend auf mehr Dateien aufteilen. Für jede Klasse eine Header und eine Source Datei ist ein guter Richtwert.

    Wenn man eine Software Multilingual haben möchte, gibt es bessere Wege als alle Strings doppelt im Source Code aufzunehmen. "Internationalization" ist das Stichwort. GUI Frameworks wie QT und wxWidgets bieten da fertige Funktionalitäten für an, ansonsten möchte ich dich da z.B. auf GNU gettext verweisen.
    Aber mein Tipp wäre, erstmal alles einsprachig zu halten und erstmal um den Rest kümmern.



  • @yadgar Ach, das Originalbild soll zentriert im neuen und von der Füllfarbe umrandet sein?

    std::vector<pixel> palette;
    
    bool c64fill(vector<vector<pixel>> const & img, vector<vector<pixel>> & c64img, string const & md, std::size_t fcolor)
    {
    	assert(fcolor < palette.size());
    
    	if (md != "blocks" && md != "multicolor")
    		return false;
    
    	std::size_t target_width{ md == "blocks" ? 40u : 160u };
    	std::size_t target_height{ md == "blocks" ? 25u : 200u };
    
    	c64img.resize(target_height);
    	for (auto & col : c64img)
    		col.resize(target_width);
    
    	auto ori_width{ img[0].size() };
    	auto ori_height{ img.size() };
    
    	auto x_ori_start{ (target_width - ori_width) / 2 };
    	auto y_ori_start{ (target_height - ori_height) / 2 };
    
    	for (std::size_t y{}; y < y_ori_start; ++y)
    		std::fill(c64img[y].begin(), c64img[y].end(), palette[fcolor]);
    
    	for (std::size_t y{ y_ori_start }; y < y_ori_start + ori_height; ++y) {
    		std::fill(c64img[y].begin(), c64img[y].begin() + x_ori_start, palette[fcolor]);
    		std::copy(img[y - y_ori_start].begin(), img[y - y_ori_start].end(), c64img[y].begin() + x_ori_start);
    		std::fill(c64img[y].begin() + x_ori_start + ori_width, c64img[y].end(), palette[fcolor]);
    	}
    
    	for (std::size_t y{ y_ori_start + ori_height }; y < target_height; ++y)
    		std::fill(c64img[y].begin(), c64img[y].end(), palette[fcolor]);
    
    	return true;
    }
    


  • @yadgar sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    ich beschäftige mich nur alle paar Monate mal sporadisch mit einem Programm!

    ach so. Naja. Bis nächsten Monat dann ...



  • @lemon03 sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @yadgar sagte in [Das nächste Problem: Funktion tut anscheinend rein gar nichts.

    Mitunter wünsche ich mir geradezu, dass mir durch äußeren Zwang (Diktatur, Krieg, allgemeiner zivilisatorischer Zusammenbruch) ein bestimmter Lebensweg auferlegt wird, dem ich mich dann nicht mehr entziehen kann - all die Milliarden Optionen, die man hierzulande heutzutage hat (und bei näherer Betrachtung dann eben doch nicht hat, weil materielle Mittel und/oder Persönlichkeitsstruktur nicht dazu passen), treiben mich in die Verzweiflung!

    Das hätteste gerne, was? Wegen Deinem Unvermögen sollen alle bluten? Tschuldigung, aber das setzt Deine Person in eine Wichtigkeit, die Du im selben Atemzug negierst.

    Was hast du denn für ein Problem? Er will nicht dass alle dieses Schicksal erleiden. Er sehnt sich bloss danach dass ihm von äusseren, unausweichlichen Umständen ein Weg vorgegeben wird, aufgezwungen sozusagen. Was ich total nachvollziehen kann, da mir das auch manchmal so geht. Und ich bin sicher nicht der einzige, denn genau das ist ein Punkt der in vielen Ausprägungen der Heldenreise (aka. Standardbauanleitung für Abenteuergeschichten) auftaucht, nämlich dass dem Protagonisten quasi sein Weg aufgezwungen wird. Bzw. dass, nachdem der Protagonist sich erstmal überreden hat lassen es zu machen (was auch immer "es" ist worum es geht), sich jeder Schritt ganz natürlich aus dem vorigen ergibt. Bis auf wenige Momente der Unsicherheit, die dann auch eine entsprechende Qual für den Protagonisten darstellen. Für die Momente der Sicherheit beneiden wir den Protagonisten und für die Momente der Unsicherheit tut er uns leid. Warum wohl?



  • @hustbaer sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Er sehnt sich bloss danach dass ihm von äusseren, unausweichlichen Umständen ein Weg vorgegeben wird, aufgezwungen sozusagen. Was ich total nachvollziehen kann [...]

    ja, but

    God damn it, an entire generation pumping gas, waiting tables – slaves with white collars. Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don't need. We're the middle children of history, man. No purpose or place. We have no Great War. No Great Depression. Our great war is a spiritual war. Our great depression is our lives. We've all been raised on television to believe that one day we'd all be millionaires, and movie gods, and rock stars, but we won't. And we're slowly learning that fact. And we're very, very pissed off.

    I Am Jack's Inflamed Sense of Rejection!



  • @swordfish sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @hustbaer sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Er sehnt sich bloss danach dass ihm von äusseren, unausweichlichen Umständen ein Weg vorgegeben wird, aufgezwungen sozusagen. Was ich total nachvollziehen kann [...]

    ja, but

    God damn it, an entire generation pumping gas, waiting tables – slaves with white collars. Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don't need. We're the middle children of history, man. No purpose or place. We have no Great War. No Great Depression. Our great war is a spiritual war. Our great depression is our lives. We've all been raised on television to believe that one day we'd all be millionaires, and movie gods, and rock stars, but we won't. And we're slowly learning that fact. And we're very, very pissed off.

    I Am Jack's Inflamed Sense of Rejection!

    ...auf meine Biographie übersetzt heißt das: in den Bibliotheken und Buchläden der 1980er Jahre habe ich mich besoffen gelesen an Schilderungen des großen wilden alternativen Lebens auf den diversen "hippie trails" und mir folglich eingeredet, ich könnte auch irgendwann mit dem Fahrrad Richtung Afghanistan aufbrechen... nur war scheißerweise Afghanistan schon zehn Jahre zuvor durch Putschs, Bürgerkrieg und sowjetische Invasion unbereisbar geworden - und ist es bis heute geblieben.



  • @swordfish sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @yadgar Ach, das Originalbild soll zentriert im neuen und von der Füllfarbe umrandet sein?

    Auch, wenn ihr mich jetzt für einen merkbefreiten Troll haltet - aber auch dieser Vorschlag führte nur zu einer Riesenlatte an kryptischen Fehlermeldungen... und da habe ich keine Lust drauf! Ich werde yip komplett neu programmieren, diesmal allerdings in C, und wenn es mit C auch nicht funktioniert, meinetwegen in QBasic auf meiner rumpeligen alten DOS-Mühle... wenn selbst das nicht klappt, lerne ich Logo, und wenn auch das zu schwer sein sollte, lasse ich mich offiziell für geistig behindert erklären und mich in ein Pflegeheim einweisen!



  • @swordfish sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @hustbaer sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Er sehnt sich bloss danach dass ihm von äusseren, unausweichlichen Umständen ein Weg vorgegeben wird, aufgezwungen sozusagen. Was ich total nachvollziehen kann [...]

    ja, but

    God damn it, an entire generation pumping gas, waiting tables – slaves with white collars. Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don't need. We're the middle children of history, man. No purpose or place. We have no Great War. No Great Depression. Our great war is a spiritual war. Our great depression is our lives. We've all been raised on television to believe that one day we'd all be millionaires, and movie gods, and rock stars, but we won't. And we're slowly learning that fact. And we're very, very pissed off.

    I Am Jack's Inflamed Sense of Rejection!

    Ich verstehe leider nicht was du mir damit sagen willst. Meinst du das wäre eh normal und ginge jedem so? Das glaub ich nämlich nicht, also dass davon jeder gleich stark betroffen ist.



  • @hustbaer sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Was hast du denn für ein Problem? Er will nicht dass alle dieses Schicksal erleiden. Er sehnt sich bloss danach dass ihm von äusseren, unausweichlichen Umständen ein Weg vorgegeben wird, aufgezwungen sozusagen. Was ich total nachvollziehen kann, da mir das auch manchmal so geht. Und ich bin sicher nicht der einzige, denn genau das ist ein Punkt der in vielen Ausprägungen der Heldenreise (aka. Standardbauanleitung für Abenteuergeschichten) auftaucht,

    Ja, in Fantasy-Geschichten. Hier geht es aber um einen persönlichen Lebenswunsch. Und für den soll der Rest der Welt niedergehen, damit er seine Heldengeschichte erleben kann.

    Ich finde das jetzt aber nicht so schwergewichtig, wie es oben von mir noch den Anschein hatte. Da man dies eh nicht in der Hand hat, bleibt es auch nur Fantasy. Und die Gründe, warum man sich so etwas ausdenken könnte, hast Du ja schon genannt.



  • @hustbaer Ich glaube es geht einigen, wenn nicht gar vielen so.... Wir haben keinen großen Krieg, keine große Depression, was uns unseren Lebenszweck sozusagen aufoktroyieren würde. Stattdessen sind wir erschlagen von den scheinbaren Möglichkeiten.



  • @lemon03 sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @hustbaer sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    Was hast du denn für ein Problem? Er will nicht dass alle dieses Schicksal erleiden. Er sehnt sich bloss danach dass ihm von äusseren, unausweichlichen Umständen ein Weg vorgegeben wird, aufgezwungen sozusagen. Was ich total nachvollziehen kann, da mir das auch manchmal so geht. Und ich bin sicher nicht der einzige, denn genau das ist ein Punkt der in vielen Ausprägungen der Heldenreise (aka. Standardbauanleitung für Abenteuergeschichten) auftaucht,

    Ja, in Fantasy-Geschichten. Hier geht es aber um einen persönlichen Lebenswunsch. Und für den soll der Rest der Welt niedergehen, damit er seine Heldengeschichte erleben kann.

    Nein, das interpretierst du da einfach nur fröhlich hineine dass "dafür der Rest der Welt niedergehen" soll. Wenn du den Unterschied nicht verstehst zwischen einem Wunsch den man verspürt und dem was man für richtig hält/tut/tun würde wenn man die Möglichkeit bekäme, dann kann ich dir auch nicht helfen. Aber vielleicht willst du's auch bloss nicht verstehen, damit du dich aufregen kannst?

    Keine Ahnung. Ich finde deine Reaktion hier auf jeden Fall reichlich daneben. Ich wollte erst überzogen schreiben, aber das passt nicht, denn überzogen würde implizieren dass an dem was @Yadgar empfindet etwas auch nur ein klein wenig böse/gemein/... wäre. Was IMO nicht der Fall ist.



  • @swordfish sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @hustbaer Ich glaube es geht einigen, wenn nicht gar vielen so.... Wir haben keinen großen Krieg, keine große Depression, was uns unseren Lebenszweck sozusagen aufoktroyieren würde. Stattdessen sind wir erschlagen von den scheinbaren Möglichkeiten.

    Ja, sicher. Ich meine nur wenn man Familie hat ist es besser. Wenn man nen Job hat wo man "was zurück bekommt" ist es besser. Usw. Und wenn man quasi nix hat, ist es halt besonders schlimm.



  • @hustbaer Du kennst Fight Club aber schon, Husti?



  • @OT
    Dir wurden in einem anderen Thread schon Tipps gegeben, was du konkret an deinem Programmierstil ändern sollst und was dir passieren wird, wenn du bei deinem Spaghetti Code bleibst. Umgesetzt hast du davon nichts, du blickst durch deinen Code nicht mehr durch und kannst ihn auch nicht debuggen, um zu sehen, was da schief läuft. Es reicht nicht, nach Hilfe zu fragen, man muss sie auch annehmen und umsetzen. Damit ist man fachlich hier durch.

    Und bei allem Verständnis für persönlichen Probleme, das hier ist ein Programmiererforum und du befindest dich im Unterforum C++ (alle ISO Standards). Wenn deine Geschichte nicht so tragisch wäre hätte ein Admin den Thread wegen off-topic dicht gemacht oder zumindest gesplittet.

    Deine Beiträge zeigen deutlichst(!), dass du dringend einen Psychologentermin machen solltest. Und selbst wenn man lange Wartezeiten hat: Termin vereinbaren, nicht Ausreden finden! Das zieht sich durch all deine Beiträge: ich kann nicht, man lässt mich nicht, ich will nicht. Welche Hilfe erwartest du in diesem Forum? Fachlich? Menschlich? Fachlich kann man dir hier helfen, beim Menschlichen habe ich den Eindruck, dass du hier Zuspruch finden möchtest, um professionelle Hilfestellung wieder aufschieben zu können. Also nochmal: Psychologentermin! Vereinbaren! ASAP!

    Ich persönlich möchte mit deinen Problemen auch nicht überfallen werden. Wenn du über deine Probleme reden möchtest oder dir einfach nur Sachen von der Seele schreiben möchtest, weil das in dir brennt und du dich mitteilen möchtest dann mach dazu einen Thread im passenden Unterforum auf. Bei fachlichen Fragen möchte ich nichts über die Lebenssituation des Fragestellers wissen, das gehört nicht hierher.

    BTW:
    Die Programmiersprache ist nur Mittel zum Zweck, wenn du es in C++ nicht hinbekommst wird es in C oder VB wahrscheinlich auch nichts.

    Und was deinen Traum angeht, mit dem Fahrrad nach Afghanistan zu fahren:
    Selbst wenn Afghanistan in Schutt und Asche liegt, dann drehste halt an der Grenze wieder um. Ich bin mir sicher, dass dir während der Fahrt so viele Dinge passieren werden wie manchen anderen Menschen in ihrem ganzen Leben. Achtung, Plattitüde: Der Weg ist das Ziel (5€ für´s Phrasenschwein). Ich kenne jemanden, der hat sich ins Auto gesetzt und wollte bis nach Wladiwostok fahren. Ist "nur" bis in die Mongolei gekommen, aber war restlos begeistert vom Trip und erzählt davon heute noch mit glänzenden Augen.
    Auch hier wieder die Ausrede: Ich würde ja, aber in Afghanistan herrscht Krieg, und deswegen kann ich da nicht hinfahren.
    Dann fang halt mit kleinen Touren an, fahr in deiner Gegend in der Landschaft rum. Training wirste sowieso brauchen, wenn du 6500km radeln willst, gerade wenn es im Moment nur für 50km Hopser reicht. Stell doch ne Regel auf: jeden Tag 25km Rad fahren. Egal bei welchem Wetter.



  • @swordfish sagte in Das nächste Problem: Funktion tut anscheinend rein gar nichts...:

    @hustbaer Du kennst Fight Club aber schon, Husti?

    Ja irgendwann mal gesehen, weniger beeindruckt gewesen als die meisten 🙂
    Ist das denn ein Fightclub Zitat mit dem sense of rejection?



  • Sir, yes it is, Sir!, Der Rest des Posts auch.


Anmelden zum Antworten