2014-12-04 3 views
-2

이 프로그램은 for 루프를 사용하여 7 일 동안의 기온을 수집 한 다음 기본적으로 평균 온도와 최고 기록 온도로 다시 인쇄합니다. 다음 코드는 훨씬 더 큰 프로그램의 일부입니다. 어쨌든 문제는 "highest_temp1"float 변수 인 것 같습니다. 프로그램을 실행하면 최고 온도 대신 오류 코드가 생성됩니다. 이 코드 조각은 별도의 소스 파일에서 테스트되었으며 아무런 문제가 없습니다.스위치 내부에서 부동 변수가 작동하지 않음 Statst

switch (choice) 
    { 
    case 3: 
     int n; 
     float temperatures [7]; 
     float lastweektemp [7] = {12.56,8.65,7.5,10,7.9,5,8}; 
     float highest_temp1, highest_temp2; 
     float accumulated_temp1, accumulated_temp2; 

     system("CLS"); 
     cout << "____________Weather Data____________" << endl << endl; 
     for (n = 0; n<7; n++) 
     { 
      cout << "What is the temperature for Day " << n+1 << " ?" << endl; 
      cin >> temperatures[n]; 
      if (highest_temp1 < temperatures [n]) 
      { 
       highest_temp1 = temperatures [n]; 
      } 
      if (highest_temp2 < lastweektemp [n]) 
      { 
       highest_temp2 = lastweektemp [n]; 
      } 

      accumulated_temp1 = accumulated_temp1 + temperatures[n]; 
      accumulated_temp2 = accumulated_temp2 + lastweektemp [n]; 
     } 

     cout << endl << " Day This Week Last Week" << endl; 

     for (n=0; n<7; n++) 
     { 
      cout << n+1 << temperatures[n] << lastweektemp[n] << endl; 
     } 

     system("CLS"); 
     cout << "    Weather Report" << endl; 
     cout << "    --------------" << endl << endl; 
     cout << "Current Week: " << endl; 
     cout << "-------------" << endl; 
     for (n=0; n<7; n++) 
     { 
      cout << "Day " << n+1 << ": " << temperatures[n] << endl; 
     } 
     cout << endl << "   Average: " << accumulated_temp1/7 << endl; 
     cout << "   Highest Temperature: " << highest_temp1 << endl; 

     cout << "Last Week: " << endl; 
     cout << "----------" << endl; 
     for (n=0; n<7; n++) 
     { 
      cout << "Day " << n+1 << ": " << lastweektemp[n] << endl; 
     } 
     cout << endl << "   Average: " << accumulated_temp2/7 << endl; 
     cout << "   Highest Temperature: " << highest_temp2 << endl; 

     system("PAUSE"); 


    } 

현재 주에서 가장 높은 온도는 24이지만 인쇄하는 "최고 온도 : 3.45857e + 032"
이 정확한 '오류 코드'가 변화하지 않는 내가 프로그램을 실행할 때마다 나타나고있다 .

나는 초보자이며 사진을 업로드 할 수없는 이유는 무엇입니까?

도움을 주시면 감사하겠습니다. 나는 대학에서 작은 과제를하고있다. 이것은 내 첫 질문이므로 쉽게 가십시오 !!

+4

_ 사용하기 전에 변수를 초기화 그래서 당신은 당신의 질문에 여기 오류 코드의 텍스트를 복사 할 수 있습니다. 우리는 어쨌든 그것을 그림으로보고 싶지 않습니다. –

+1

디버거에서 코드를 단계적으로 수행하여 초기화되지 않은 변수를 사용중인 위치를 정확히 확인합니다. 또한, 컴파일러 경고를 사용하면 같은 것을 말할 수 있습니다. –

답변

0

변수 highest_temp1에 값을 할당하지 않았으며 다른 값과 비교 중입니다. 당신이 비교하기 전에

기본적으로 당신은 .. 처음에 값을 할당

highest_temp1 = 10.00 

(또는 그것을 포함하도록되어 무엇이든) 초기화하지됩니다 accumulated_temp에 대한

+0

고맙습니다. 나는 그것을 0으로 설정했습니다. "highest_temp1 = 0;" 그리고 그것은 완벽하게 작동했습니다. 그냥 빠른 질문입니다. 'highest_temp1'변수를 초기화하지 않고 어떻게이 프로그램을 자체 소스 파일에서 실행하면이 프로그램이 실행됩니까? 진실로 C++는 내가 혼란 스러울 때 이해해야하는 첫 번째 언어입니다. –

+0

초기화가 없으므로 기본적으로 float 변수에는 몇 가지 값 (+/- 3.4e +/- 38 (~ 7 자리))이 포함되어 있습니다. 실행시 런타임에 오류가 표시되지 않습니다 :-) – 3Demon

0

highest_temp1 (또는 그 문제에 대해서는 highest_temp1 : 초기화하지 않은 이후).

0

같은 필요합니다.

float accumulated_temp1(0); 
-1

플로트 수 조건의 경우 플로팅 수의 경우 명령문 스위치가 작동하지 않을 경우 스위치는 정수만 작동합니다.

+0

질문을 읽었습니까? –

0

은 _ ". 나는 초보자는 따라서 내가 왜 사진을 업로드 할 수 없습니다"그들이

float highest_temp1(-FLT_MAX); // -FLT_MAX insures results of first compare 
float highest_temp2(-FLT_MAX); // Could use -1.0/0.0 of -INFINITY instead 
float accumulated_temp1(0.0); 
float accumulated_temp2(0.0); 
관련 문제