Напишите функцию пустого входа - C (СИ)
Формулировка задачи:
Помогите пожалуйста написать вот эту программу...
Задание:
"Напишите функцию пустого входа(double вход [], int n, double чертой, double выход [])
, которые расположены в возрастающей последовательности натуральных чисел вставить дополнительный элемент так, чтобы полученная последовательность была переоформлена должным образом. Входная последовательность входной массив длины n. Вы можете считать, что выходной аргумент, будет иметь длинуn+1
. Пример вызова:vstup = {1.0, 2.0, 3.0}
n = 3
vloz(vstup, n, 2.5, vystup); // вызов функции
vystup: {1.0, 2.0, 2.5, 3.0} // вывод функции
Помогите кто сможет!!! Заранее спасибо!Решение задачи: «Напишите функцию пустого входа»
textual
Листинг программы
#include <stdio.h>
#include <stdbool.h>
void vloz(double x[], int size, double k, double y[]) {
int insert = false;
while (size-- > 0) {
if ((!insert) && (k < *x)) {
insert = true;
*y++ = k;
}
*y++ = *x++;
}
if (!insert) {
*y = k;
}
}
int main() {
double vstup[3] = {1.0, 2.0, 3.0};
double vystup[4];
int i;
vloz(vstup, 3, 2.5, vystup);
for (i = 0; i < 4; ++i) {
printf("%.2f ", vystup[i]);
}
return 0;
}
Объяснение кода листинга программы
В этом коде представлена функция vloz, которая принимает на вход массив x с размером size, а также значения k и y. Функция выполняет следующие действия:
- Устанавливает флаг
insertв значениеfalse. - В цикле проходит по всем элементам массива
x. - Проверяет условие: если
insertравноfalseи значениеkменьше значения первого элемента массиваx, то устанавливаетinsertв значениеtrueи записывает значениеkво второй элемент массиваy. - Передает следующий элемент массива
xв массивy. - Если цикл закончился и значение
insertосталось равнымfalse, то записывает значениеkв последний элемент массиваy. - В функции
mainсоздается массивvstupс тремя элементами: 1.0, 2.0, 3.0. - Создается массив
vystupс четырьмя элементами. - Функция
vlozвызывается с массивомvstup, его размером 3, значением 2.5 и массивомvystup. - Результат работы функции выводится на экран с помощью цикла
forи функцииprintf. - Программа возвращает 0, что означает успешное завершение работы.