2011-10-11 6 views
0
#include <iostream> 
#include <fstream> 
using namespace std; 

int main(int argc, char *argv[]) { 
    int size = 0; 
    int highNum = 0; 
    int m; 
    string fname; 

    cout << "Supply the name of the input file you would like to use." << endl; 
    cin >> fname; 

    ifstream input; 
    input.open(fname.c_str()); 
    input >> size; 
    int numbers[size]; 

    for (int n = 0; n < size; n++) 
     input >> numbers[n]; 

    for (m = 0 ; m < size ; m++) 
    { 
     if (numbers[m] > highNum) 
      highNum = numbers[m]; 
    } 
    int j; 
    int k; 
    bool values[] = {false, false, false, false, false, false}; 

    for (j = highNum; j > 0 ; j--) 
    { 
     for (k = size - 1 ; k >= 0 ; k--) 
     { 
      if (j <= numbers[k]) 
       values[k] = true; 
     } 

     if (values[0]) 
      cout << "| xxx"; 
     else 
      cout << "| "; 
     if (values[1]) 
      cout << " +++"; 
     else 
      cout << "  "; 
     if (values[2]) 
      cout << " ***"; 
     else 
      cout << "  "; 
     if (values[3]) 
      cout << " ---"; 
     else 
      cout << "  "; 
     if (values[4]) 
      cout << " +++"; 
     else 
      cout << "  "; 
     if (values[5]) 
      cout << " +++" << endl; 
     else 
      cout << "  " << endl; 

    } 

    return 0; 
} 

별도의 텍스트 파일에서 정수를 읽음으로써 막대 차트를 인쇄하는 코드를 작성하려고합니다. 전체 코드를 게시했지만 숫자를 입력하면 하단 절반이 작동한다는 것을 알고 있습니다. 나는이 문제가 같은 디렉토리에 데이터 파일이 있다는 것을 생각해 보면 어떨지 궁금해했다. 이 프로그램을 실행하고 테스트를 위해 만든 데이터 파일의 이름을 입력하면 프로그램이 실행되지만 그래프가 생성되지 않습니다.입력 파일에서 읽기

+5

'int numbers [size];'는 표준 C++에서는 유효하지 않습니다. – Dani

+1

@Dani, 그렇습니다. 그러나 사람들의 군대는 g ++를 사용하고 있으며 심지어 비표준이라고 인식하지도 않습니다. :) – Joe

답변

0

프로그램이 저에게 효과적입니다. 입력 파일이 프로세스의 현재 작업 디렉토리에 없다고 가정합니다. open을 호출 한 후 input이 유효한지 확인하기 위해 추가하는 것이 좋습니다.