Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение матрицы, помогите решить задачу 
:(
    Опции темы
Немфоманка
  Дата 10.2.2005, 17:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Матрицу A(m,n) заполнить следующим образом. Елементу a(k,l) присвоить значение 1; елементам, окружающим его, - значение 2; елементам следующего круга значение 3 и т. д. до заполнение всей матрицы.
smile
  Вверх
DENNN
Дата 10.2.2005, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Сколько денег? smile
P.S. в нике вторая буква должна быть "и"
PM ICQ   Вверх
НЕмфоманка
Дата 11.2.2005, 13:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(DENNN @ 10.2.2005, 18:21)
P.S. в нике вторая буква должна быть "и"

Какая "и"?? Я что тебе нимфоманка чтоли? smile
Мне кто-нить поможет??
  Вверх
Akina
Дата 11.2.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Код

for i=1 to m
  for j=1 to n
     a(i,j)=(abs(k-i)+abs(l-j))/2+abs(abs(k-i)-abs(l-j))/2+1
  next j
next i


Цитата
Мне кто-нить поможет??

нет




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
azesmcar
Дата 11.2.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Если ты волновой алгоритм пишешь то задача не совсем верна...надо заполнять до тех пор пока финиш не покроется...т.е. перестанет быть нулем...а так будет медленее но заполняться будет до краев...

Код

#include <stdio.h>
#include <string.h>

const int n = 10;
const int m = 10;

bool filled( int a[n][n] )
{
   for ( int i = 0; i < n; ++i )
   {
       for ( int j = 0; j < m; ++j )
       {
           if ( a[i][j] == 0 )
           {
               return false;
           }
       }
   }
   return true;
}

void vset( int a[n][m], int i, int j )
{
   int v = a[i][j] + 1;
   if ( i - 1 >= 0 && a[i - 1][j] == 0 ) a[i - 1][j] = v;
   if ( j - 1 >= 0 && a[i][j - 1] == 0 ) a[i][j - 1] = v;
   if ( i + 1 < n && a[i + 1][j] == 0 ) a[i + 1][j] = v;
   if ( j + 1 < m && a[i][j + 1] == 0 ) a[i][j + 1] = v;
}

void fill( int a[n][m], int si, int sj )
{
   vset(a, si, sj);
   int v = a[si][sj] + 1;
   while ( !filled( a ) )
   {
       for ( int i = 0; i < n; ++i )
       {
           for ( int j = 0; j < m; ++j )
           {
               if ( a[i][j] == v )
               {
                   vset( a, i, j );
               }
           }
       }
       ++v;
   }
}

int main()
{
   int a[n][m];
   memset( a, 0, n * m * sizeof( int ) );
   a[0][0] = 1;
   fill( a, 0, 0 );
   for ( int i = 0; i < n; ++i )
   {
       for ( int j = 0; j < n; ++j )
       {
           printf( "%d    ", a[i][j]);
       }
       printf("\n");
   }
}

PM   Вверх
Немфоманка
Дата 13.2.2005, 00:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо!

Цитата(Akina @ 11.2.2005, 14:33)
Мне кто-нить поможет?? 

нет

Тю, сама помогла, а пишешь нет

  Вверх
faost
Дата 14.2.2005, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 5.11.2004

Репутация: нет
Всего: 2



Ой-ой-ой, какие у вас страшные решения ))
Мне кажется, что я нашел более лаконичное и быстрое решение:

Код

#include <iostream.h>
#include <iomanip.h>

#define max(a, b) ((a) > (b) ? (a) : (b))

void main()
{
int **a;
int i, j;
int n;

cin >> n;
a = new int * [n];

for (i = 0; i < n; i++)
{
 a[i] = new int [n];
 for (j = 0; j < n; j++)
 {
  a[i][j] = max(i, j) + 1;
  cout << setw(3) << a[i][j];
 }
     cout << endl;
}
}



--------------------
Если у вас нет проблем, значит вы уже умерли
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.