Я делаю программу для вычисления числа идеальных квадратов между 1 и другим числом, и я хочу, чтобы счетчик принимал только первое число целого числа и положил 0 на остальное, например: Результат вычисления 31, я хочу отобразить 30, если это 190, затем отобразить 100 и так далее.Завершение целого числа, которое всегда заканчивается 0
int number;
int i = 1;
int perfectCounter = 0;
printf("Enter a number: ");
scanf("%d", &number);
while (i <= number) {
float tempSquare = sqrt(i);
int integerPart = tempSquare;
if (tempSquare == integerPart)
perfectCounter++;
i++;
}
printf("%d", perfectCounter);
Вот код, который я прямо сейчас, если я ввожу 1000, он будет отображать 31, и я хочу, чтобы отобразить 30, я не могу придумать решение для этого.
Используйте логарифмы, чтобы узнать наивысшую мощность 10 в количестве. Разделите на эту мощность 10, получите целую часть этого и умножьте на мощность 10. – Barmar
Это не алгебра средней школы, вам просто нужно перевести ее на аналогичные функции C. – Barmar
'if (tempSquare == integerPart)' может выйти из строя из-за округления с плавающей запятой; было бы точнее проверить 'if (integerPart * integerPart == i)' –