Загрузка...

Как поменять местами строку со столбцом?

Тема в разделе C# создана пользователем FXT 14 дек 2022. 128 просмотров

Загрузка...
  1. FXT
    FXT Автор темы 14 дек 2022 17 30 июн 2018

    private void button1_Click(object sender, EventArgs e)
    {
    tbAnswer.Text = "";

    if (tbN.Text == "" || tbM.Text == "" || tbP.Text == "")
    {
    MessageBox.Show("Вы ввели некорректные данные", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    else
    {
    int n = Convert.ToInt32(tbN.Text);
    int m = Convert.ToInt32(tbM.Text);
    int p = Convert.ToInt32(tbP.Text);

    if (p >= n)
    {
    MessageBox.Show("Вы ввели некорректные данные", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    else
    {
    int newM = 0;
    int[][] arrayMatrix = new int[n][];

    for (int i = 0; i < arrayMatrix.Length; i++)
    {
    arrayMatrix[i] = ParseStringToInt(tbStr.Text, m, ref newM);
    }

    int sum = 0;
    int[] sumArray = new int[n];

    for (int i = 0; i < arrayMatrix.Length; i++)
    {
    for (int j = 0; j < arrayMatrix[i].Length; j++)
    {
    sum += arrayMatrix[i][j];
    }
    sumArray[i] = sum;
    sum = 0;
    }

    int max = sumArray[0];
    int maxI = 0;

    for (int i = 1; i < sumArray.Length; i++)
    {
    if (sumArray[i] > max)
    {
    max = sumArray[i];
    maxI = i;
    }
    }
    int[] tepm = arrayMatrix[p];
    arrayMatrix[p] = arrayMatrix[maxI];
    arrayMatrix[maxI] = tepm;

    for (int i = 0; i < arrayMatrix.Length; i++)
    {
    for (int j = 0; j < arrayMatrix[i].Length; j++)
    {
    tbAnswer.Text += $"{arrayMatrix[i][j]} ";
    }
    }
    }
    }
    }

    Имеется задание поменять местами строку с номером p и столбец с максимальной суммой элементов в матрице n x m. Реализовал данное задание, но меняется местами строка со строкой. Не могу понять как исправить.
     
  2. FXT
    FXT Автор темы 14 дек 2022 17 30 июн 2018

    int[] temp = new int[arrayMatrix.Length];
    for (int i = 0; i < arrayMatrix.Length; i ++)
    {
    temp[i] = arrayMatrix[p][i];
    arrayMatrix[p] [i] = arrayMatrix[i] [maxJ];
    arrayMatrix[i] [maxJ] = temp[i];
    }
     
    1. vtlstolyarov
      FXT, а как ты себе вообще представляешь себе поменять местами строку и столбец в не-квадратной матрице?
      например поменяй мне местами первую строку и первый стобец в следующей матрице

      1 2 3
      4 5 6
    2. FXT Автор темы
      vtlstolyarov, Я реализовал это код выше
    3. vtlstolyarov
      FXT, ты мне цифры переставь в той матрице что я тебе написал, так чтобы поменять первую строку и первый столбец.
Top