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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 21:46   #1
edikesh
Пользователь
 
Регистрация: 22.11.2011
Сообщений: 25
По умолчанию C# Дана матрица А[m,n].Удалить из неё столбец, содержащий максимальное число чётных элементов.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("ввести число строк m");
            int m = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("ввести число столбцов n");
            int n = Convert.ToInt32(Console.ReadLine());
            int[,] mas = new int[m, n];
            Random rand = new Random();
            int[,] a = new int[m, n];

            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    mas[i, j] = rand.Next(0, 1000);
                }

            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(mas[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.11.2011 в 08:28.
edikesh вне форума Ответить с цитированием
Старый 22.11.2011, 22:41   #2
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

Перед
Код:
Console.ReadKey();
напиши вот это:
Код:
            int[] kolvo = new int[n];//массив для кол-ва четных значений в столбце
            for (int j = 0; j < n; j++)
            {
                for (int i = 0; i < m; i++)
                {
                    if (mas[i, j] % 2 == 0) kolvo[j]++;//если делится нацело на 2, то увеличиваем значение в массиве
                }
                Console.Write(kolvo[j] + " ");//вывод для проверки
            }
            for (int i = 0; i < kolvo.Length; i++) 
            {
                if (kolvo[i] == kolvo.Max()) //если данный столбик содержит макс значение четных чисел, то удаляем
                {
                    for (int j = 0; j < n; j++)
                    {
                            mas[j, i] = 0;//удаление(замена на 0)
                    }
                    break;//удалит только первый столбик с максимальным значением, иначе удалит все столбики с одинаковым макс значением 
                }
            }
Если помог, жми спасибо

Последний раз редактировалось G-Kyller; 22.11.2011 в 22:45.
G-Kyller вне форума Ответить с цитированием
Старый 22.11.2011, 23:33   #3
edikesh
Пользователь
 
Регистрация: 22.11.2011
Сообщений: 25
По умолчанию

а почему в результате строка получается,а не матрица?
edikesh вне форума Ответить с цитированием
Старый 23.11.2011, 05:52   #4
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

Строка там не получается, там так и остается матрица, для проверки в конце еще раз напишите
Код:
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(mas[i, j] + " ");
}
Console.WriteLine();
}
Если помог, жми спасибо
G-Kyller вне форума Ответить с цитированием
Старый 23.11.2011, 06:11   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Саня, а ты уверен что (обнуление == удаление)? :-D
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 23.11.2011, 06:24   #6
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

Раздел - "Помощь студентам". Я лишь помогаю, как надо - сами доделают
Если помог, жми спасибо
G-Kyller вне форума Ответить с цитированием
Старый 23.11.2011, 15:52   #7
edikesh
Пользователь
 
Регистрация: 22.11.2011
Сообщений: 25
По умолчанию

в этом и проблема. как вообще стоки удаляются?
edikesh вне форума Ответить с цитированием
Старый 23.11.2011, 16:45   #8
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

Цитата:
как вообще стоки удаляются?
Задаем себе вопрос: "А оно мне надо?"
Если нет, то есть Array.Resize(), но работает только с одномерными массивами. Принцип работы: создается новый массив, в него копируются данные из старого, старый массив изменяет размерность, данные возвращаются, новый массив удаляется.
5 минут и свой Array.Resize() для двумерных массивов готов.
Как говорится - дешево и сердито.
Это просто вариант решения, не нравится - ищите другой.
Если помог, жми спасибо
G-Kyller вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица размера MxN и целое число К(1<K<M). Удалить строку матрицы с номером К bolshe_ne_RUS Паскаль, Turbo Pascal, PascalABC.NET 6 14.06.2011 16:26
дана матрица порядка m на n. Вставить в данную матрицу столбец с номером K Aktor1992 Паскаль, Turbo Pascal, PascalABC.NET 1 13.04.2011 12:24
Дана матрица А(6,5). Составить массив, содержащий максимальные элементы каждого столбца. caen21rus Общие вопросы C/C++ 6 27.05.2009 17:06
Дана матрица символов. Определить строку, в которой максимальное количество букв. SilentM Помощь студентам 9 23.05.2009 14:30