"Андрей Богатырев. Хрестоматия по программированию на Си в Unix" - читать интересную книгу автора

demochanges(){
register i, j;
int h = LINES - 3 * GAPY - N;
int height;

erase(); /* зачистить окно */
attron( A_REVERSE );

/* рисуем матрицу упорядоченности */
for( i=0 ; i < N ; i++ )
for( j = 0; j < N ; j++ ){
move( GAPY + i , GAPX + j * 2 );
addch( target[i] >= target[j] ? '*' : '.' );
addch( ' ' );
/* Рисовать '*' если элементы
* идут в неправильном порядке.
* Возможен вариант проверки target[i] > target[j]
*/
}
attroff( A_REVERSE );

/* массив */
for( i = 0 ; i < N ; i++ ){
move( GAPY + i , 5 );
printw( "%4d", target[i] );

height = (long) h * target[i] / maxim ;
for( j = 2 * GAPY + N + (h - height) ;
j < LINES - GAPY; j++ ){
move( j, GAPX + i * 2 );
addch( '|' );
}
}
refresh(); /* проявить картинку */
sleep(1);
}

А. Богатырев, 1992-95 - 24 - Си в UNIX

1.51. Реализуйте приведенный фрагмент программы без использования оператора goto и
без меток.

if ( i > 10 ) goto M1;
goto M2;
M1: j = j + i; flag = 2; goto M3;
M2: j = j - i; flag = 1;
M3: ;

Заметьте, что помечать можно только оператор (может быть пустой); поэтому не может
встретиться фрагмент