-1
사용자가 시작 값, 최대 값 및 단계 값을 입력하는 코드를 작성하고 있습니다. 결과를 올바르게 계산하고 모든 수식이 정확하지만 한 가지 문제가 있습니다. 내 답변이 제대로 표시되도록 루프를 멈출 수 없습니다. 내가 돌아 가면 루프가 시작되고 화면에 스팸 메일이 쏟아집니다.C 프로그래밍이 루프를 끝낼 수 없습니다.
#include <stdio.h>
#include <math.h>
float funqcia(float x, float y, float k);
int main()
{
float y;
float A;
float B;
float H;
float x;
float t;
int e=0;
int N=15;
int k = 0;
while(e==0)
{
printf("enter starting value here: ");
scanf("%fl",&A);
printf("enter maximum value: ");
scanf("%fl", &B);
printf("enter step: ");
scanf("%fl", &H);
if(B > A)
{
e=1;
}
else
{
printf("Sorry, stopping value should be higher than starting value.");
}
}
while(e==1)
{
printf("%s","_________________________________________________");
printf("%s","\n");
printf("%s","| |");
printf("%s","\n");
printf("%s","| Results are shown below |");
printf("%s","\n");
printf("%s","| |");
printf("%s","\n");
printf("%s","--------------------------------------------------");
printf("%s","\n");
t=0;
/*for(int i=0;i<N;i++)
{
if(i>0)
{
if (B<=y)
{
break;
}
t=pow(2,i)*pow(H,i-1);
x=x+t;
printf("%s","| ");
printf("%fl",x);
printf("%s"," | ");
funqcia(x,y);
printf("%s","\n");
}
else
{
if (B<=y)
{
break;
}
x=A;
printf("%s","| ");
printf("%fl",x);
printf("%s"," | ");
funqcia(x,y);
printf("%s","\n");
}
}*/
for (int i=0;i<N;i++)
{
t=pow(2,i)*pow(H,i-1);
x=x+t;
if (i == 0)
{
x=A;
}
y=funqcia(x,y,k);
if (B<=k)
{
break;
}
else
{
printf("x=%fl\ty=%fl", x,y);
//}
}
}
}
}
float funqcia(float x, float y, float k)
{
y=((3+exp(x-1))/(1+pow(x,2)*(3-tan(x))));
if(isinf(y))
{
printf("this is infinity");
}
else
{
printf("y: %fl",y);
}
k=y;
return k;
}
왜 'e'가 수정되지 않으면 멈출까요? –
모든 경고 및 디버그 정보 ('gcc -Wall -g')로 컴파일 한 다음 디버거 ('gdb')를 사용하십시오. 사용중인 기능 (특히 [printf] (http://en.cppreference.com/w/c/io/fprintf) 및 [scanf] (http://en.cppreference.com/w))에 대한 설명서를 읽으십시오./c/io/fscanf) ...). 'fflush'에 대해서도 읽거나 (각'printf' 제어 형식 문자열을'\ n'으로 끝내십시오) –
당신의 fix-my-code 질문은 주제와 관련이 없습니다. –