Другие языки программирования и технологии
Задача. Программирование. Высший уровень.
Заполните матрицу n×n числами от 1 до n2 по спирали, по часовой стрелке, начиная от единицы в левом верхнем углу. Полученную матрицу выведите построчно, разделяя числа пробелами. Программа должна считать число n из файла input.txt и вывести результат в файл output.txt Формат входного файла. Входной файл содержит одно целое число n (1 ≤ n ≤ 10). Формат выходного файла. Выведите в выходной файл n строк по n чисел — полученную матрицу. input.txt 5 output.txt 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 Программа должна завершаться с кодом 0. Иначе Вы получите ошибку "Runtime Error". Для этого в C и C++ нужно сделать так, чтобы функция int main() возвращала 0. Нельзя обрабатывать ввод с клавиатуры или ожидать нажатия клавиши. В противном случае Вы получите ошибку, например “Security Violation”. Не используйте абсолютные пути при работе с файлами. При запуске Вашей программы эти файлы будут находиться в текущем каталоге. Среды. Borland Delphi 7 Borland Pascal 7 Microsoft Visual C 2010
Вот тебе рабочий алгоритм на Pascal ABC. С остальными заморочками уж как-то сам.



С++:
void FillHelix( int **Mas, int sizeY, int sizeX )
{
int Summ = sizeX * sizeY;
int CorrectY = 0;
int CorrectX = 0;
int Count = 1;
while( sizeY > 0 )
{
for ( int y = 0; y < 4; y++ )
{
for ( int x = 0; x < ( ( sizeX < sizeY ) ? sizeY : sizeX ); x++ )
{
if ( y == 0 && x < sizeX - CorrectX && Count <= Summ )
Mas[y + CorrectY][x + CorrectX] = Count++;
if ( y == 1 && x < sizeY - CorrectY && x != 0 && Count <= Summ )
Mas[x + CorrectY][sizeX - 1] = Count++;
if ( y == 2 && x < sizeX - CorrectX && x != 0 && Count <= Summ )
Mas[sizeY - 1][sizeX - (x + 1)] = Count++;
if ( y == 3 && x < sizeY - ( CorrectY + 1 ) && x != 0 && Count <= Summ )
Mas[sizeY - (x + 1)][CorrectY] = Count++;
}
}
sizeY--;
sizeX--;
CorrectY += 1;
CorrectX += 1;
}
}
void FillHelix( int **Mas, int sizeY, int sizeX )
{
int Summ = sizeX * sizeY;
int CorrectY = 0;
int CorrectX = 0;
int Count = 1;
while( sizeY > 0 )
{
for ( int y = 0; y < 4; y++ )
{
for ( int x = 0; x < ( ( sizeX < sizeY ) ? sizeY : sizeX ); x++ )
{
if ( y == 0 && x < sizeX - CorrectX && Count <= Summ )
Mas[y + CorrectY][x + CorrectX] = Count++;
if ( y == 1 && x < sizeY - CorrectY && x != 0 && Count <= Summ )
Mas[x + CorrectY][sizeX - 1] = Count++;
if ( y == 2 && x < sizeX - CorrectX && x != 0 && Count <= Summ )
Mas[sizeY - 1][sizeX - (x + 1)] = Count++;
if ( y == 3 && x < sizeY - ( CorrectY + 1 ) && x != 0 && Count <= Summ )
Mas[sizeY - (x + 1)][CorrectY] = Count++;
}
}
sizeY--;
sizeX--;
CorrectY += 1;
CorrectX += 1;
}
}
Похожие вопросы
- Какие Языки программирования высокого уровня для системного программирования
- Почему html не считается интерпретируемым языком программирования высокого уровня?
- Виды языков программирования высокого уровня?
- Помогите первокурснику. Нам задали лабу по "Языки программирования высокого уровня". И я не шарю как это делать. (C#)
- Что сложнее: выучить иностранный язык (уровень понимания разговора) или стать мастером программирования на уровне
- Что означает понятие "язык программирования очень высокого уровня"?
- Какой ЯП лучше в освоении? ASM или ЯП высокого уровня?
- Помогите, пожалуйста, написать текст программы на языке высокого уровня (Basic или Pascal)!
- Решите задачу, программирование!!! Срочно! Пожалуйста!
- Решение задачи. ПРОГРАММИРОВАНИЕ И АЛГОРИТМИЗАЦИЯ В КОМПЬЮТЕРНЫХ СИСТЕМАХ.