int is_square(int y)
{  
    int x = 0;
    while (x<=y)
    {
        if (y==1 || y==0)
        {return 1;}
        else if ((x*x)==y)    
        {return 1;}
        else
        {
         x=x+1;
         continue;
        }
        
         
    }
    
       return 0;
}  
Над этим кодом я думал около двух дней и моя основная ошибка в не работоспособности кода в выявлений является то что я написал переменную в функций а не в аргументе .
Тоесть я написал:
int is_square()
{
  int x = 0;
  int y = read_int() 	//  read_int = Функция которая считывает целое число и его возвращает. (Источник - https://stepik.org)
}
Вместо:
int is_square(int y)
{  
    int x = 0;
}
И тут у меня логичный вопрос в чём разница? Я читаю однако до конца понимания не приходит , кажеться что в втором случае "y" Аргумент функций , а "x" переменная.
Заранее спасибо ! Кто обьяснит мне нубу что это такое и даст где можно почерпать информацию.

VuRdaLaK1337, в таком случае вот вам ответ. Если переменная записана в аргументах функции, то при стандартном вызове в C++ (_cdecl) все аргументы передаются через стэк. В случае, если вы объявляете переменную внутри функции, она может быть локальной - обнуляться при повторном вызове функции (не работает с массивами), либо статичной (при объявлении указано static). Статичная переменная в данном случае будет в области видимости этой функции, но при этом будет сохранять свои значения при повторном вызове. Пример:
#include <cstdio>

int a() {
	static int i = 0;
	printf("%d\n", i++);
	return i;
}

int main() {
	while(a() < 10);
	return 0;
}
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
19
А не проще было подключить math.h | cmath и оттуда вызывать функцию sqrt?
4
А не проще было подключить math.h | cmath и оттуда вызывать функцию sqrt?
Всегда есть пути проще. Это зависит от навыков программиста как он запилит код быстрее , короче и тд. Я как видишь полный нуб. И это задание из курса , хотя стоило об этом упомянуть , спасибо что отписал.
19
VuRdaLaK1337, в таком случае вот вам ответ. Если переменная записана в аргументах функции, то при стандартном вызове в C++ (_cdecl) все аргументы передаются через стэк. В случае, если вы объявляете переменную внутри функции, она может быть локальной - обнуляться при повторном вызове функции (не работает с массивами), либо статичной (при объявлении указано static). Статичная переменная в данном случае будет в области видимости этой функции, но при этом будет сохранять свои значения при повторном вызове. Пример:
#include <cstdio>

int a() {
	static int i = 0;
	printf("%d\n", i++);
	return i;
}

int main() {
	while(a() < 10);
	return 0;
}
Принятый ответ
4
ничего не пон, а в чём проблема?
Ну я тут не понимаю разницы переменных которая выходит в качестве аргумента , и другой который объявляется внутри функций.

Ev3nt:
Я пока Стек не изучал , хотя знаю что это что-то связано с хранением памяти.В целом остальное понял. В будущем с более обширными знаниями вернусь к этому вопросу. Спасибо за ответ!
38
Работает с массивами и структурами, если передавать по значению, это вам не жасс. Небольшие структуры можно смело отправлять в стек
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.