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