Решения задач acmp.ru
Главная
Вход
Регистрация
Четверг, 01.10.2020, 04:28Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Pascal [121]
C++ [76]

Поиск

Мини-чат
200

Легкий заработок!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Файлы » C++

0196 Спираль

Скачать файл можно после просмотра рекламы:

05.06.2012, 03:02
#include <stdio.h>
#include <memory.h>

int main()
{
    unsigned int n = 0;
    
    FILE * f = fopen("input.txt","r");
    fscanf(f,"%d", &n);
    fclose(f);
    
    unsigned int ** matrix = new unsigned int* [n];
    for (int i = 0; i<n; i++)
    {
        matrix [i] = new unsigned int [n];
        memset(matrix[i], 0, sizeof(unsigned int) * n);
    }
    
    int pv = 0, ph = 0, sv = 0, sh = 1;
    char v = 0, c = 0;
    
    for (int i = 1; i<=n*n; i++)
    {
        c = 0;
        matrix [pv][ph] = i;
        pv += sv;
        ph += sh;
        if ( (pv+sv<0) || (pv+sv>=n) ||
             (ph+sh<0) || (ph+sh>=n) ) c = 1;
        else
            if (matrix [pv+sv] [ph+sh]) c = 1;
        
        if (c)
        {
              v++;
              if (v>=4) v = 0;
              switch (v)
              {
                     case 0: sv = 0; sh = 1; break;
                     case 1: sv = 1; sh = 0; break;
                     case 2: sv = 0; sh = -1; break;
                     case 3: sv = -1; sh = 0; break;
              }
        }
    }
    
    f = fopen("output.txt", "wt");
    for (int i = 0; i<n; i++)
    {
        for (int j = 0; j<n; j++)
            fprintf(f, "%d ", matrix[i][j]);
        fprintf(f, "\n");
    } 
    fclose(f);
    
    return 0;
}

Категория: C++ | Добавил: shum
Просмотров: 2356 | Загрузок: 0 | Комментарии: 3
Всего комментариев: 3
3 sdds   (19.02.2014 13:17) [Материал]
ne compiliruetcia

2 zhanerke   (18.11.2012 09:23) [Материал]
shutka

1 zhanerke   (18.11.2012 09:22) [Материал]
a na cpp kak?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Это интересно!


Copyright MyCorp © 2020