Informatika gyűjtemény

Egy szinttel feljebb uj_mancala.cpp

2004050607080910

NézetNyomtat

uj_mancala.cpp (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 2 KB
/*
    Informatika: algoritmus szakkör
    Feladat: mancala szamolo, lejatszo es abrazolo
*/
#include <stdio.h>

#define MaxN 1000000
#define MaxK 1000000

int A[MaxK], N, K;

void Make (void);
void Play (void);
void Print (void);
bool SaveSVG1 (const char *);
bool SaveSVG2 (const char *);

int main (void) {
    printf("N: ");
    scanf("%d", &N);
    Make();
    //SaveSVG1("mancala1.svg");
    SaveSVG2("mancala2.svg");
    //Play();
    return 0;
}

void Make (void) {
    int N_ = N;
    for (= 0; N_ > 0; K++)
        N_ -= A[K] = N_ % (+ 2);
}
void Play (void) {
    int I;
    
    do {
        Print();
        for (= 0; I < K; I++) {
            if (A[I] == I + 1) {
                A[I] = 0;
                break;
            }
            A[I]++;
        }
        if (== K) {
            printf("Break.\n");
            break;
        } else if (== K - 1)
            K--;
    } while (> 0);
    if (== 0)
        printf("Success.\n");
}
void Print (void) {
    for (int I = 0; I < K; I++)
        printf("%d ", A[I]);
    printf("\n");
}
bool SaveSVG1 (const char * FN) {
    FILE * F = fopen(FN, "w");
    int I, J;
    
    if (== NULL)
        return false;
    fprintf(F, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
    fprintf(F, "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%%\" height=\"100%%\">\n");
    fprintf(F, "\n");
    for (= 0; I < K; I++) {
        fprintf(F, "<polyline points=\"%d %d %d %d %d %d %d %d %d %d %d %d %d %d\" style=\"stroke:#000000;stroke-width:2;\"/>\n", 
            I * 80 + 5, 60 * K - 20, I * 80 + 5, 60 * K, 
            I * 80 + 75, 60 * K, I * 80 + 75, 60 * K - 20,
            I * 80 + 75, 60 * K, I * 80 + 5, 60 * K,
            I * 80 + 5, 60 * K - 20);
        for (= 0; J < A[I]; J++) {
            fprintf(F, "<circle cx=\"%d\" cy=\"%d\" r=\"%d\" style=\"fill:#80FF00;stroke:#000000;stroke-width:2;\"/>\n", 
                I * 80 + 40, 60 * (- J - 1) + 30, 30);
        }
        fprintf(F, "\n");
    }
    fprintf(F, "</svg>");
    fclose(F);
    return true;
}
bool SaveSVG2 (const char * FN) {
    FILE * F = fopen(FN, "w");
    int I, J;
    
    if (== NULL)
        return false;
    fprintf(F, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
    fprintf(F, "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%%\" height=\"100%%\">\n");
    fprintf(F, "\n");
    for (= 0; I < K; I++) {
        fprintf(F, "<rect x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" style=\"fill:#60C000;stroke-width:0;\"/>\n", 
            I * 1, (- A[I]) * 1, 1, A[I] * 1);
        fprintf(F, "\n");
    }
    fprintf(F, "</svg>");
    fclose(F);
    return true;
}
(Vissza)