나는 C++ 알고리즘 문제를 해결하고 있으며 왜 내가 옳은 대답을 얻지 못하는지 모르겠다. 문제는 다음과 같이 구성됩니다. n 개의 숫자 행이 있습니다. 합계 4 또는 1을 얻을 때까지 각 숫자를 가져 와서 자릿수의 제곱을 추가해야합니다. 그런 다음 몇 번이나 그 번호를 추가했는지 인쇄해야합니다. 그의 예는 다음과 같습니다. 89와 64 + 81 = 145, (1) 1 + 16 + 25 = 42, (2) 16 + 4 = 20, (3) 4 + 0 = 4; (4) 그리고 우리는 4이기 때문에 멈 춥니 다. 4를 더했기 때문에 4를 더해야하기 때문에 4를 인쇄 할 필요가 있습니다. 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
sugestions을 주셔서 감사합니다. 그러나이 문제는이 문제가 아니며 일주일 동안 문제를 해결해 왔지만 문제가되지 않았습니다. 코드의 논리와 무언가가 그것을 알려 주시기 바랍니다, 그것을 해결하는 방법을 더 말해, 코드는 C와 비슷합니다 –