Как нули переместить в конец массива - C#

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

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

Вот задание (В одномерном массиве состоящем из n вещественных элементов, вычислить: -максимальный элемент массива; -Сумму элементов массива расположенных до последнего положительного элемента. -Сжать массив удалив из него все элементы модуль которых находится в интервале [a,b] Освободившиеся место в конце массива заполнить нулями.) все сделал но нули в конец не как не могу закинуть помогите только пожалуйста с пояснениями чтобы я понял.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
        s1:
            Console.Write("Введите число вещественных чисел n=");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();
            int[] mas = new int[n];
            Random rand = new Random((int)DateTime.Now.Ticks);
            for (int i = 0; i < mas.Length; i++)
            {
                mas[i] = rand.Next(-100, 101);
                Console.Write("{0,00} ", mas[i] );
                
            }
            Console.WriteLine();
            int sum = 0;
            for (int i = mas.Length - 1; i > 0; i--)
                if (mas[i] > 0)
                {
                    for (int j = 0; j < i; j++)
                        sum += mas[j];
                    break;
                }
            int max = mas[0];  // максимальный элемент
            for (int i = 1; i < n; ++i)
                if (mas[i] > max) max = mas[i];
            Console.WriteLine("Максимальный элемент=" + max);
            Console.Write("Сумма равна=" + sum);
            Console.WriteLine();

           Console.WriteLine("Введите а, а=");
           double a = double.Parse(Console.ReadLine());
           Console.WriteLine("Введите b, b=");
           double b = double.Parse(Console.ReadLine());
            
            for (int i = 0; i < n; i++)
            {
                if (Math.Abs(mas[i]) >= a && Math.Abs(mas[i]) <= b) mas[i]=0;

             Console.Write("{0,00} ", mas[i]);
                
            }
            
            Console.WriteLine();
            goto s1;

        }
 
    }

}

Решение задачи: «Как нули переместить в конец массива»

textual
Листинг программы
using System;
using System.Linq;
 
namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("Введите число вещественных чисел n = ");
                int n = Convert.ToInt32(Console.ReadLine());
 
                int[] mas = new int[n];
                Random rand = new Random((int)DateTime.Now.Ticks);
 
                for (int i = 0; i < mas.Length; i++)
                {
                    mas[i] = rand.Next(-100, 101);
                    Console.Write("{0} ", mas[i]);
                }
                Console.WriteLine();
 
                int sum = 0;
                for (int i = mas.Length - 1; i > 0; i--)
                {
                    if (mas[i] > 0)
                    {
                        for (int j = 0; j < i; j++)
                        {
                            sum += mas[j];
                        }
 
                        break;
                    }
                }
 
                int max = mas.Max();  // максимальный элемент                
                Console.WriteLine("Максимальный элемент = {0}", max);
                Console.WriteLine("Сумма равна = {0}", sum);                
                
                Console.Write("Введите а, а = ");
                double a = double.Parse(Console.ReadLine());
                Console.Write("Введите b, b = ");
                double b = double.Parse(Console.ReadLine());
 
                int abs;
                for (int i = 0; i < mas.Length; i++)
                {
                    abs = Math.Abs(mas[i]);
                    if (abs >= a && abs <= b)
                    {
                        mas[i] = 0;
                    }                
                }
 
                mas = mas.Where(x => x != 0).Concat(mas.Where(x => x == 0)).ToArray();
 
                foreach (int num in mas)
                {
                    Console.Write("{0} ", num);
                }
 
                Console.WriteLine();
            }
        }
    }
}

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


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

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

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