Я решаю алгоритмическую проблему C++, и я не знаю, почему я не получаю правильный ответ. Проблема состоит в том, что задана строка из n чисел. Вам нужно взять каждый номер и добавить квадрат своих цифр, пока не получите сумму 4 или 1. Затем вам нужно напечатать, сколько раз вы добавили этот номер. Его пример: у вас есть строка из двух чисел: 89 и 68. Вы начинаете с 89: 64 + 81 = 145; (1) 1 + 16 + 25 = 42; (2) 16 + 4 = 20; 3) 4 + 0 = 4; (4) , и мы остановимся, потому что это 4. Нам нужно напечатать 4, потому что мы добавили 4 раза снова и снова, пока не получим 4 или 1. То же самое с 68. Мой код находится в C++ но он использует для файлов c.Задача похожа на счастливое число
#include<stdio.h>
#include<math.h>
FILE *f,*g;
int n,i,a[500],sqr,nr;
int main()
{
f = fopen("unupatru.in","r");
fscanf(f,"%d\n",&n);
for(i=1;i<=n;i++)fscanf(f,"%d",&a[i]);
fclose(f);
for(i=1;i<=n;i++)
{
nr=0;
sqr=0;
while(sqr!=4 || sqr !=1)
{
while(a[i])
{
sqr+=pow(a[i]%10,2);
a[i]/=10;
}
a[i]=sqr;
nr++;
}
g=fopen("unupatru.out", "w");
fprintf(g,"%d\n",nr);
fclose(g);
}
return 0;
}
Пожалуйста, помогите мне Проблема с моим кодом, что, когда я нажимаю на бегу и скомпилировать его не перестают работать, пожалуйста, помогите
Вы используете неправильные заголовки; вам нужно, например, ''. –
MSalters
Если вы используете C++, сначала удаляйте вызовы функций C. – wasthishelpful
Спасибо за ошибки, но проблема не в этом, я решал подобные проблемы в течение недели, и это не проблема, проблема в том, что-то с логикой кода, пожалуйста, позвольте ему, скажите мне, как это исправить, код действительно похож на c –