Другие языки программирования и технологии

Язык Си: В одномерном массиве, состоящем из n вещественных элементов, вычислить: номер максимального по модулю элемента

номер максимального по модулю элемента массива;
сумму элементов массива, расположенных после первого положительного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [a,b], а потом - все остальные.
#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;
}

Khuseyn @@@
Khuseyn @@@
51 590
Лучший ответ
Помогаю выучить русский язык: "помогите" не означает "сделайте за меня". Или выкладывай свои наработки и конкретные вопросы, или озвучь цену вопроса.
Шаукат Габдрахманов могу расплатиться тем, что выебу твою мать
Могу сделать, пиши в личку
Желаю вам лечиться у врачей, которые учились так же как и вы.

Похожие вопросы