Показать сообщение отдельно
Старый 06.04.2011 в 21:57 Цитата выделенного #11
Catala
Ленивый webmaster
Аватар для Catala
 
Регистрация: 28.04.2006
Сообщения: 10,312
Сказал(а) спасибо: 317
Поблагодарили: 15,021 раз(а) в 5,206 сообщениях
Деньги: 878076$
 
По умолчанию

Паскаль не помню, надеюсь C знаешь.

Код:
#include #include void main() { int * mat; int rows, cols; int row, col; int value; int dir;//0 - rigt; 1 - down; 2 - left; 3 - up printf("Input matrix dimensions: "); scanf("%d%d",&rows, &cols); mat = (int*)malloc(sizeof(int) * cols * rows); for(row = 0; row < rows; row++) for(col = 0; col < cols; col++) mat[row*cols + col] = 0; value = 1; dir = 0; row = 0; col = 0; while(value <= rows*cols) { mat[row*cols + col] = value; switch(dir){ case 0: col++; if(mat[row*cols + col] != 0 || col >= cols) { col--; row++; dir = 1; }break; case 1: row++; if(mat[row*cols + col] != 0 || row >= rows) { row--; col--; dir = 2; }break; case 2: col--; if(mat[row*cols + col] != 0 || col < 0) { col++; row--; dir = 3; }break; case 3: row--; if(mat[row*cols + col] != 0 || row < 0) { row++; col++; dir = 0; }break; } value++; } for(row = 0; row < rows; row++) { for(col = 0; col < cols; col++) printf("%d ", mat[row*cols + col]); printf("\n"); } }
__________________
Не ошибается тот - кто не думает.(C)RIVALDO
Offline   Ответить с цитированием