Почему этот массив с плавающей точкой не печатается правильно? - PullRequest
0 голосов
/ 01 апреля 2020

Я протестировал различные способы исправить эту ошибку и не смог найти решение. Добавлен комментарий, где предполагается найти все числа, которые находятся за пределами (4.6, 9.7) l oop. Может ли быть ошибка в синтаксисе?

int main()
{
    int i,n;

    float pom=0;
    printf("vnesi broj na elementi na nizata\n");

    scanf("%d",&n);
        float arr1[n], arr2[n];
    printf("vnesi elementi \n");
    for(i=0;i<n;i++)
    {
        scanf("%f",&arr1[i]);

    }

    pom =((arr1[0]+arr1[n-1])/2);

    int k = 0;

    for(i=0;i<n;i++)
    {

        if(arr1[i]<=4.6 && arr1[i]>=9.7) // the problem lies here
        {
            arr2[k]=arr1[i];
            k++;
            printf("%f", arr1[i]);
        }
    }

    printf("\n elementi od prva niza: \n");
    for(i=0; i<n; i++)
    {
        printf("%.2f ", arr1[i]);
    }

    printf("\n\n elementi od vtora niza: \n");


    for(i=0; i<k; i++)
    {
        printf("%f", arr2[i]); // is not printing the array

    }

}

1 Ответ

4 голосов
/ 01 апреля 2020

if (arr1 [i] <= 4.6 && arr1 [i]> = 9.7) // проблема здесь

Точно. Как число может быть меньше или равно 4,6 и больше или равно 9,7 ?! Оно может быть меньше или равно 4,6 или больше или равно 9,7. Таким образом, ваше условие всегда ложно.

Решение:

Замените это && на ||

...