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

Узнай цену своей работы

Формулировка задачи:

По заданию нужно Дана целочисленная прямоугольная матрица. Определить - количество строк, не содержащих ни одного нулевого элемента - максимальное из чисел, встречающихся в заданной матрице более одного раза. Вот мой код, посмотрите, плиз, всё ли у меня правильно.
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();
        }
    }
}

Решение задачи: «Задание по прямоугольной матрице»

textual
Листинг программы
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();
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.429 из 5
Похожие ответы