ココサブ #740(2007/07/13 11:01 GMT) [ C ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int n; /* あみだの数 */ int keta; /* 数字の桁数 */ int *amida; /* あみだ */ int i, j, k; /* ループカウンタ */ int tmp; /* スワップ用 */ char *under; /* 移動線 */ /* nを決定する */ if (argc < 2) { fprintf(stderr, "usage: %s n\n", argv[0]); return 1; } n = atoi(argv[1]); if (n < 2) { n = 2; } keta = 1; for (tmp = n+1; tmp >= 10; tmp /= 10) { keta++; } /* あみだの初期化、一番上の数字の表示 */ amida = malloc(n * sizeof(*amida)); for (i = 0; i < n; i++) { amida[i] = i; } under = malloc(keta * sizeof(*under)); for (i = 0; i < keta; i++) { under[i] = '_'; } for (i = 0; i < n; i++) { printf("%d%*c", amida[i], keta, ' '); } printf("\n"); /* バブルソート */ for (i = 0; i < n-1; i++) { for (j = 0; j < n-1; j++) { if (amida[j] < amida[j+1]) { /* 交換があるときに交換の表示をする */ tmp = amida[j]; amida[j] = amida[j+1]; amida[j+1] = tmp; for (k = 0; k < n; k++) { if (k == j) { printf("|%s", under); } else { printf("|%*c", keta, ' '); } } printf("\n"); } } } /* 最後の線と数字の表示 */ for (i = 0; i < n; i++) { printf("|%*c", keta, ' '); } printf("\n"); for (i = 0; i < n; i++) { printf("%-*d ", keta, amida[i]); } printf("\n"); free(amida); free(under); return 0; }
Rating0/0=0.00-0+
[ reply ]
ココサブ
#740()
[
C
]
Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]