Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Angeses
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 29
#1

В каждой строке удалить максимальный элемент - C#

03.03.2014, 14:25. Просмотров 403. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста. Задача по двумерному массиву, а я в них еще не работала. Подскажите алгоритм действий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2014, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В каждой строке удалить максимальный элемент (C#):

Найти максимальный элемент в каждом столбце и минимальный элемент в каждой строке и заменить их нулями - C#
ребята, помогите пожалуйста, нужно задать двумерный массив(пользователем вводится кол-во столбцов и строк и сами элементы массива). найти...

Найти максимальный элемент и его индексы в каждой строке массива - C#
Помогите сделать задание: Дан массив А( N,M). Найти максимальный элемент и его индексы в каждой строке массива.

В каждой строке поменять местами первый элемент и максимальный по модулю. - C#
В каждой строке поменять местами первый элемент и максимальный по модулю.

Найти максимальный элемент в каждой строке и записать данные в новый массив - C#
Для каждой строки подсчитать количество элементов, больших заданного числа, и записать данные в новый массив. Замечание. Для хранения...

Найти максимальный и минимальный элемент в каждой строке и столбце матрицы и вывести на экран - C#
Есть двумерный массив размера m на n. Нужно найти максимальный и минимальный елемент в каждом рядке и столбике и вывести на екран... ...

Дана матрица К(m, n). Найти максимальный элемент в каждой строке и заменить его заданным числом - C#
«Дана матрица К(m,n,) найти максимальный элемент в каждой строке и заменить его заданным числом

4
Jack Wade
63 / 36 / 6
Регистрация: 24.02.2013
Сообщений: 250
03.03.2014, 23:32 #2
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Int32[,] mas = new Int32[10, 10];
            Random random = new Random();
            for (int i = 0; i < 10; i++)
                for (int j = 0; j < 10; j++) mas[i, j] = random.Next(1, 100);
            Int32[] maxN = new Int32[2];// = 0
            Int32 maxC = new Int32();// = 0
            maxN[0] = 0;
            maxN[1] = 0;
            maxC = mas[0,0];//Допустим, первый элемент, наибольшой
            for (int i=0; i<10; i++)
                for (int j = 0; j < 10; j++) 
                    if (mas[i, j] > maxC)
                    {
                        maxC = mas[i, j];
                        maxN[0] = i;
                        maxN[1] = j;
                    }
            for (int i=0; i<10; i++)
            {
                for (int j=0; j<10; j++) Console.Write(mas[i,j] + " ");
                Console.WriteLine("\n");
            }
            //Удалить элементы в двухм. массиве-нельзя(по крайней мере-Я не знаю как)..
            //Т.к. длинна каждой строки должна быть-одинаковой...
            //По этому-просто отобразим найденное число
            Console.WriteLine("X = " + (maxN[1]+1) + "\nY = " + (maxN[0]+1) + "\n" + maxC);
            Console.ReadKey();
        }
    }
}

Удалять 1 элемент в двухмерном массиве-невозможно, т.к. двухмерный массив не может хранить хотя бы 1 строку, отличную от других по размерности(как и столбец)...

Добавлено через 4 минуты
Angeses, можно было бы выложить и само задание, так бы, можно было помочь на конкретном примере.

Добавлено через 23 минуты
Просто, смотрите что получается:
Мы пытаемся просто изменить размерность 1 строки, но это-невозможно.
Конечно, как вариант, создать ещё один схожий двухм. массив с размерностью каждой строки -1(т.е. в оригинале 10, а здесь 9).
Код будет примерно такой:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Int32[,] original = new Int32[4, 4];
            Int32[,] final = new Int32[4, 3];
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++) original[i, j] = Convert.ToInt32(Console.ReadLine());
            Console.Clear();
            for (int i = 0; i < 4; i++)
                Console.WriteLine("{0} {1} {2} {3}", original[i, 0], original[i, 1], original[i, 2], original[i, 3]);
            Console.WriteLine("---");
            for (int i = 0; i < 4; i++)
            {
                Int32 n = 0;
                Int32 max = original[i, 0];
                Int32 p = 0;
                for (int j = 0; j < 4; j++) if (original[i, j] > max) { max = original[i, j]; n = j; }
                for (int j = 0; j < 4; j++) if (j != n) final[i, p++] = original[i, j];
            }
            for (int i = 0; i < 4; i++)
                Console.WriteLine("{0} {1} {2}", final[i,0], final[i,1], final[i,2]);
            Console.ReadKey();
            //Заменяем старый двухм. массив новым
            original = final;
        }
    }
}
0
Angeses
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 29
04.03.2014, 08:14  [ТС] #3
Там надо удалить максимальный элемент из каждой строки
0
Kruds
691 / 691 / 106
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
04.03.2014, 09:44 #4
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static void Main(string[] args)
{
    int[,] matrix = { { 1, 2, 3, 4 }, { 5, 8, 7, 6 }, { 9, 10, 12, 11 }, { 16, 14, 15, 13 } };
    int[,] res = DeleteMaxInEachRow(matrix);        
}
 
static T[,] DeleteMaxInEachRow<T>(T[,] matrix) where T : IComparable<T>
{
    int rows = matrix.GetLength(0), cols = matrix.GetLength(1);
    if (matrix.Length == 0)
        throw new ArgumentException("Empty array");
    if (cols == 1)
        return new T[rows, 0];
    T[,] result = new T[rows, cols - 1];
    for (int i = 0; i < rows; i++)
    {
        int maxIndex = 0;
        for (int j = 0; j < cols; j++)
            if (matrix[i, j].CompareTo(matrix[i, maxIndex]) == 1)
                maxIndex = j;
        for (int j = 0, k = 0; j < cols; j++, k++)
            if (j == maxIndex)
                k--;
            else
                result[i, k] = matrix[i, j];
    }
    return result;
}
0
Angeses
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 29
04.03.2014, 22:30  [ТС] #5
Попробовала сама составить код, вот что получилось. Подскажите пожалуйста, где ошибки.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void task3(ref int[,] b)
        {
            int imax = 0, jmax = 0;
            for (int j = 0; j < b.GetLength(1); j++){
            for (int i = 0; i < b.GetLength(0); i++){
                if (b[i, j] > b[imax, jmax])
                    imax = i; jmax = j; 
                if (imax == -1 || jmax == -1)
                    break;
            }
            for (int i = imax + 1; i < b.GetLength(0); i++)
                if (b[i, j] > 0 && b[i, j] > b[imax, jmax])
                {
                    imax = i; jmax = j;
                }
            for (int i = imax; i < b.GetLength(0) - 1; i++)
                b[i, j] = b[i + 1, j];
                }
            }
0
04.03.2014, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2014, 22:30
Привет! Вот еще темы с ответами:

В двумерном массиве найти в каждой строке максимальный элемент, затем среди этих чисел выбрать минимальный - C#
Напечатать те слова, которые встречаются в каждом из двух заданных предложений. Задачу выполнить двумя способами задания строк: массив типа...

Найти минимальный элемент в каждой строке и среднее значение каждой строки матрицы - C#
Нужно что бы программа искала мин. элемент в каждой строке и среднее значение каждой строки. using System; using...

В каждой строке матрицы поменять местами наибольший элемент и элемент на побочной диагонали - C#
Найти в каждой строке наибольший элемент и поменять его местами с элементом побочной диагонали.

Найти в каждой строке матрицы максимальный и минимальный элементы и переместить их - C#
Дана матрица F(N,M). Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.