Вывести на печать элементы массива, значения которых не принадлежат промежутку - C (СИ)
Формулировка задачи:
найдите ошибку.
3.В одномерном массиве, состоящем из вещественных элементов, вычислить:
А) вывести на печать элементы массива, значения которых не принадлежат промежутку [ ]. Значения задавать с клавиатуры.
Б) количество элементов массива, не меньших заданного элемента С, значение С вводить с клавиатуры.
В) Заменить все положительные элементы массива их квадратами.
Вот что у меня:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int n,i,k,j; float a,b,c; k=0; j=0; printf("Vvedite razmernost` massiva:\n"); scanf("%d",&n); float*mas=(float*)malloc(sizeof(float)*n); srand(time(NULL)); for (i=0;i<=n-1;i++) mas[i]=(rand()%100)/(rand()%50+1.); for (i=0;i<=n-1;i++) printf("%.3f\n", mas[i]); printf("Vvedite nizgney granicy:\n"); /*Задание А */ scanf("%f", &a); printf("Vvedite verhnyy granicy:\n"); scanf("%f", &b); printf("Znachenia ne prinadlezhashie promezhutky:\n"); for (i=0;i<n;i++) { if ((mas[i]<=a)&&(mas[i]>=b)) { printf("%.3f\n", mas[i]); } } for (i=0;i<=n-1;i++) { if ((mas[i]>=a)&&(mas[i]<=b)) { k++; } } if (k==n) printf("Net znacheniy\n"); printf("Vvedite C:\n"); /*Задание B */ scanf("%f", &c); for (i=0;i<n;i++) { if (mas[i]>=c) j++; } printf("Kollvo elementov,ne menshih c: \n"); printf("%d\n\n", j); for (i=0;i<n;i++) /*Задание C */ { if (mas[i]>0) mas[i]=mas[i]*mas[i]; } for (i=0;i<n;i++) { printf("%.3f\n", mas[i]); } free(mas); return 0; }
Решение задачи: «Вывести на печать элементы массива, значения которых не принадлежат промежутку»
textual
Листинг программы
printf("Znachenia ne prinadlezhashie promezhutky:\n"); for (i=0;i<n;i++) { if ((mas[i]<=a)&&(mas[i]>=b))// как вы себе представляете число одновременно меньше нижней границы и одновременно больше верхней границы (меняйте здесь && на ||. И <= на < , >= на >) { printf("%.3f\n", mas[i]); } }
Объяснение кода листинга программы
- printf(
Znachenia ne prinadlezhashie promezhutky:\n
); - Выводится на печать заголовокЗначения не принадлежащие промежутку
- for (i=0;i<n;i++) - Запускается цикл по всем элементам массива
- if ((mas[i]<=a)&&(mas[i]>=b)) - Проверяется условие, что значение элемента меньше верхней границы и больше нижней границы
- printf(
%.3f\n
, mas[i]); - Выводится на печать значение элемента, удовлетворяющего условию, в формате с плавающей точкой (до 3 знаков после запятой) - Код выведет значения элементов массива, которые одновременно меньше нижней границы и больше верхней границы