Проверка выходных данных

В конце, как я понял программа смотрит, делится ли Z на предыдущий элемент массива, если не делится то выводится 0. Не могу понять как сделать так чтобы вместо 0 выводился текст по типу: "Элементы не являются членами геометрической прогрессии". Если делится то выводится Z, если нет, то текст. Листинг:

#include <stdio.h>
#include <locale.h>

 
int main(void)
{
    setlocale (LC_ALL, "Russian");
    int a[10];
    int n;
 
    printf("N: ");
    scanf("%d",&n);
 
    int i;
    for (i=0; i<n; ++i){
        printf("a[%i] : ",i+1);
        scanf("%d",&a[i]);
    }
 
    float z=(float)a[1]/(float)a[0];
    for (i=1; i<n; ++i) {
        if (z!=(float)a[i]/(float)a[i-1]) {
            z=0;
        }
    }
    printf("%f\n: ",z);
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Это

float z=(float)a[1]/(float)a[0];
for (i=1; i<n; ++i) {
    if (z!=(float)a[i]/(float)a[i-1]) {
        z=0;
    }
}

очень плохая идея — сравнивать числа с плавающей точкой на равенство. Куда лучше сравнивать целочисленные значения, которые сравниваются точно:

for (i=1; i<n; ++i) {
    if (a[1]*a[i-1] != a[0]*a[i]) 
    {
        printf("Это не геометрическая прогрессия\n");
        return 0;
    }
}
→ Ссылка