Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с С# дана матрица m*n, дана матрица m*n поменять местами столб 
:(
    Опции темы
ChildOfLight
Дата 11.11.2011, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



дана матрица m*n  поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементыюЕсли таких столбцов нет,то вывести матрицу без изменений
PM MAIL   Вверх
Fortnox
Дата 12.11.2011, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

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



Тема для Центра помощи
Код

    class Matrix
    {
        public int N { get; private set; }
        public int M { get; private set; }
        private int[,] _matrix;
        
        public Matrix(int n, int m)
        {
            N = n;
            M = m;
            _matrix = new int[n,m];
        }

        public void Fill()
        {
            for (int i = 0; i <= N - 1; ++i)
            {
                for (int j = 0; j <= M - 1; ++j)
                {
                    while (true)
                    {
                        Console.Write("Enter a[{0}][{1}]: ", i, j);
                        int result = 0;
                        if (int.TryParse(Console.ReadLine(), out result))
                        {
                            _matrix[i, j] = result;
                            break;
                        }
                        else
                            Console.Write("Sorry, this is not a number");
                    }
                }
            }
        }

        public void Print()
        {
            for (int i = 0; i <= N - 1; ++i)
            {
                for (int j = 0; j <= M - 1; ++j)
                {
                    Console.Write("{0} ", _matrix[j,i]);
                }
                Console.WriteLine();
            }
        }

        public void DoWork()
        {
            for (int i = 0; i <= M - 1; ++i)
            {
                if (_matrix[i, 0] < 0 || _matrix[M - 1, i] < 0)
                {
                    Print();
                    return;
                }
            }

            // swap
            for (int i = 0; i <= N - 1; ++i)
            {
                for (int j = 0; j <= M - 1; ++j)
                {
                    int tmp = _matrix[0, i];
                    _matrix[0, i] = _matrix[M - 1, i];
                    _matrix[M - 1, i] = tmp;
                }
            }
            Print();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Matrix matrix = new Matrix(3,3);
            matrix.Fill();
            matrix.Print();
            matrix.DoWork();
            Console.ReadLine();
        }
    }

PM MAIL   Вверх
EgoBrain
Дата 12.11.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот еще пример, но он с графикой  smile
FrameWork 4.0
Код Form1.cs
Код

//------------------------------------------------------------------------------------------------------------------------------//
//--Программа для работы с матрицей размерностью m*n, содержащей целочисленные значения типа int.-------------------------------//
//--Вычислить столбец начиная со второго, который имеет только положительные элементы. Если таковой существует,-----------------//
//--поменять местами с первым столбцом.-----------------------------------------------------------------------------------------//
//--ПРИМЕЧАНИЕ: В данном алгоритме для хранения матрицы используется отдельная переменная - двумерный массив,-------------------//
//--но можно обойтись без нее, и брать значения из ячеек DataGridView.----------------------------------------------------------// 
//--Все равно в любом случае необходима проверка типа данных содержания ячеек---------------------------------------------------//
//------------------------------------------------------------------------------------------------------------------------------//
public partial class Form1 : Form
    {
        private int[,] matrix2D;
        
        public Form1()
        {
            InitializeComponent();
        }

        private void MatrixInitialize()
        {
            try
            {
                if (matrix2D == null)
                    matrix2D = new int[(int)numericUpDown1.Value, (int)numericUpDown2.Value];
                else
                {
                    matrix2D.Initialize();
                    matrix2D = null;
                    matrix2D = new int[(int)numericUpDown1.Value, (int)numericUpDown2.Value];
                }

                dataGridView1.Columns.Clear(); dataGridView1.Rows.Clear();

                for (int i = 0; i < numericUpDown1.Value; ++i)
                {
                    dataGridView1.Columns.Add("Column" + (i + 1).ToString(), "i" + (i + 1).ToString());
                    dataGridView1.Columns[i].Width = 35;
                }

                Random rnd = new Random();

                for (int j = 0; j < numericUpDown2.Value; ++j)
                {
                    dataGridView1.Rows.Add();

                    foreach (DataGridViewCell cell in dataGridView1.Rows[j].Cells)
                    {
                        cell.Value = rnd.Next(-100, 100);
                        matrix2D[cell.ColumnIndex, j] = (int)cell.Value;
                    }
                }

                rnd = null;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Приложение вызвало критическую ошибку!\n\r" + ex.Message +
                    "\n\rВ результате чего будет закрыто.", "Критическая ошибка",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            numericUpDown1.Maximum = int.MaxValue;
            numericUpDown2.Maximum = int.MaxValue;

            MatrixInitialize();            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MatrixInitialize();
        }

        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.CurrentCell.Value != null && dataGridView1.CurrentCell.Value != string.Empty)
            {
                string value = dataGridView1.CurrentCell.Value.ToString();

                int result = 0;

                int.TryParse(value, out result);
                dataGridView1.CurrentCell.Value = result;
            }
            else
                dataGridView1.CurrentCell.Value = 0;

            int.TryParse(dataGridView1.CurrentCell.Value.ToString(),
                out matrix2D[dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex]);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int positiveColNum = 0;
            int[] buffMas = new int[matrix2D.GetLength(1)];

            for (int i = 1; i < matrix2D.GetLength(0); ++i)
            {                
                //MessageBox.Show("Рассматривается столбец № " + i.ToString());
                for(int j = 0; j < matrix2D.GetLength(1); ++j)
                {                    
                    // MessageBox.Show("Рассматривается строка № " + j.ToString());
                    if (matrix2D[i, j] > 0) 
                    {                        
                        if (j == matrix2D.GetLength(1) - 1)
                            positiveColNum = i;
                    }
                    else
                    {
                        //MessageBox.Show("Найден отрицательный элемент matrix2D[" + i.ToString() + ", " + j.ToString() + "] = " +
                        //    matrix2D[i, j].ToString());
                        break;
                    }
                    buffMas[j] = matrix2D[i, j];
                }
            }

            if (positiveColNum > 0)
            {
                for (int i = 0; i < matrix2D.GetLength(1); ++i)
                {
                    matrix2D[positiveColNum, i] = matrix2D[0, i];
                    matrix2D[0, i] = buffMas[i];
                }
            }

            foreach(DataGridViewRow row in dataGridView1.Rows)
                foreach(DataGridViewCell cell in row.Cells)
                    cell.Value = matrix2D[cell.ColumnIndex, cell.RowIndex];
            //MessageBox.Show(positiveColNum.ToString());
        }
    }



Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  m_by_n.rar 43,30 Kb
PM MAIL ICQ Skype   Вверх
EgoBrain
Дата 12.11.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Exe-ник:


Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  m_by_n.exe 13,00 Kb
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




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


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

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