Если в последовательности нет ни одного члена со значением k, то заменить на k первый наименьший член - C (СИ)
Формулировка задачи:
Даны целые числа а1, а2,...,an , b1,b2,...,bm, k. Если в последовательности an нет ни одного члена со значением k, то следует заменить на k первый наименьший член. По такому же принципу преобразовать последовательность bm cо значением 10.
Прошу дать хотя бы алгоритм ввода одномерного массива с клавиатуры в С.
Пока сделал меньше половины и то не уверен.
Поправьте, если что.
double* init_array(int size)//Ввод последовательности
{
double* Array = new double[size];
for(int i=0;i<size;i++)
{
printf("Enter element %d",i);
scanf("%lf",Array[i]);
}
return Array;
}
int_get_min_index(int x[],int size)//Поиск минимального элемента
{
int min=0;
for(i=0;i<size;i++)
if(x[i]<min)
min=*x[i];
return i;
}Решение задачи: «Если в последовательности нет ни одного члена со значением k, то заменить на k первый наименьший член»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
int main(void) {
int i, size = 3;
int* arr = (int*) malloc(sizeof(int)*size);
printf("in number - %d\n", size);
for(i = 0; i < size; i++) // ввод
scanf("%d", &arr[i]);
for(i = 0; i < size; i++) // вывод
printf("%d, ", arr[i] );
putchar('\n');
free(arr);
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
i- счётчик для циклов;size- размер массива;arr- указатель на начало массива.
- Выделен массив с помощью
mallocи получен его адрес. Размер массива в байтах вычисляется как произведение типа на размер, т.е.sizeof(int) * size. - Введён массив с помощью
scanf. - Выведен массив на экран с помощью
printf. - Массив освобождён с помощью
free. - Программа завершается, и возвращается 0, т.е. это говорит о успешном завершении работы программы.
getcharиспользуется для того, чтобы программа не закрылась сразу после вывода массива. Она будет ждать нажатия любой клавиши.