Как мне взять каждую строку из текстового файла и усреднить их? - PullRequest
0 голосов
/ 17 января 2019

У меня проблема с чтением в текстовом файле. Возьмите каждую строку чисел, усредните числа, а затем вставьте эти числа в вектор.

70 79 72 78 71 73 68 74 75 70

78 89 96 91 94 95 92 88 95 92

83 81 93 85 84 79 78 90 88 79

Это только часть файла. Я не знаю, как все это поставить, я уверен, что в этом нет необходимости.

Я успешно открыл файл. Я везде смотрел онлайн о том, как читать в каждой строке и пытаться усреднить цифры. Однако я всегда оказывался неудачным в этом. Я новичок в C ++, поэтому мне очень жаль, что я мало что знаю.

Как мне взять каждую строку из файла и усреднить их, чтобы передать ее в вектор?

int main() {
    string inFileName = "lab1.txt";
    ifstream inFile;
    vector<string> scores;
    string myLine2;
    openFile(inFile, inFileName);
    getAvgofContents(inFile, myLine2);
}

void openFile(ifstream &file, string name){
    file.open(name);

    while (!file.is_open()) {
        cout << "Unable to open default file/file path.\nPlease enter a new file/file path:" << endl;
        cin >> name;
        file.open(name);
    }
    cout << "FILE IS OPEN!!!\n";
}

void getAvgofContents(ifstream &file, string line){
    while (file){
        getline(file, line);
        cout << line << endl;
    }
}

I am supposed to get results like:
73
81.5
84.1
...
...
Then after averaging each line, push the results to a vector.

1 Ответ

0 голосов
/ 17 января 2019

Это может помочь:

float getAvgOfLine(string line) {
  float total = 0;
  int count = 0;
  stringstream stream(line);
  while(1) {
   int n;
   stream >> n;
   if(!stream)
      break;
   total += n;
   count++;
  }
  if (count == 0) {
     // the line has no number
     return 0;
  }
  return total/count;
}

float getAvgofContents(ifstream &file, string line){
    float total;
    int number;
    while (getline(file, line)){
        cout << getAvgOfLine(line)<< endl;
    }
}

Ссылка: Преобразовать строку, содержащую несколько чисел, в целые числа

...