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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 19:18   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
как сделать сдвиг вниз.
Никак. У тебя нет матрицы. У тебя одномерный массив, у него только одна степень свободы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2012, 21:01   #12
Nekro95
Пользователь
 
Регистрация: 20.09.2012
Сообщений: 18
По умолчанию

Мне дали задание я не пойму, как его сделать помогите.
Nekro95 вне форума Ответить с цитированием
Старый 07.11.2012, 22:31   #13
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Матрица - таблица MxN, заполненная элементами определённого типа (для конкретики возьмём double). Проще всего её реализовать как надстройку над двумерным массивом:
Код:
class Matrix {
  private double[,] m_data;//Данные
}
Как любому пользовательскому типу, матрице нужен конструктор. Простейшая версия принимает только размеры:
Код:
public Matrix(int rows, int columns){
  m_data = new double[rows, columns]; //Порядок здесь - наше решение, можно и наоборот.
  //Но теперь, как только мы сделали выбор, надо запомнить: первое измерение - число строк, второе - столбцов
}
Далее, нам хотелось бы иметь возможность обращаться к элементам матрицы так же, как если бы она была двумерным массивом. Это делается с помощью индексатора. Обратите внимание на порядок аргументов:
Код:
public double this[int row, int column]{
  get { return m_data[row, column]; }
  set { m_data[row, column] = value; }
}
Полезно также "показать наружу" ширину и высоту матрицы:
Код:
public int Width { get { return m_data.GetLength(1); } }//Число столбцов
public int Height { get { return m_data.GetLength(0); } }//Число строк
Затем, хорошо бы уметь превращать нашу матрицу в текстовую строку (для вывода на печать, например). Для этого нужно переопределить имеющийся у каждого объекта метод ToString(). Вот один возможный вариант, не самый удачный:
Код:
public override string ToString(){
  StringBuilder ret = new StringBuilder();
  //Сначала по строкам:
  for(int i=0; i<Height; ++i){
    //Теперь по столбцам
    for(int j=0; j<Width; ++j){
      ret.Append(m_data[i,j].ToString()); ret.Append("   ");
    }
    //Закончили строку:
    ret.Append("\n");
  }
  return ret.ToString();
}
И, наконец, то, что нам предлагалось сделать:
Код:
//"Горизонтальная" прокрутка:
public void CycleColumns(int shift){
  //Мы поступим "в лоб": заведём ещё один такой же массив и перенесём в него
  //все значения, сдвигая их на ходу. Перерасход памяти, но меньше шансов запутаться
  double[,] other = new double[Height, Width];
  //А теперь по всем элементам
  for(int i=0; i<Height; ++i){
    for(int j=0; j<Width; ++j){
      //Внимание, фокус (постарайтесь понять, как он работает - он оказывается полезен тут и там):
      other[i,j] = m_data[i, (j + shift) % Width];
    }
  }
  //И под занавес, небрежным движением руки...
  m_data = other;
}
Аналогично можно написать CycleRows, только прибавлять и брать остаток надо от первого индекса (номера строки).
Abstraction вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемка с масивчиком - осуществить циклический сдвиг элементов матрицы (Delphi) Makspane Помощь студентам 2 08.05.2012 09:03
циклический сдвиг элементов массива Carter Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2011 19:54
Циклический сдвиг элементов столбца вниз в многомерном массиве. Corvette Общие вопросы C/C++ 2 07.09.2011 21:15
Массивы и циклический сдвиг элементов CHESTER_ROB Общие вопросы C/C++ 5 23.11.2010 13:46
C++.циклический сдвиг элементов квадратной матрицы arsalan Помощь студентам 1 11.05.2010 08:08