Заменить все отрицательные элементы массива на значение минимального положительного элемента - C (СИ)

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

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

Помогите пожалуйста!! Задан вещественный массив размером N. Заменить все отрицательные элементы массива размером N на значение минимального положительного элемента. Задать массив задала, но дальше не получается и все тут начало вот
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #define N 10
  4. int main(void)
  5. {setlocale(LC_ALL, "RU");
  6. double mass[N]; //массив вещественных чисел
  7. int i; //счетчик
  8. for( i = 0; i < N; i++ )// заполняем массив
  9. {
  10. printf( "[%u]=", i+1 );
  11. scanf("%d", mass+i);
  12. }
Но дальше не получается(( Точнее пару раз вроде и получилось, но работало не стабильно... И гугл не помогает, и ни как...

Решение задачи: «Заменить все отрицательные элементы массива на значение минимального положительного элемента»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <Windows.h>
  4. #define SIZE      10
  5. #define LOWER   -100
  6. #define HIGHER   100
  7.  
  8.  
  9. int main() {
  10.     srand(time(NULL));
  11.     int *arr = malloc(SIZE*sizeof(int));
  12.     int *min_pos;
  13.     int i, counter;
  14.     for (i = 0; i < SIZE; i++) {
  15.         arr[i] = rand() % (HIGHER - LOWER + 1) + LOWER;
  16.         printf("%3d ", arr[i]);
  17.         if (arr[i] > 0) {
  18.             min_pos = arr[i];
  19.         }
  20.     }
  21.  
  22.     // find the positive minimum
  23.     for (counter = 0; counter < SIZE; counter++) {
  24.         if ((*(arr + counter) < min_pos) && (*(arr + counter) > 0)) {
  25.             min_pos = *(arr + counter);
  26.         }
  27.     }
  28.     printf("\n\nThe minimum is %d\n\n", min_pos);
  29.     // change negative elements with positive minimum and print the array
  30.     for (counter = 0; counter < SIZE; counter++) {
  31.         if (*(arr + counter) < 0){
  32.             *(arr + counter) = min_pos;
  33.         }
  34.         printf("%3d ", *(arr + counter));
  35.     }
  36.  
  37.     system("pause");
  38.     return 0;
  39. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы: для работы с выводом данных в консоль, для получения текущего времени, для работы с консолью.
  2. Определяем размер массива (10 элементов) и границы случайного выбора чисел для заполнения массива (от -100 до 100).
  3. Инициализируем генератор случайных чисел текущим временем.
  4. Выделяем память под массив целых чисел с помощью функции malloc.
  5. Инициализируем переменную min_pos, которая будет хранить минимальное положительное число.
  6. Заполняем массив случайными числами от LOWER до HIGHER с помощью цикла for и функции rand.
  7. Выводим заполненный массив на экран с помощью функции printf.
  8. Находим минимальное положительное число с помощью двух вложенных циклов for и условного оператора if. Внешний цикл считает количество положительных чисел, а внутренний ищет наименьшее положительное число.
  9. Выводим найденное минимальное положительное число на экран с помощью функции printf.
  10. Заменяем все отрицательные числа в массиве на найденное минимальное положительное число с помощью цикла for и условного оператора if.
  11. Выводим измененный массив на экран с помощью функции printf.
  12. Ожидаем нажатия клавиши для завершения работы программы с помощью функции system(pause).
  13. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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