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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 11:49   #1
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

Нужно заполнить матрицу размера n натуральными числами (1,2,3...). По периметру заполнил, а как дальше понять не могу...

Код:
#include <iostream.h>
#include <conio.h>
#include <new.h>

class spiral
{
	 private:
			int i,j;           //Счетчики элементов массива
			int n;             //Размер массива
			int **a;           //Массив указателей
	 public:
			spiral (int m);    //Конструктор
			~spiral ();        //Деструктор
			void obr ();       //Функция обработки массива
			void output ();    //Функция вывода элементов массива на экран
};

spiral :: spiral (int m)
{
	 n=m;                  //Присваивание локальной переменной размер массива
	 a=new int *[n];       //Выделение памяти в ОЗУ для строк массива
	 for (i=0;i<n;i++)
			a[i]=new int [n];  //Выделение памяти в ОЗУ для столбцов массива
	 for (i=0;i<n;i++)
			for (j=0;j<n;j++)
				 a[i][j]=0;
}

spiral :: ~spiral ()
{
	 for (i=0;i<n;i++)
			delete []a[i];     //Удаление из ОЗУ столбцов массива
	 delete []a;           //Удаление из ОЗУ строк массива
}

void spiral :: obr ()
{
	 int k=1;               //Счетчик натуральных чисел
			for (j=0;j<n;j++)
				 a[0][j]=k++;     //Заполнение первой строки
			for (i=1;i<n;i++)
				 a[i][n-1]=k++;   //Заполнение последнего столбца
			k+=n-2;
			for (j=0;j<n-1;j++)
				 a[n-1][j]=k--;   //Заполнение последней строки
			k+=n+1;
			for (i=1;i<n-1;i++)
				 a[i][0]=k--;     //Заполнение первого столбца
}
void spiral :: output ()
{
	 cout<<"Полученный массив:"<<endl;
	 for (i=0;i<n;i++)
	 {
			cout<<"\t\t";
			for(j=0;j<n;j++)
			if (a[i][j]<10)
				 cout<<"0"<<a[i][j]<<" ";
			else cout <<a[i][j]<<" ";
			cout<<endl;
	 }
}

int main ()
{
	 clrscr();
	 int m;
	 cout<<"Введите размер массива ";
	 cin>>m;
	 spiral mas (m);   //Создание объекта класса spiral
	 mas.obr ();
	 mas.output ();
	 getch();
	 return 0;
}

Последний раз редактировалось Stilet; 03.05.2010 в 11:57.
kloffelin вне форума Ответить с цитированием
Старый 03.05.2010, 12:20   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Код:
#include <iostream>
using namespace std;
 
int main()
{
int const n=11;
 int A[n][n];
 int i=1,j,k,p=n/2;
 for(k=1;k<=p;k++)/*Цикл по номеру витка*/
 {
 for (j=k-1;j<n-k+1;j++) 
     A[k-1][j]=i++;/*Определение значений верхнего горизонтального столбца*/ 
 for (j=k;j<n-k+1;j++) 
     A[j][n-k]=i++;/* --//-- По правому вертикальному столбцу*/
 for (j=n-k-1;j>=k-1;--j) 
     A[n-k][j]=i++;/* --//-- по нижнему горизонтальному столбцу*/ 
 for (j=n-k-1;j>=k;j--) 
     A[j][k-1]=i++;/* --//-- по левому вертикальному столбцу*/
 }
 if (n%2==1) 
     A[p][p]=n*n;
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  {
   printf(" %4d ",A[i][j]);
   if(j==n-1) 
     printf("\n");
  }   
}
Давно нашел на каком-то форуме, посмотрите.
MaTBeu вне форума Ответить с цитированием
Старый 03.05.2010, 12:33   #3
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

спасибо.
а че делает using namespace std; ? много раз встречал, а на учебе нам не говорили про такой...
kloffelin вне форума Ответить с цитированием
Старый 03.05.2010, 13:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
че делает using namespace std; ?
http://yandex.ua/yandsearch?date=&te...nd=5681&lr=187
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2010, 13:37   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

В этом коде - ничего. По привычке добавил.
А вообще этот код подключает пространство имен std, в котором находятся cin, cout, string и так далее, чтобы не нужно было перед каждым из этих слов писать к какому пространству имен они относятся (типа std::string)
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить матрицу по спирали (turbo pascal) cL1zMa Помощь студентам 8 16.05.2020 12:00
Заполнить элементами таблицу, располагая их по спирали SaimaN Помощь студентам 0 17.03.2010 18:22
Матрицу K(m,n) заполнить следующим образом farrrell Фриланс 4 20.02.2010 22:10
Заполнить матрицу ЛП, от левого верхнего угла по диагонали: вправо - вверх. O.G.O Общие вопросы C/C++ 4 11.06.2009 01:10
Заполнить матрицу линейной последовательностью Настенька..Блонди Помощь студентам 5 05.02.2009 20:53