Exemple #1
0
/**
 * Kopiuje wejście na wyjście, permutując kolumny w sposób określony
 * argumentami programu.
 */
int main(int argc, char *argv[])
{
    int k, n, a;
    int *p = NULL;
    int *q = NULL;
    bool odwracanie = false;
    char *s = NULL;
    int rozmiar;

    n = argc - 1;
    k = 1;
    if (argc > 1 && strcmp(argv[1], ARG_ODWRACANIE) == 0) {
        odwracanie = true;
        --n;
        ++k;
    }
    rozmiar = (n > 0) ? n : 1;
    if ((p = malloc(rozmiar * sizeof *p)) == NULL) {
        blad(BRAK_MIEJSCA);
    }
    if ((a = wpisz_permutacje(argv + k, p, n)) != 0) {
        free(p);
        blad(a);
    }
    if (odwracanie) {
        if ((q = malloc(rozmiar * sizeof *p)) == NULL) {
            free(p);
            blad(BRAK_MIEJSCA);
        }
        odwrotna(p, n, q);
        free(p);
        p = q;
    }
    if ((s = malloc(rozmiar * sizeof *s)) == NULL) {
        free(p);
        blad(BRAK_MIEJSCA);
    }
    permutuj(p, n, s);
    free(s);
    free(p);
    return EXIT_SUCCESS;
}
Exemple #2
0
int main() {
    int n;
    scanf("%d", &n);
    permutuj(n);
    return 0;
}