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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 23:35   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Natok, опишу идею, что я хотел сделать.
У вас, если выполняется условие, ячейке [i,j] присваивается значение другой ячейки. И, например, если до этого в ней была единица, а в соседней (на которую заменяем) ноль, то мы теряем значение.

Поэтому нужно именно обменивать ячейки.

Странно. По идее, не должны теряться значения.
А у вас там больше нигде никто никого не съедает, случайно? Скажем, волки волков )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.05.2009, 23:45   #12
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
По умолчанию

нет, уже всё внимательно просмотрела))) никто никого не ест...

да я понимаю Ваш алгоритм, спасибо!
Natok вне форума Ответить с цитированием
Старый 30.05.2009, 00:02   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Мне кажется, что проблема все-таки не в функции.
Переписал на C++.

Создал динамический массив 5 на 5 и заполнил вручную как у вас в предпоследнем посте.
Потом вызвал фунцию.
Вот результат:
Код:
===========
  0  1  0  1  1
  2  0  0  0  0
  0  0  0  1  1
  2  0  0  2  0
  0  2  0  0  2
---------
  0  0  0  0  1
  0  0  1  1  1
  0  0  2  0  0
  2  0  0  2  1
  0  2  0  2  0
---------
Ничего не потерялось.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.05.2009, 00:14   #14
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот еще на шарпе накидал. Аналогично - ничего не теряется.
Код:
namespace natok3
{
	class Program
	{
		
		public static void mprint(int[,] mas, int N)
		{
			for(int i=0; i<N; i++)
			{
				for(int j=0; j<N; j++)
				Console.Write(mas[i,j].ToString());
				Console.WriteLine();
			}
			Console.WriteLine();	
		}
		
       static int[,] getShuffle(int[,] m, int right, int up, int r) 
        {
            int[,] rez = new int[r, r];

            for(int i=0; i<r; i++)
             for(int j=0; j<r; j++)
               rez[i, j] = m[i, j];
            for (int i = 0; i < r; i++)
            {
                for (int j = 0; j < r; j++)
                {
                    if (i + up < r && i + up > 0 && j + right < r && j + right > 0)
                    {
                     int tmp = rez[i, j]; 
                     rez[i, j] = rez[i + up, j + right];
                     rez[i + up, j + right] = tmp;
                     }
   
                }
            }
            return rez;
        }
		
		public static void Main(string[] args)
		{
			const int N=5;
			int[,] mas = new int[N,N];
			int i,j;
			
			for(i=0; i<N; i++)
				for(j=0; j<N; j++)
				mas[i,j] = Convert.ToInt32(Console.ReadLine());
			
			Console.WriteLine();
			mprint(mas,N);
			mas = getShuffle(mas,1,1,N);
			mprint(mas,N);
			
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
Код:
01011
20000
00011
20020
02002

00001
00111
00200
20021
02020
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.05.2009, 00:28   #15
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
Смех

да, действительно! я тоже попробовала в другой программе только менять местами и ЗАРАБОТАЛО!
круто=)))
спасибо оченннннь!

и что делать с такой невнимательностью...
Natok вне форума Ответить с цитированием
Старый 30.05.2009, 01:22   #16
Natok
Пользователь
 
Аватар для Natok
 
Регистрация: 17.05.2009
Сообщений: 85
Смех

ето чтоб обмен был случайным. работает!


Код:
public partial class Form1 : Form
    {
        int[,] m;
        Random r1, r2;
        

        public Form1()
        {
            InitializeComponent();
            r1 = new Random();
            r2 = new Random();
            
        }

       static private  int[,] getShuffle(int[,] m, int r) 
        {
            int[,] rez = new int[r, r];
            for(int i=0; i<r; i++)
             for(int j=0; j<r; j++)
               rez[i, j] = m[i, j];
            int right=0, rright=0;
            int up=0, rup=0;
            for (int i = 0; i < r; i++)
            {
                for (int j = 0; j < r; j++)
                { //int rup ;
                    rup = r1.Next(-1, 2);
                    
                    rright=r2.Next(-1, 2);
                    up = rup;
                    right = rright;

                    if (i + up < r && i + up > 0 && j + right < r && j + right > 0)
                    {
                     int tmp = rez[i, j]; 
                     rez[i, j] = rez[i + up, j + right];
                     rez[i + up, j + right] = tmp;
                     }
   
                }
            }
            return rez;
        }
Natok вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать что б в програме рандом выводил отрицательные елементы?он выводит токо 0,2...0,8 короче до 1 innaa639 Помощь студентам 5 28.05.2009 12:26
Перенести общие елементы двух массивов в другой. leshax Общие вопросы C/C++ 1 04.02.2009 20:57
Есть масив а[i,j] (10х10), все елементы которого равны 0, т.е нулевая матрица, как воплотить в программе? alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 2 10.12.2008 00:08
Копирование VVVasek Microsoft Office Excel 13 20.09.2008 23:12
считать елементы файла в массив XfighT Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.01.2008 16:35