Помогите, пожалуйста . Я написала код для ввода всех данных ,но у меня не получается вывести те числа,которые нужно в задание и поменять их местами
Мое задание:Найти 2 первых элемента в массиве С(n), значения которых не попадают в заданный с клавиатуры диапазон [a, b]. Поменять их местами.Помогите, пожалуйста.Код:
{
int choice; //обраний пункт меню
double arr_C[100]; //одновимірний масив c
int n; //кількість елементів масиву c
double a, b;
int j;
double k;
//введення кількості елементів масиву B
printf("\nУведіть кількість елементів масиву C(n)-(максимум 100) = ");
while (1)
{
if (scanf("%d", &n)!=1 || n <= 0)
{
//якщо не виконуються умови-виведення запиту на повторне введення
printf("Ви ввели неправильне значення. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
else if (n > 100)
{
//якщо переповнення масиву-виведення запиту на повторне введення
printf("Забагато елементів. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
else
break;
}
//введення елементів масиву B
for (int i = 0; i < n; i++) {
printf("arr_C[%d] = ", i);
while (scanf("%lf", &arr_C[i])!=1)
{
//якщо не виконуються умови-виведення запиту на повторне введення
printf("Ви ввели неправильне значення. Спробуйте ще раз:\n");
while(getchar() != '\n') //очистка буфера вводу та очікуання на правильний результат
continue;
}
}
a = DInput("Введіть a:");
b = DInput("Введіть b:");
k=0;
for (j=0; j<n; j++)
if ((arr_C[j]<a)&&(arr_C[j]>b))
k++;
printf ("\nЕлементи ,які не входять в проміжок[a,b] = %.2f\n", k); //виведення результату)```
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
if ((arr_C[j]<a)||(arr_C[j]>b)) {
if (k == 0) idx = j;
if (k == 1) {
double t = arr_C[j];
arr_C[j] = arr_C[idx];
arr_C[idx] := t;
break;
}
k++;
}