/**
 * board_controller.c -- Контроллер информационного табло.
 *
 * Copyright (c) 2009, Student Name <student@cs.karelia.ru>
 *
 * This code is licensed under a MIT-style license.
 */

#include <stdio.h>
#include <stdlib.h>

/* Ширина табло. */
#define BOARD_WIDTH 80

/* Высота табло. */
#define BOARD_HEIGHT 24

/* Инструкции. */
#define INSTR_SHOW 0
#define INSTR_FLIP 1
#define INSTR_GET 2
#define INSTR_FLIPIF 3

/* Состояние табло. */
int board[BOARD_WIDTH][BOARD_HEIGHT] = { { 0 } };

int main(int argc, char** argv)
{
    /* Инструкция. */
    int ins;

    /* Результат fscanf (количество прочитанных значений или EOF). */
    int read;

    /* Поток ввода. */
    FILE* input = stdin;

    /* TODO: ввод из файла. */

    /* Считывать команды пока не конец файла */
    while ((read = fscanf(input, "%d", &ins)) != EOF) {

        if (read != 1) {
            /* Ошибка разбора входных данных. */
            fprintf(stderr, "Неверный формат входных данных\n");
            return EXIT_FAILURE;
        }

        switch (ins) {
        case INSTR_SHOW:
            /* TODO: реализация SHOW. */
            break;
        case INSTR_FLIP:
            /* TODO: реализация FLIP. */
            break;
        case INSTR_GET:
            /* TODO: реализация GET. */
            break;
        case INSTR_FLIPIF:
            /* TODO: реализация FLIPIF. */
            break;
        default:
            fprintf(stderr, "Неверная инструкция: %d\n", ins);
            return EXIT_FAILURE;
        }
    }

    return EXIT_SUCCESS;
}
