На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Сделать задачу на C++
    Начиная с центра, обойти все элементы квадратной матрицы размером 13x13 по спирали (распечатывая их в порядке обхода).
      Программку для авто сервиса уже написал вялся за задачки! :D
        У меня была похожая задачка, точнее, олимпиадная. Напечатать числа от 1 до 100 по спирали. Там тоже надо было создать массив 10х10 и пройти по нему. Тут 13х13, но действия примерно такие же. И здесь надо просто печатать текущее значение, а не записывать туда число. Я напишу, как я обходил матрицу 10х10 по спирали от центра, а ты уже потом это переделаешь (это совсем легко).
        ExpandedWrap disabled
          int M[10][10];   // матрица
           
          void main()
          {
            clrscr();
            int i,j,x,y,n;
           
            M[4][4]=1;
            for(x=4,y=4,n=1,i=1;i<=100;)    // цикл до 10*10 - кол-ва элементов матрицы
             {
              for(j=0;j<n;j++) M[++x][y]=++i;  // тут заносится значение, а его надо печатать
              for(j=0;j<n;j++) M[x][++y]=++i;  // то же самое
              n++;
              for(j=0;j<n;j++) M[--x][y]=++i;  // и здесь
              for(j=0;j<n;j++) M[x][--y]=++i;  // надо печатать, а не записывать сюда
              n++;
             }
            for(x=9;x>=0;x--)         // тут мы печатаем значения, но это тебе не надо
             {
              for(y=0;y<10;y++)
                printf("%3d ",M[x][y]);
              printf("\n");
             }
            getch();
          }
        Или второй вариант:
        ExpandedWrap disabled
          int M[10][10];
          void main()
          {
            clrscr();
            int x=4,y=5,num=1,man=-1,j,i,wp=1;
            for(i=1;i<=100;)
            {
              if(!(++man % 2) && (man!=0)) num++;
              for(j=0;j<num;j++,i++)
              {
                (wp==1)?y--:(wp==2)?x++:(wp==3)?y++:x--;
                M[x][y] = i;
              }
              wp++; if(wp>4) wp=1;
            }
            for(i=0;i<10;i++)
            {
              for(j=0;j<10;j++)
                printf("%3d ",M[j][i]+1);
              printf("\n");
            }
            getch();
          }
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0312 ]   [ 15 queries used ]   [ Generated: 21.05.24, 23:19 GMT ]