Arrray füllen mit Zahlen von ... bis ...
-
Samyboy schrieb:
Hmm, danke gute Idee!
Sollte ich dafür lieber eine Funktion schreiben oder das ganze mit nem Macro machen?Keine Makros. Das war ein Typ, der Dich auf arge Abwege führen will.
-
volkard schrieb:
Samyboy schrieb:
Hmm, danke gute Idee!
Sollte ich dafür lieber eine Funktion schreiben oder das ganze mit nem Macro machen?Keine Makros. Das war ein Typ, der Dich auf arge Abwege führen will.
Ohh, dankeschön ^^
-
... Anscheinend nicht...
---GELÖSCHT---
-
for-Schleife?

-
Sunny31 schrieb:
... Anscheinend nicht...
---GELÖSCHT---
Schade. Deine Funktion war so hübsch.
-
Wenn nicht Macros, dann std::generate (z.B.)
#include <algorithm> #include <iostream> #include <vector> using namespace std; class AscRangeFill { int m_val; public: AscRangeFill(int start=0) : m_val(start) {} int operator()() { int ret = m_val++; return ret; } }; int main() { int arr[10]; generate(arr, arr+10, AscRangeFill(10)); cout << arr[0] << " " << arr[9] << endl; }Oder eine eigene Funktion
#include <iostream> using namespace std; void fillArray(int *arr, int size, int start) { for (int i=0; i<size; ++i) arr[i] = i+start; } int main() { int arr[10]; fillArray(arr, 10, 25); for( int i=0; i<10; ++i) cout << arr[i] << "\n"; }
-
volkard schrieb:
Sunny31 schrieb:
... Anscheinend nicht...
---GELÖSCHT---
Schade. Deine Funktion war so hübsch.
Grml,... schien mir irgendwie trivial zu sein, wenn ich mir seine Posts so ansehe

-
Sunny31 schrieb:
Grml,... schien mir irgendwie trivial zu sein, wenn ich mir seine Posts so ansehe

Einfacher ist besser. Den Quatsch mit AscRangeFill hätte ich beinahe auch gelöscht. :xmas1:
-
Handelte es sich um sowas?
for (unsigned int i = 0; i < 10; ++i) array[i] = i;Scheint mir auch zu einfach. Aber eine Funktion oder sonst was lohnt sich erst, wenn sie mehrere Male eingesetzt wird.

-
Nexus schrieb:
Aber eine Funktion oder sonst was lohnt sich erst, wenn sie mehrere Male eingesetzt wird.

Hmm. Das würde ich so nicht unterzeichnen.

Ich finde manchmal kann man auch ohne dass man gerade einen Grund sieht, dass man eine Funktion erneut braucht machen, anstatt alles auszuprogrammieren. Einfach, damit man einem Teil einen Namen gegeben hat und das kann imo teilweise recht zum Verständnis weiterhelfen.Natürlich merkt man immer mal wieder, dass ein Teil eines Programmes doch mehrmals gebraucht wird. Wenn man dann bereits eine Funktion hat, dann ist das ja auch wunderbar.

-
Ja, ich handhabe das eigentlich auch so. Ich habe meine Aussage mehr auf dieses Beispiel bezogen. Und da ist ein Riesen-Funktor wie
AscRangeFilleindeutig Overengineering, wenn er genau ein einziges Mal eingesetzt wird. Kommt natürlich auch drauf an, ob man vorhat, öfter Arrays auf diese Weise zu initialisieren.
-
volkard schrieb:
Einfacher ist besser. Den Quatsch mit AscRangeFill hätte ich beinahe auch gelöscht. :xmas1:
Dass das mit dem Macro keine saubere Lösung ist, ist mir klar.
Warum allerdings die Lösung über std::generate Quatsch ist, würde ich gerne wissen. Es vermittelt in dem einfachen Fall hier, eine Zahl von x nach y aufzufüllen, ein Gefühl Overkill. Aber es IST eben eine (die) Möglichkeit, die die Standardbibliothek für ein Befüllen eines Array anbietet. Und es zeigt dem OP, wie evtl. Arrays mit komplexeren Zahlenfolgen befüllt werden können. Z.B. die nächsten 13 Primzahlen ab 100. Oder 156 Sinuswerte mit dx=0.024 ab x=23.548. Oder ...Da ich schon die Kritik an dieser Lösung gesehen habe, hab ich ja auch noch die einfache Funktion gepostet.
Wobei es mir auch so gegangen ist, dass ich nichtmal daran gedacht habe, die einfache for-Schleife als Lösung der Frage in Betracht zu ziehen...
P.S.:
Was passiert denn eigentlich nach der Weihnachtszeit mit den XMas-Smileys? Mutieren die dann zu normalen?