Исходное задание: Найти количество чисел, которые не превосходят числа A и являются полными квадратами некоторого натурального числа. Работа функции KVADRAT = проверять число (n) на наличие квадратов натуральных чисел,если есть прибавлять к значению количество +1. Так вот,ошибка в том,что когда я пытаюсь ограничить число n(a в main),то программа буд-то не слушается и выводит неправильный ответ Мой псевдо код #include "pch.h" #include <iostream> #include <stdio.h> #include <math.h> int k; double kvadrat(int n) { int i; while (n > 0) { for (i = 1; i*i <= n; i++) if (i*i == n) k++; return k; } } int main() { int a, chislo, count = 0; printf("a="); scanf_s("%d", &a); printf("chislo="); scanf_s("%d", &chislo); while (a != 0) { if (a < chislo); count += kvadrat(a); printf("a="); scanf_s("%d", &a); } printf("Kolichestvo chisel=%d\n", count); return 0; } Код #include "pch.h" #include <iostream> #include <stdio.h> #include <math.h> int k; double kvadrat(int n) { int i; while (n > 0) { for (i = 1; i*i <= n; i++) if (i*i == n) k++; return k; } } int main() { int a, chislo, count = 0; printf("a="); scanf_s("%d", &a); printf("chislo="); scanf_s("%d", &chislo); while (a != 0) { if (a < chislo); count += kvadrat(a); printf("a="); scanf_s("%d", &a); } printf("Kolichestvo chisel=%d\n", count); return 0; }
Немного не понял условия задачи. Вынеси return k в функции за пределы цикла while и int k замени на int k = 0
Нихуя не понял условие задачи, но чисто по коду ошибки испарвил. #include "pch.h" #include <iostream> #include <stdio.h> #include <math.h> int kvadrat(int n) // везде юзаешь int, нафиг тебе дабл? { int i; int k = 0; // перед подстчетом нужно обнулить переменную. + используешь ее не глобально, поэтому в функцию ее while (n > 0) { for (i = 1; i*i <= n; i++) if (i*i == n) k++; } return k; // цикл сразу должен закончится, потом ты возвращаешь значение } int main() { int a, chislo, count = 0; printf("a="); scanf_s("%d", &a); printf("chislo="); scanf_s("%d", &chislo); while (a != 0) { if (a < chislo){ //схера после ифа ; ? Или { или вообще ничего count += kvadrat(a); printf("a="); scanf_s("%d", &a); } // хз зачем, но этот цикл будет работать пока ты не введешь 0 printf("Kolichestvo chisel=%d\n", count); return 0; }
Хммм ахуенно у тебя не функция, а что - то возвращает Ты тупо сути не понял, иди учи алгоритмы, недокодер
PuGoVkA, там стиль написания как в си++, в си функция main не возвращает ничего, и завершается какой-либо функцией завершения программы(ExitProcess, TerminateProcess), это си++, то, что он исопльзует CRT - ничего не говорит
PuGoVkA, он даже наверняка не поставил в настройках компилятора компиляцию си кода, вместо си++, так что говорить то и не о чем