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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <Windows.h>
#define SIZE      10
#define LOWER   -100
#define HIGHER   100
 
 
int main() {
    srand(time(NULL));
    int *arr = malloc(SIZE*sizeof(int));
    int *min_pos;
    int i, counter;
    for (i = 0; i < SIZE; i++) {
        arr[i] = rand() % (HIGHER - LOWER + 1) + LOWER;
        printf("%3d ", arr[i]);
        if (arr[i] > 0) {
            min_pos = arr[i];
        }
    }
 
    // find the positive minimum 
    for (counter = 0; counter < SIZE; counter++) {
        if ((*(arr + counter) < min_pos) && (*(arr + counter) > 0)) {
            min_pos = *(arr + counter);
        }
    }
    printf("\n\nThe minimum is %d\n\n", min_pos);
    // change negative elements with positive minimum and print the array
    for (counter = 0; counter < SIZE; counter++) {
        if (*(arr + counter) < 0){
            *(arr + counter) = min_pos;
        }
        printf("%3d ", *(arr + counter));
    }
 
    system("pause");
    return 0;
}

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

  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
Похожие ответы