Liste des Groupes | Revenir à cl c |
On Tue, 09 Apr 2024 11:44:23 +0100, Ben Bacarisse wrote:
>It's significant (or at least note worthy) that the code in the>
original post was not ISO C ...
Interesting that GCC?s C compiler allows nested routine definitions,
but the C++ compiler does not.
>and re-writing it in ISO C would show up some of the issues involved>
...
Ask and you shall receive ...
>
/*
Generate permutations of a list of items.
Pass a list of arbitary words as command arguments, and this
program will print out all possible orderings of them.
*/
>
#include <iso646.h>
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
>
typedef void (*permute_action)
(
unsigned int nrwords,
const char * const * words,
void * arg
);
>
struct permute_ctx
{
unsigned int nrwords;
const char * const * words;
permute_action action;
void * action_arg;
const char ** permbuf;
bool * used;
} /*permute_ctx*/;
>
static void permute1
(
struct permute_ctx * ctx,
unsigned int depth
)
{
if (depth < ctx->nrwords)
{
for (unsigned int i = 0; i < ctx->nrwords; ++i)
{
if (not ctx->used[i])
{
ctx->permbuf[depth] = ctx->words[i];
ctx->used[i] = true;
permute1(ctx, depth + 1);
ctx->used[i] = false;
} /*if*/
} /*for*/
}
else
{
ctx->action(ctx->nrwords, ctx->permbuf, ctx->action_arg);
} /*if*/
} /*permute1*/
>
void permute
(
unsigned int nrwords,
const char * const * words,
permute_action action,
void * action_arg
)
{
if (nrwords > 0)
{
struct permute_ctx ctx;
ctx.nrwords = nrwords;
ctx.words = words;
ctx.action = action;
ctx.action_arg = action_arg;
ctx.permbuf = (const char **)malloc(nrwords * sizeof(char *));
ctx.used = (bool *)malloc(nrwords);
for (unsigned int i = 0; i < nrwords; ++i)
{
ctx.used[i] = false;
} /*for*/
>
permute1(&ctx, 0);
>
free(ctx.permbuf);
free(ctx.used);
} /*if*/
} /*permute*/
>
[...]
Date | Sujet | # | Auteur | |
7 Apr 24 | Recursion, Yo | 102 | Lawrence D'Oliveiro | |
7 Apr 24 | Re: Recursion, Yo | 100 | fir | |
9 Apr 24 | Re: Recursion, Yo | 99 | Janis Papanagnou | |
9 Apr 24 | Re: Recursion, Yo | 7 | Lawrence D'Oliveiro | |
9 Apr 24 | Re: Recursion, Yo | 5 | Janis Papanagnou | |
9 Apr 24 | Re: Recursion, Yo | 4 | Ben Bacarisse | |
9 Apr 24 | Re: Recursion, Yo | 3 | Janis Papanagnou | |
9 Apr 24 | Re: Recursion, Yo | 2 | Keith Thompson | |
10 Apr 24 | Re: Recursion, Yo | 1 | Janis Papanagnou | |
9 Apr 24 | Re: Recursion, Yo | 1 | bart | |
9 Apr 24 | Re: Recursion, Yo | 91 | Ben Bacarisse | |
9 Apr 24 | Re: Recursion, Yo | 1 | Ben Bacarisse | |
10 Apr 24 | Re: Recursion, Yo | 89 | Lawrence D'Oliveiro | |
10 Apr 24 | Re: Recursion, Yo | 1 | Chris M. Thomasson | |
10 Apr 24 | Re: Recursion, Yo | 86 | David Brown | |
10 Apr 24 | Re: Recursion, Yo | 84 | Lawrence D'Oliveiro | |
10 Apr 24 | Re: Recursion, Yo | 83 | David Brown | |
10 Apr 24 | Re: Recursion, Yo | 73 | bart | |
10 Apr 24 | Re: Recursion, Yo | 71 | David Brown | |
11 Apr 24 | Re: Recursion, Yo | 70 | Lawrence D'Oliveiro | |
11 Apr 24 | Re: Recursion, Yo | 4 | Kaz Kylheku | |
11 Apr 24 | Heh heh... (Was: Recursion, Yo) | 3 | Kenny McCormack | |
11 Apr 24 | Re: Heh heh... (Was: Recursion, Yo) | 2 | Kaz Kylheku | |
11 Apr 24 | Re: Heh heh... (Was: Recursion, Yo) | 1 | Kenny McCormack | |
11 Apr 24 | Re: Recursion, Yo | 65 | David Brown | |
11 Apr 24 | Re: Recursion, Yo | 62 | Kaz Kylheku | |
11 Apr 24 | Re: Recursion, Yo | 1 | David Brown | |
12 Apr 24 | Re: Recursion, Yo | 60 | Lawrence D'Oliveiro | |
12 Apr 24 | Re: Recursion, Yo | 2 | Kaz Kylheku | |
12 Apr 24 | Re: Recursion, Yo | 1 | Dan Cross | |
12 Apr 24 | Re: Recursion, Yo | 57 | Janis Papanagnou | |
12 Apr 24 | Re: Recursion, Yo | 6 | David Brown | |
12 Apr 24 | Re: Recursion, Yo | 5 | Janis Papanagnou | |
12 Apr 24 | Re: Recursion, Yo | 3 | David Brown | |
13 Apr 24 | Re: Recursion, Yo | 2 | Janis Papanagnou | |
13 Apr 24 | Re: Recursion, Yo | 1 | David Brown | |
13 Apr 24 | Re: Recursion, Yo | 1 | Lawrence D'Oliveiro | |
12 Apr 24 | Re: Recursion, Yo | 45 | Lawrence D'Oliveiro | |
12 Apr 24 | Re: Recursion, Yo | 44 | Janis Papanagnou | |
12 Apr 24 | Re: Recursion, Yo | 1 | bart | |
13 Apr 24 | Re: Recursion, Yo | 42 | Lawrence D'Oliveiro | |
13 Apr 24 | Re: Recursion, Yo | 14 | Michael S | |
14 Apr 24 | Re: Recursion, Yo | 11 | Ben Bacarisse | |
14 Apr 24 | Re: Recursion, Yo | 10 | Michael S | |
15 Apr 24 | Re: Recursion, Yo | 9 | Janis Papanagnou | |
15 Apr 24 | Re: Recursion, Yo | 8 | Keith Thompson | |
15 Apr 24 | Re: Recursion, Yo | 7 | Ben Bacarisse | |
15 Apr 24 | Re: Recursion, Yo | 6 | Keith Thompson | |
15 Apr 24 | Re: Recursion, Yo | 2 | bart | |
15 Apr 24 | Re: Recursion, Yo | 1 | Ben Bacarisse | |
15 Apr 24 | Re: Recursion, Yo | 3 | Janis Papanagnou | |
15 Apr 24 | Re: Recursion, Yo | 1 | Janis Papanagnou | |
15 Apr 24 | Re: Recursion, Yo | 1 | Keith Thompson | |
14 Apr 24 | Re: Recursion, Yo | 2 | Lawrence D'Oliveiro | |
14 Apr 24 | Re: Recursion, Yo | 1 | Keith Thompson | |
13 Apr 24 | Re: Recursion, Yo | 27 | Janis Papanagnou | |
14 Apr 24 | Re: Recursion, Yo | 26 | Lawrence D'Oliveiro | |
14 Apr 24 | Re: Recursion, Yo | 25 | Ben Bacarisse | |
14 Apr 24 | Re: Recursion, Yo | 2 | bart | |
14 Apr 24 | Re: Recursion, Yo | 1 | Ben Bacarisse | |
15 Apr 24 | Re: Recursion, Yo | 22 | Lawrence D'Oliveiro | |
15 Apr 24 | Re: Recursion, Yo | 20 | Chris M. Thomasson | |
15 Apr 24 | Re: Recursion, Yo | 5 | Ben Bacarisse | |
16 Apr 24 | Re: Recursion, Yo | 4 | Lawrence D'Oliveiro | |
17 Apr 24 | Re: Recursion, Yo | 3 | Ben Bacarisse | |
18 Apr 24 | Re: Recursion, Yo | 2 | Lawrence D'Oliveiro | |
22 Apr 24 | Re: Recursion, Yo | 1 | Janis Papanagnou | |
15 Apr 24 | Re: Recursion, Yo | 14 | Janis Papanagnou | |
16 Apr 24 | Re: Recursion, Yo | 2 | Lawrence D'Oliveiro | |
22 Apr 24 | Re: Recursion, Yo | 1 | Janis Papanagnou | |
16 Apr 24 | Re: Recursion, Yo | 11 | Michael S | |
19 Apr 24 | Re: Recursion, Yo | 9 | Tim Rentsch | |
19 Apr 24 | Re: Recursion, Yo | 4 | bart | |
20 Apr 24 | Re: Recursion, Yo | 3 | Ben Bacarisse | |
20 Apr 24 | Re: Recursion, Yo | 1 | Keith Thompson | |
20 Apr 24 | Re: Recursion, Yo | 1 | Kaz Kylheku | |
19 Apr 24 | Re: Recursion, Yo | 1 | Keith Thompson | |
19 Apr 24 | Re: Recursion, Yo | 2 | Keith Thompson | |
20 Apr 24 | Re: Recursion, Yo | 1 | Tim Rentsch | |
20 Apr 24 | Re: Recursion, Yo | 1 | Tim Rentsch | |
22 Apr 24 | Re: Recursion, Yo | 1 | Janis Papanagnou | |
15 Apr 24 | Re: Recursion, Yo | 1 | Ben Bacarisse | |
12 Apr 24 | Re: Recursion, Yo | 4 | bart | |
12 Apr 24 | Re: Recursion, Yo | 2 | Janis Papanagnou | |
12 Apr 24 | Re: Recursion, Yo | 1 | bart | |
13 Apr 24 | Re: Recursion, Yo | 1 | Keith Thompson | |
13 Apr 24 | Re: Recursion, Yo | 1 | Tim Rentsch | |
11 Apr 24 | Re: Recursion, Yo | 2 | Keith Thompson | |
12 Apr 24 | Re: Recursion, Yo | 1 | David Brown | |
14 Apr 24 | Re: Recursion, Yo | 1 | fir | |
10 Apr 24 | Re: Recursion, Yo | 1 | Janis Papanagnou | |
10 Apr 24 | Re: Recursion, Yo | 2 | Kaz Kylheku | |
10 Apr 24 | Re: Recursion, Yo | 1 | David Brown | |
11 Apr 24 | Re: Recursion, Yo | 2 | Lawrence D'Oliveiro | |
12 Apr 24 | Re: Recursion, Yo | 1 | Ben Bacarisse | |
11 Apr 24 | Re: Recursion, Yo | 4 | Lawrence D'Oliveiro | |
11 Apr 24 | Re: Recursion, Yo | 1 | Kaz Kylheku | |
11 Apr 24 | Re: Recursion, Yo | 2 | David Brown | |
11 Apr 24 | Re: Recursion, Yo | 1 | Lawrence D'Oliveiro | |
10 Apr 24 | Re: Recursion, Yo | 1 | Kaz Kylheku | |
10 Apr 24 | Re: Recursion, Yo | 1 | Tim Rentsch | |
9 Apr 24 | Re: Recursion, Yo | 1 | Lawrence D'Oliveiro |
Les messages affichés proviennent d'usenet.