Cod sursa(job #361441)

Utilizator JackRadu Tinel Jack Data 5 noiembrie 2009 00:42:00
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <cstdio>

const int MAXD = 100;

char digit[100] = {'0', '1', '5', '2', '8', '3', '9', '2', '8', '7', '7', '8', '4', '7', '3', '8', '4', '1', '5', '4', '4', '5', '9', '6', '2', '7', '3', '6', '2', '1', '1', '2', '8', '1', '7', '2', '8', '5', '9', '8', '8', '9', '3', '0', '6', '1', '7', '0', '6', '5', '5', '6', '2', '5', '1', '6', '2', '9', '3', '2', '2', '3', '7', '4', '0', '5', '1', '4', '0', '9', '9', '0', '6', '9', '5', '0', '6', '3', '7', '6', '6', '7', '1', '8', '4', '9', '5', '8', '4', '3', '3', '4', '0', '3', '9', '4', '0', '7', '1', '0'};

int getline(char *s, int n, FILE *fin) {
    int c;
    char *p = s;
    char *end = p + n;
    while(p < end && (c = getc(fin)) != EOF && c != 10) // '\n'
        *p++ = c;
    *p = '\0';
    return p - s;
}
int main() {
    int ntests, d;
    char s[MAXD + 1 + 1]; // 100 digits + 1 '\n' + 1 '\0'
    FILE *fin, *fout;

    fin  = fopen("cifra.in",  "r");
    fout = fopen("cifra.out", "w");

    fscanf(fin, "%d", &ntests);
    getc(fin); // get '\n'
    while(ntests-- > 0)
        if((d = getline(s, MAXD + 1, fin)) > 1)
            fprintf(fout, "if %c\n", digit[10 * (s[d - 2] - '0') + (s[d - 1] - '0')]);
        else
            fprintf(fout, "else %c\n", digit[s[d - 1] - '0']);

    return 0;
}