115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
1

Задание по прямоугольной матрице

16.07.2013, 15:43. Показов 1183. Ответов 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System;
 
//Дана целочисленная прямоугольная матрица. Определить
// - количество строк, не содержащих ни одного нулевого элемента
// - максимальное из чисел, встречающихся в заданной матрице более одного раза.
 
namespace Matrix1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите размерность матрицы");
            Console.Write("Введите количество строк матрицы n = ");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите количество столбцов матрицы m = ");
            int m = Convert.ToInt32(Console.ReadLine());
            int[,] mas = new int[n, m];
            FillMatrix(ref mas, n, m);
            ShowMatrix(mas, n, m, "Исходная матрица");
            Check(mas, n, m);
            Find(mas, n, m);
 
            Console.ReadKey();
        }
 
        private static void FillMatrix(ref int[,] mas, int n, int m)
        {
            Random rand = new Random();
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    mas[i, j] = rand.Next(-100, 100);
                }
            }
        }
 
        private static void ShowMatrix(int[,] mas, int n, int m, string str)
        {
            Console.WriteLine(str);
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write(mas[i, j] + "\t");
                }
                Console.WriteLine();
            }
        }
 
        private static void Check(int[,] mas, int n, int m)
        {
            int count = 0;
            for (int i = 0; i < n; i++)
            {
                int k = 0;
                for (int j = 0; j < m; j++)
                {
                    if (mas[i, j] == 0) continue;
                    ++k;
                }
                if (k == m) ++count;
            }
 
            Console.WriteLine("Количество строк, не содержащих ни одного нулевого элемента, равно {0}", count);
        }
 
        private static void Find(int[,] mas, int n, int m)
        {
            int[] tempMas = new int[n * m];
            int count = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    tempMas[count] = mas[i, j];
                    ++count;
                }
            }
 
            Array.Sort(tempMas);
            Array.Reverse(tempMas);
            ShowMassiv(tempMas, "Отсортированный одномерный массив");
 
            int maxNum;
            bool flag = false;
            for (int i = 0; i < tempMas.Length - 1; i++)
            {
                if (tempMas[i] != tempMas[i + 1]) continue;
                maxNum = tempMas[i];
                Console.WriteLine("Максимальное из чисел, встречающееся два раза, равно " + maxNum);
                flag = true;
                break;
            }
            if (flag == false)
            {
                Console.WriteLine("В массиве нет чисел, встречающихся два раза.");
            }
        }
 
        //Вывод одномерного массива
        private static void ShowMassiv(int[] mas, string str)
        {
            Console.WriteLine(str);
            for (int i = 0; i < mas.Length; ++i)
            {
                Console.Write(mas[i] + " ");
            }
            Console.WriteLine();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2013, 15:43
Ответы с готовыми решениями:

Задача о прямоугольной матрице
Помогите пожалуйста Дана целочисленная прямоугольная матрица. Определить: • количество строк, не...

Перевести программу с Си++ на C#. Поиск в прямоугольной матрице
Помогите пожалуйста!!! условие: написать и протестировать ФУНКЦИЮ для нахождения в прямоугольной...

Составить подпрограмму определения минимальной характеристики в прямоугольной матрице.
Помогите пожалуйста Составить подпрограмму определения минимальной характеристики в прямоугольной...

Покажите на пальцах, что есть главная диагональ в прямоугольной матрице
Здравствуйте! Возьмем вот такую матрицу. Что тут есть диагональ? Заранее спасибо! 1 4 7 0 2...

2
104 / 104 / 19
Регистрация: 23.05.2013
Сообщений: 185
16.07.2013, 16:55 2
Не обязательно передавать в методы размеры массива. Можете еще разделить метод Find на несколько (получение одномерного массива и поиск повторяющегося числа).
Кликните здесь для просмотра всего текста
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
static void Main(string[] args)
    {
        Console.WriteLine("Введите размерность матрицы");
        Console.Write("Введите количество строк матрицы n = ");
        int n = Convert.ToInt32(Console.ReadLine());
        Console.Write("Введите количество столбцов матрицы m = ");
        int m = Convert.ToInt32(Console.ReadLine());
        int[,] mas = FillMatrix(n, m);
        ShowMatrix(mas, "Исходная матрица");
        Console.WriteLine("Количество строк, не содержащих ни одного нулевого элемента, равно {0}", Check(mas).ToString()); ;
        Find(mas);
 
        Console.ReadKey();
    }
 
    private static int[,] FillMatrix(int n, int m)
    {
        int[,] mas = new int[n, m];
        Random rand = new Random();
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                mas[i, j] = rand.Next(-100, 100);
            }
        }
        return mas;
    }
 
    private static void ShowMatrix(int[,] mas, string str)
    {
        Console.WriteLine(str);
        for (int i = 0; i < mas.GetLength(0); i++)
        {
            for (int j = 0; j < mas.GetLength(1); j++)
            {
                Console.Write("{0,4}", mas[i, j]);
            }
            Console.WriteLine();
        }
    }
 
    private static int Check(int[,] mas)
    {
        int count = 0;
        for (int i = 0; i < mas.GetLength(0); i++)
        {
            int k = 0;
            for (int j = 0; j < mas.GetLength(1); j++)
            {
                if (mas[i, j] == 0) continue;
                ++k;
            }
            if (k == mas.GetLength(1)) ++count;
        }
 
        return count;
    }
 
    private static void Find(int[,] mas)
    {
        int[] tempMas = new int[mas.GetLength(0) * mas.GetLength(1)];
        int count = 0;
        for (int i = 0; i < mas.GetLength(0); i++)
        {
            for (int j = 0; j < mas.GetLength(1); j++)
            {
                tempMas[count] = mas[i, j];
                ++count;
            }
        }
 
        Array.Sort(tempMas);
        Array.Reverse(tempMas);
        ShowMassiv(tempMas, "Отсортированный одномерный массив");
 
        int maxNum;
        bool flag = false;
        for (int i = 0; i < tempMas.Length - 1; i++)
        {
            if (tempMas[i] != tempMas[i + 1]) continue;
            maxNum = tempMas[i];
            Console.WriteLine("Максимальное из чисел, встречающееся два раза, равно " + maxNum);
            flag = true;
            break;
        }
        if (flag == false)
        {
            Console.WriteLine("В массиве нет чисел, встречающихся два раза.");
        }
    }
 
    //Вывод одномерного массива
    private static void ShowMassiv(int[] mas, string str)
    {
        Console.WriteLine(str);
        for (int i = 0; i < mas.Length; ++i)
        {
            Console.Write(mas[i] + " ");
        }
        Console.WriteLine();
    }


Старайтесь писать метод так, чтобы он не использовал в своем теле вывод на консоль, а возвращал результат. Вдруг вы захотите переписать приложение под формы, а тут вывод в консоль. Можно создать отдельный класс и в нем уже предусмотреть конструктор который будет создавать массив и добавить методы для работы с массивом.
1
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
16.07.2013, 17:14  [ТС] 3
FrostByte, большое спасибо, метод Array.GetLength совсем вылетел из головы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2013, 17:14
Помогаю со студенческими работами здесь

Определить количество строк,содержащих хотя бы один нулевой элемент в прямоугольной матрице(методами)
Дана целочисленная прямоугольная матрица. Определить: • количество строк, содержащих хотя бы один...

В прямоугольной матрице определить номер строки, в которой находится самая длинная серия одинаковых элементов
Здравствуйте! Задание такое: Дана целочисленная прямоугольная матрица. Определить: 1. количество...

Задание по матрице
Дана квадратная матрица А порядка N. Поменять местами максимальные элементы на главной и побочной...

Вычисления в прямоугольной матрице
Добрый вечер уважаемые форумчане !Нужна ваша помощь! Дана целочисленная прямоугольная матрица....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru