Программа scatter
Эта программа берет первые (LINES - 1) строк стандартного ввода и отображает символы на экране терминала в случайном порядке. Чтобы эта программа работала правильно, входной файл не должен содержать символов табуляции и неотображаемых символов.
/* Программа scatter */
#include <curses.h> #include <sys/types.h>
extern time_t time ();
#define MAXLINES 120 #define MAXCOLS 160
char s [MAXLINES] [MAXCOLS]; /* Массив экрана */ int T [MAXLINES] [MAXCOLS]; /* Результирующий массив, чтобы сохранять количество и расположение введенных символов */
main () { register int row = 0, col = 0; register int c; int char_count = 0; time_t t; void exit (), srand ();
initscr (); for (row = 0; row < MAXLINES; row++) for (col = 0; col < MAXCOLS; col++) s [row] [col] = ' ';
col = row = 0;
/* Считываем */ while ((c=getchar ()) != EOF && row < LINES) { if (c != '\n') { /* Помещаем символ в массив экрана */ s [row] [col] = c; if (c != ' ') char_count++; } else { col = 0; row++; } }
time (&t); /* Инициализация датчика случайных чисел */ srand ((unsigned) t);
while (char_count) { row = rand () % LINES; col = (rand () >> 2) % COLS; if (T [row] [col] !=1 && s [row] [col] != ' ') { move (row, col); addch (s [row] [col]); T [row] [col] = 1; char_count--; refresh (); } }
endwin (); exit (0); }