Неправильный вывод в массиве - 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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д