000
04.07.2011, 11:24 Uhr
loofo
|
Hallo,
ich bin neu in c/c++ unterwegs und habe folgenden Code um Kombinationen ohne Wiederholungen zu ermitteln (z.B. 2 aus 4 ohne Beachtung der Reihenfolge).
C++: |
#include <iostream>
using namespace std;
void print_array (int k, int array[]) { static int count = 0; int i;
cout << ++count << ". ("; for (i = 0; i < k - 1; i++) cout << array[i] << ","; cout << array[k - 1] << ")\n"; }
void komb_ow (int n, int k, int array[], int x) { int i; int max;
if (x < k) { max = x ? array[x - 1] : 0;
for (i = max + 1; i <= n - k + x + 1; i++) { array[x] = i; komb_ow (n, k, array, x + 1); } } else print_array (k, array); }
int main() { int array[2];
komb_ow (4, 2, array, 0); }
|
Wenn ich nun in main() beim Aufruf der komb_ow() als zweiten Parameter 6 oder größer eingebe (z.B. komb_ow(8, 6, array, 0) für 6 aus 8), kommt immer ein Speicherzugriffsfehler - die Ausgabe entspricht aber den Erwartungen.
Woran kann das liegen?
Ach ja: compiliert mit g++ unter Ubuntu.
Schon mal vielen Dank für eure Ideen. Dieser Post wurde am 04.07.2011 um 11:26 Uhr von loofo editiert. |