Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 16:44   #1
Azzzza
 
Регистрация: 26.04.2011
Сообщений: 9
По умолчанию Задача с матрицей. Не могу найти причину неправильной работы программы.

Матрицу М(m, n) заполнить натуральными числами от 1 до m*n по спирали, начинающейся в левом верхнем углу и закрученной почасовой стрелке
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
Вот моя программа, но она не работает, как надо, не могу исправить

#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
main()
{
int n,m;
int i,imax,imin,j,jmax,jmin,k;
cin>> m;
cin >> n;
int**a;
a=new int*[m];
for(i=0; i<m; i++)
a[i]=new int[n];
jmin=1;
jmax=n;
imin=2;
imax=m;
k=0;
for(j=jmin; j<jmax; j++)
{
k++;
a[imin-1][j]=k;
}
for(i=imin; i<imax; i++)
{
k++;
a[i][jmax]=k;
}
imax--;
for(i=imax; i>imin; i--)
{
k++;
a[i][jmin]=k;
}
imin++;
jmin++;
while(k>=m*n)
for(i=1; i<m; i++)
{
cout<<endl;
for(j=1; j<n; j++)
cout<<a[i][j]<<"";
}
getch();
}[CODE]

Последний раз редактировалось Azzzza; 26.04.2011 в 17:52.
Azzzza вне форума Ответить с цитированием
Старый 28.04.2011, 21:03   #2
blacktener
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 78
По умолчанию вот

вот на тебе мое решение этой задачи с одним нюансом - я закручиваю спираль против часовой стрелки. То есть тебе надо разобратся в алгоритме и переделать в другую сторону.

Код:
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
 const int MAXX = 9;
 const int MAXY = 9;
 int A[MAXX][MAXY];
 int maxx = MAXX-1;
 int maxy = MAXY-1;
 int minx = 0;
 int miny = 0;
 int counter = 1;
 
 while (maxx>=minx && maxy>=miny)
 {
  for (int i=minx;i<=maxx;i++)
   A[i][maxy] = counter++;
  for (int i=maxy-1;i>=miny;i--)
   A[maxx][i] = counter++;
  for (int i=maxx-1;i>=minx;i--)
   A[i][miny] = counter++;
  for (int i=miny+1;i<maxy;i++)
   A[minx][i] = counter++;
  maxx--;
  maxy--;
  minx++;
  miny++;
 }
 for (int j=0;j<MAXY;j++)
 {
  for (int i=0;i<MAXX;i++)
  cout << setw(3) << A[i][j];
  cout << endl;   
 }
 system("PAUSE");
 return 0;   
};
blacktener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите причину не работоспособности программы Drago56 Общие вопросы C/C++ 14 17.12.2010 15:01
Найдите причину не работоспособнности программы Drago56 Общие вопросы C/C++ 1 16.12.2010 15:44
не могу найти обьяснение в строчке программы vb Юлия-студентка Помощь студентам 7 25.06.2010 11:02
не могу найти как нажать мышку из программы skeletishe Общие вопросы Delphi 5 26.03.2009 20:36
помогите найти причину ошибки! НиКС БД в Delphi 3 10.05.2007 15:55