Неправильный вывод в массиве - C#

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

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

Не всегда правильно находит минимальный по модулю элемент одномерного массива. В чём я ошибся?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*Написать программу обработки одномерного массива. Значение элементов массива задавать с помощью генератора случайных чисел
В одномерном массиве, состоящем из N целых элементов,
1)  вычислить минимальный по модулю элемент массива;
2)  вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами;
3)  упорядочить массив по убыванию модулей его элементов.
 
*/
namespace Kon2_Pab1
{
    class Program
    {
 
        static void Main(string[] args)
        {
            int n = 0, N = 20, Nmin = 0, Mmin = 0, a = 0, b = 0;       // Переменные типа int
            Console.WriteLine();
            Random r = new Random();            // Для случайных чисел
            int[] M = new int[N];               // Массив типа int
            Console.WriteLine("Создан массив M случайных целых чисел");
            Console.WriteLine();
            Console.Write("Номер n" + " Значение M[n]");
            Console.WriteLine();

            for (n = 0; n < N; n++)
            {
                int Mm = r.Next(-100, 100);        // Генерация случайного числа
                M[n] = Mm;
                Mmin = M[0];
                Nmin = 0;
                if (Math.Abs(Mm) < Math.Abs(Mmin)  )                // Обнаружение минимального по модулю
                {
                    Mmin = Mm;
                    Nmin = n;
                }
                Console.WriteLine("{0} {1,20}", n, Mm);
                
            }

            Console.Write("a=");
            Console.WriteLine(a.ToString());
            Console.Write("b=");
            Console.WriteLine(b.ToString());
            Console.WriteLine("******************************************");
            Console.WriteLine();
            Console.Write("Nmin=");                // Вывод Nmi
            Console.WriteLine(Nmin.ToString());
            Console.Write("Mmin=");                // Вывод Mmin
            Console.WriteLine(Mmin.ToString());
            Console.WriteLine();
            Console.WriteLine("******************************************");
            Console.WriteLine();
            Console.WriteLine("Отсортированный массив:");
            M = M.OrderByDescending(x => Math.Abs(x)).ToArray();                 // сортировка
            for (int i = 0; i < Math.Abs(M.Length); i++)    // вывод сортировки
            {
                Console.WriteLine(M[i]);
            }
            Console.WriteLine("******************************************");
            Console.WriteLine();
            Console.WriteLine("Нажмите любую клавишу");
            Console.ReadKey();                 // Пауза
        }
 
    }
    }
Так же не могу понять почему не выполняется нахождение первого отрицательного элемента? Для нахождения использую следующий код
 n = 0;
                       while (M[n] < 0)
 
                        {
                            n++;
                                        }
 
                        a = n;

Решение задачи: «Неправильный вывод в массиве»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] mass = CreateMassInitRandom(20);
            int min = GetMinAbs(mass);
 
        }
        static int[] CreateMassInitRandom(int Count)
        {
            Random rnd = new Random();
            int[] mass = new int[Count];
            for (int i = 0; i < Count; i++)
                mass[i] = rnd.Next(-100, 101);
            return mass;
        }
        static int GetMinAbs(int[] mass)
        {
            int min = int.MaxValue;
            for (int i = 0; i < mass.Length; i++)
            {
                int item = Math.Abs(mass[i]);
                if (item < min)min = item;
            }
            return min;
        }
    }
}

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


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

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

7   голосов , оценка 3.857 из 5