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