Заменить все отрицательные элементы массива на значение минимального положительного элемента - 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;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
для работы с выводом данных в консоль, для получения текущего времени, для работы с консолью. - Определяем размер массива (10 элементов) и границы случайного выбора чисел для заполнения массива (от -100 до 100).
- Инициализируем генератор случайных чисел текущим временем.
- Выделяем память под массив целых чисел с помощью функции malloc.
- Инициализируем переменную min_pos, которая будет хранить минимальное положительное число.
- Заполняем массив случайными числами от LOWER до HIGHER с помощью цикла for и функции rand.
- Выводим заполненный массив на экран с помощью функции printf.
- Находим минимальное положительное число с помощью двух вложенных циклов for и условного оператора if. Внешний цикл считает количество положительных чисел, а внутренний ищет наименьшее положительное число.
- Выводим найденное минимальное положительное число на экран с помощью функции printf.
- Заменяем все отрицательные числа в массиве на найденное минимальное положительное число с помощью цикла for и условного оператора if.
- Выводим измененный массив на экран с помощью функции printf.
- Ожидаем нажатия клавиши для завершения работы программы с помощью функции system(
pause). - Возвращаем 0, чтобы указать, что программа успешно завершилась.