Форум: Форум C++Разное
Новые темы: 00
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Спиральное заполнение матрицы
 
 автор: Галчонок   (06.04.2007 в 22:24)   письмо автору
 
 

Здравствуйте!!! Помогите пожалуйста решить задачу!!!
Нужно заполнить квадратную матрицу размером nхn последовательными целыми числами от 1 до n в квадрате, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке.
В институте программируем на Borland C++ 3.1
Мой e-mail: galchonok_sunny@mail.ru
Заранее спасибо!!!

  Ответить  
 
 автор: Kostia89   (07.04.2007 в 15:33)   письмо автору
 
   для: Галчонок   (06.04.2007 в 22:24)
 

Вот один из вариантов решения:


#include <stdio.h>
#include <conio.h>
#define N 5
void main()
{
clrscr();
int i,j,k,l,a[N][N],x,krug=0;
i=0;
x=0;
for (;;)
{
for (j=0+krug;j<N-krug;j++)
 {
  x+=1;
  if (x==N*N+1) goto Met;
  a[0+krug][j]=x;
 }
for (i=1+krug;i<N-krug;i++)
 {
  x+=1;
  if (x==N*N+1) goto Met;
  a[i][N-1-krug]=x;
 }
for (k=N-1-1-krug;k>=0+krug;k--)
 {
  x+=1;
  if (x==N*N+1) goto Met;
  a[N-1-krug][k]=x;
 }
for (l=N-1-1-krug;l>0+krug;l--)
 {
  x+=1;
  if (x==N*N+1) goto Met;
  a[l][0+krug]=x;
 }
krug++;
}
Met:
for (i=0;i<N;i++)
{
 for (j=0;j<N;j++)
  printf("%3d",a[i][j]);
 printf("\n");
}
getch();
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования