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

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

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

в одномерном массиве, состоящем из вещественных элементов вычислить: номер минимального по модулю элемента и сумму модулей элементов массива расположенных после первого отрицательного элемента. сжать массив удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями. Есть примерный код на C++, нужно переделать на С# и дописать конец.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5. int main()
  6. {
  7. double *array, sum = 0, t;
  8. size_t n, i, j, k, imax = 0;
  9. int ipos = -1, a, b;
  10. srand((unsigned)time(NULL));
  11. n = rand() % 81 + 20;
  12. array = (double*)calloc(n, sizeof(double));
  13. printf("Дан массив Array[%u]:\n", n);
  14. for (i = 0; i < n; i++)
  15. {
  16. array[і] = (double)rand() * 198 / RAND_MAX - 99;
  17. printf("%8.3f", array[і]);
  18. }
  19. for (i = 1; i < n; i++)
  20. {
  21. if (fabs(array[і]) > fabs(array[imax]))
  22. imax = i;
  23. }
  24. printf("\nНомер максимального по модулю элемента = %u (%0.3f)\n", imax + 1, array[imax]);
  25. for (i = 0; i < n; i++)
  26. {
  27. if (ipos >= 0)
  28. sum += array[і];
  29. if (ipos < 0 && array[і] > 0)
  30. ipos = i;
  31. }
  32. if (ipos < 0)
  33. printf("В массиве нет положительных элементов");
  34. else
  35. if (ipos + 1 - n)
  36. {
  37. printf("Первый положительный Array[%u] = %0.3f\n", ipos + 1, array[ipos]);
  38. printf("Сумма элементов после 1-го положительного = %0.3f", sum);
  39. }
  40. else
  41. printf("После 1-го положительного нет элементов");
  42. printf("\n\nВведите a: ");
  43. scanf_s("%d", &a);
  44. printf("Введите b: ");
  45. scanf_s("%d", &b);
  46. if (a > b)
  47. {
  48. a ^= b;
  49. b ^= a;
  50. a ^= b;
  51. }
  52. for (i = 0, k = 0; i < n; i++)
  53. if ((int)array[k] >= a && (int)array[k] <= b)
  54. k++;
  55. else
  56. {
  57. t = array[k];
  58. for (j = k; j < n - 1; j++)
  59. array[j] = array[j + 1];
  60. array[n - 1] = t;
  61. }
  62. printf("Преобразованный массив: \n");
  63. for (i = 0; i < n; i++)
  64. printf("%8.3f", array[і]);
  65. fflush(stdin);
  66. printf("\n\nДля завершения работы нажмите Enter...");
  67. getchar();
  68. free(array);
  69. return 0;
  70. }

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

textual
Листинг программы
  1. using System;
  2.  
  3. namespace ConsoleApplication
  4. {
  5.     internal static class Program
  6.     {
  7.         public static void Main()
  8.         {
  9.             Random random = new Random();
  10.  
  11.             double[] array;
  12.             double sum = 0, t;
  13.             int n, i, j, k, imax = 0;
  14.             int ipos = -1, a, b;
  15.             n = random.Next(81) + 20;
  16.             array = new double[n];
  17.             Console.WriteLine("Дан массив Array[{0}]:", n);
  18.             for (i = 0; i < n; i++)
  19.             {
  20.                 array[i] = random.NextDouble() * 198 - 99; // RAND_MAX = 32767
  21.                 Console.Write("{0,8:0.000}", array[i]);
  22.             }
  23.             for (i = 1; i < n; i++)
  24.             {
  25.                 if (Math.Abs(array[i]) > Math.Abs(array[imax]))
  26.                 {
  27.                     imax = i;
  28.                 }
  29.             }
  30.             Console.WriteLine("\nНомер максимального по модулю элемента = {0} ({1:0.000})", imax + 1, array[imax]);
  31.  
  32.             for (i = 0; i < n; i++)
  33.             {
  34.                 if (ipos >= 0)
  35.                 {
  36.                     sum += array[i];
  37.                 }
  38.                 if (ipos < 0 && array[i] > 0)
  39.                 {
  40.                     ipos = i;
  41.                 }
  42.             }
  43.             if (ipos < 0)
  44.             {
  45.                 Console.Write("В массиве нет положительных элементов");
  46.             }
  47.             else
  48.             {
  49.                 if (ipos + 1 - n != 0)
  50.                 {
  51.                     Console.WriteLine("Первый положительный Array[{0}] = {1:0.000}", ipos + 1, array[ipos]);
  52.                     Console.Write("Сумма элементов после 1-го положительного = {0:0.000}", sum);
  53.                 }
  54.                 else
  55.                 {
  56.                     Console.Write("После 1-го положительного нет элементов");
  57.                 }
  58.             }
  59.  
  60.             Console.Write("\nВведите a: ");
  61.             a = int.Parse(Console.ReadLine());
  62.             Console.Write("\nВведите b: ");
  63.             b = int.Parse(Console.ReadLine());
  64.             if (a > b)
  65.             {
  66.                 a ^= b;
  67.                 b ^= a;
  68.                 a ^= b;
  69.             }
  70.             for (i = 0, k = 0; i < n; i++)
  71.             {
  72.                 if ((int)array[k] >= a && (int)array[k] <= b)
  73.                 {
  74.                     k++;
  75.                 }
  76.                 else
  77.                 {
  78.                     t = array[k];
  79.                     for (j = k; j < n - 1; j++)
  80.                     {
  81.                         array[j] = array[j + 1];
  82.                     }
  83.                     array[n - 1] = t;
  84.                 }
  85.             }
  86.             Console.WriteLine("Преобразованный массив:");
  87.             for (i = 0; i < n; i++)
  88.             {
  89.                 Console.Write("{0,8:0.000}", array[i]);
  90.             }
  91.             Console.Write("\n\nДля завершения работы нажмите Enter...");
  92.             Console.ReadLine();
  93.         }
  94.     }
  95. }

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


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

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

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы