2013-06-11 2 views
0

지금은 일련의 정수가있는 입력 파일을 취할 수있는 프로그램을 작성한 다음 특정 범위의 숫자를 표시하려고합니다. 예를 들어, 입력 파일이 20, 30, 40, 50, 60을 가지며, 범위 1-20, 21-40, 아르파일에서 정수를 읽는 배열로 루프를 실행하고 범위에 따라 정렬하십시오. C++

경우 41-60

가 출력 될

1 -20 : 1 21-40 : 2 41-60 : 3

임은 새로운 프로그래밍, 임 그냥 내 코드에 약간의 문제가, 그래서 내가 메신저 가까이 알고있다. 나는 그들을 저장하는 배열을 사용하지만, 얼마나 많은 정수가 파일에 적응 배열을 만드는 방법을 잘 모르겠다. 그래서 이것은 내가 지금까지 얻은 것입니다. (단지이 연습을 위해, 배열에 최대 100 개의 정수를 저장하려고하는 임).

#include <iostream> 
#include <fstream> 
#include <iomanip> 
using namespace std; 

int ranges(int); 


int main() 
{ 
ifstream indata; 
ofstream outdata; 

indata.open("scores1.txt"); 

outdata.open("scoresoutput.txt"); 

if(!indata) 
{ 
    cout << "Unable to open file" << endl; 
    return 1; 
} 

int range1=0; 
int range2=0; 
int range3=0; 
int range4=0; 
int range5=0; 
int range6=0; 
int range7=0; 
int range8=0; 


const int max=100; 
int score[max]; 



while(indata) 
{ 

    for(int i=0; i < max ; i++) 
    { 

    indata >> score[i]; 
    indata.ignore(1); 

    if(0 <= score[i] <= 24) 
      { 
      range1++; 
      } 

      else if(25 <= score[i] <= 49) 
      { 
       range2++; 
      } 

      else if(50 <= score[i] <=74) 
      { 
       range3++; 
      } 

      else if(75<= score[i] <= 99) 
      { 
       range4++; 
      } 

      else if(100 <= score[i] <= 124) 
      { 
       range5++; 
      } 

      else if(125 <= score[i] <= 149) 
      { 
       range6++; 
      } 

      else if(150 <= score[i] <= 174) 
      { 
       range7++; 
      } 

      else if(175 <= score[i]<= 200) 
      { 
       range8++; 
      } 


    } 

     } 



outdata << "Range" << setw(10) << "Number of Students" << endl << 
    "0-24" << setw(10) << range1 << endl<< 
    "25-49" << setw(10) << range2 << endl << 
    "50-74" << setw(10) << range3 << endl << 
    "75-99" << setw(10) << range4 << endl << 
    "100-124" << setw(10) << range5 << endl << 
    "125-149" << setw(10) << range6 << endl << 
    "150-174" << setw(10) << range7 << endl << 
    "175-200" << setw(10) << range8 << endl; 


return 0; 

} 

지금은 출력이 0-24 100을 표시합니다. 지금 내가하는 일보다 쉬운 방법은 무엇입니까?

+0

그것을

int range_count[8]; for (int i = 0; i < 8; ++i) { range_count[i] = 0; } 

하고있는 동안 루프 내부에 대한 루프에서

배열을 사용하여 범위를 처리하고 수식을 사용하여 상한과 하한을 처리하는 것이 좋습니다. – keelar

답변

0

어레이는 좋은 친구입니다. 카운트를 관리하는 배열을 사용해보십시오 :

for(int i = 0; i < max ; ++i) { 

    indata >> score[i]; 
    indata.ignore(1); 

    if (score[i] >= 0 && score[i] <= 200) { 
    range_count[score[i]/25]++; // since your range intervals is a constant 25. 
    } 
} 

그리고 마지막으로, 출력 :

outdata << "Range" << setw(10) << "Number of Students" << endl; 
for (int i = 0; i < 8; ++i) { 
    i * 25 << "-" << i * 25 + 24 << setw(10) << range_count[i] << endl; 
} 
관련 문제