Цикл чтения строк в C ++

0

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

#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
using namespace std;

int main()
{

    //Initialize Required Variables For Program
    int patientCount = 0;
    string id;
    string rHowMany; //String To Read From File
    int howMany = 0;
    int howManyCount = 0;
    int avg = 0;
    int avg2;
    string line;
    int numbre_lines = 0;
    ifstream reader ("data.txt"); //Open The Data File To Be Read From

    do
    {
        reader >> id;
        reader >> howMany;
        cout << "The Patient ID Is: " << id << endl;
        cout << "The Number Of Blood Pressure Record This Patient Has Is: " <<
                     howMany << endl;
        do
        {
            reader >> avg;
            avg = avg + avg;
        }
        while (reader != "\n");
        cin.clear();
        avg = avg / howMany;
        cout << "The Patient Average BP Reading Is: " << avg;
    }
    while (!EOF);
    return 0;
}

Я попытался использовать для циклов и в то время как циклы вместе, но получал некоторые действительно странные ошибки, которые я не мог решить. Поэтому я решил сделать это с вложенным циклом while. К сожалению, код просто зависает при выполнении. Файл данных там, с правильными данными в нем, но по какой-то причине я просто не могу заставить программу работать. Если бы кто-то мог мне помочь, я был бы очень признателен.

--Edit Вот как выглядит один из файлов

4567 4 180 140 170 150
5643 2 125 150
Теги:
while-loop
do-while

1 ответ

0
reader != "\n"

всегда верно, потому что reader является ifstream а "\n" - строковым литералом.
Даже если оба они преобразуются в void* (что, как я подозреваю, поскольку он, по-видимому, компилируется), результат преобразования reader в void* никогда не будет адресом литерала.

Ваша логика тоже немного ошибочна - avg будет в два раза больше значения последнего значения, если цикл работал.

Фиксирование - это упражнение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню