Вычислить номер минимального по модулю элемента и сумму модулей элементов массива - C#

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

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

в одномерном массиве, состоящем из вещественных элементов вычислить: номер минимального по модулю элемента и сумму модулей элементов массива расположенных после первого отрицательного элемента. сжать массив удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями. Есть примерный код на C++, нужно переделать на С# и дописать конец.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
int main()
{
    double *array, sum = 0, t;
    size_t n, i, j, k, imax = 0;
    int ipos = -1, a, b;
    srand((unsigned)time(NULL));
    n = rand() % 81 + 20;
    array = (double*)calloc(n, sizeof(double));
    printf("Дан массив Array[%u]:\n", n);
    for (i = 0; i < n; i++)
    {
        array[і] = (double)rand() * 198 / RAND_MAX - 99;
        printf("%8.3f", array[і]);
    }
    for (i = 1; i < n; i++)
    {
        if (fabs(array[і]) > fabs(array[imax]))
            imax = i;
    }
    printf("\nНомер максимального по модулю элемента = %u (%0.3f)\n", imax + 1, array[imax]);
 
    for (i = 0; i < n; i++)
    {
        if (ipos >= 0)
            sum += array[і];
        if (ipos < 0 && array[і] > 0)
            ipos = i;
    }
    if (ipos < 0)
        printf("В массиве нет положительных элементов");
    else
        if (ipos + 1 - n)
        {
            printf("Первый положительный Array[%u] = %0.3f\n", ipos + 1, array[ipos]);
            printf("Сумма элементов после 1-го положительного = %0.3f", sum);
        }
        else
            printf("После 1-го положительного нет элементов");
 
    printf("\n\nВведите a: ");
    scanf_s("%d", &a);
    printf("Введите b: ");
    scanf_s("%d", &b);
    if (a > b)
    {
        a ^= b;
        b ^= a;
        a ^= b;
    }
    for (i = 0, k = 0; i < n; i++)
        if ((int)array[k] >= a && (int)array[k] <= b)
            k++;
        else
        {
            t = array[k];
            for (j = k; j < n - 1; j++)
                array[j] = array[j + 1];
            array[n - 1] = t;
        }
    printf("Преобразованный массив: \n");
    for (i = 0; i < n; i++)
        printf("%8.3f", array[і]);
    fflush(stdin);
    printf("\n\nДля завершения работы нажмите Enter...");
    getchar();
    free(array);
    return 0;
}

Решение задачи: «Вычислить номер минимального по модулю элемента и сумму модулей элементов массива»

textual
Листинг программы
using System;
 
namespace ConsoleApplication
{
    internal static class Program
    {
        public static void Main()
        {
            Random random = new Random();
 
            double[] array;
            double sum = 0, t;
            int n, i, j, k, imax = 0;
            int ipos = -1, a, b;
            n = random.Next(81) + 20;
            array = new double[n];
            Console.WriteLine("Дан массив Array[{0}]:", n);
            for (i = 0; i < n; i++)
            {
                array[i] = random.NextDouble() * 198 - 99; // RAND_MAX = 32767
                Console.Write("{0,8:0.000}", array[i]);
            }
            for (i = 1; i < n; i++)
            {
                if (Math.Abs(array[i]) > Math.Abs(array[imax]))
                {
                    imax = i;
                }
            }
            Console.WriteLine("\nНомер максимального по модулю элемента = {0} ({1:0.000})", imax + 1, array[imax]);
 
            for (i = 0; i < n; i++)
            {
                if (ipos >= 0)
                {
                    sum += array[i];
                }
                if (ipos < 0 && array[i] > 0)
                {
                    ipos = i;
                }
            }
            if (ipos < 0)
            {
                Console.Write("В массиве нет положительных элементов");
            }
            else
            {
                if (ipos + 1 - n != 0)
                {
                    Console.WriteLine("Первый положительный Array[{0}] = {1:0.000}", ipos + 1, array[ipos]);
                    Console.Write("Сумма элементов после 1-го положительного = {0:0.000}", sum);
                }
                else
                {
                    Console.Write("После 1-го положительного нет элементов");
                }
            }
 
            Console.Write("\nВведите a: ");
            a = int.Parse(Console.ReadLine());
            Console.Write("\nВведите b: ");
            b = int.Parse(Console.ReadLine());
            if (a > b)
            {
                a ^= b;
                b ^= a;
                a ^= b;
            }
            for (i = 0, k = 0; i < n; i++)
            {
                if ((int)array[k] >= a && (int)array[k] <= b)
                {
                    k++;
                }
                else
                {
                    t = array[k];
                    for (j = k; j < n - 1; j++)
                    {
                        array[j] = array[j + 1];
                    }
                    array[n - 1] = t;
                }
            }
            Console.WriteLine("Преобразованный массив:");
            for (i = 0; i < n; i++)
            {
                Console.Write("{0,8:0.000}", array[i]);
            }
            Console.Write("\n\nДля завершения работы нажмите Enter...");
            Console.ReadLine();
        }
    }
}

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


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

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

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