Mildmanner 2020-05-01 14:40 采纳率: 100%
浏览 132
已采纳

【小白】如何让判断结果在每一行输出文本的后方?

这是我的代码。。

#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
    double BMI;
    string str; 
    stringstream ss;
    fstream input("input.dat", ios::in);
    fstream output("output.dat", ios::out);
    getline(input, str);
    ss << str;
    string temp;
    output << str<<'\n';
    while (!ss.eof()) {    
        if (stringstream(temp) >> BMI) {
            cout << BMI << " ";
            if (BMI >= 25) {

                output << "overweight" << '\n';
            }
            else if (BMI >= 18.5) {

                output << "normal weight" << '\n';
            }
            else {

                output << "under weight" << '\n';
            }

            }

        ss >> temp;

        }           

}

我想要的是判断结果在每行的后面,怎么改写代码?
如LI 12.8 underweight
SONG 11.7 underweight
这样的形式,而不是在文本的最后像下图这样的输出形式
图片说明
输入文件是这样的

NAME                    BMI
Ali                     11.2
Beatriz                     14.6
Charles                     7.8
Diya                        15.2
NUR ATHIRAH BINTI MANAF             14.2
NUR HUSNA BINTI AZMI                14.4
NUR NABILA BINTI ZAKARIA            7.6
NURHAFIZAH BINTI SHUKRI             5
NURHASNATUL AIDA BINTI SUHIZLIZANI IHSAN    11.1
NURMAZLI AZRIN BINTI MOHD RAZALI        7.3
NURSYAHIRA SABRINA BINTI MOHD. SUKRI        14.5
RAFEENA BINTI MOHAMAD RABII         13.9
HILMAN SYAFIE BIN ZAILANI           9.5
INTAN NORATHIRAH BINTI ANNUAR           19.1
ISMA REDHA BIN ABD RAHIM            9.1
LEE KEEN SHEN                   25.2
LIM WEI WEN                 27.1
MAIZATUL HUSNA BINTI MARSONO            44.2
MUHAMMAD ALIF IRFAN BIN ROSLI           34
MUHAMMAD SYAFIQ BIN MAT SHOKERI         23.9
MUHAMMAD SYAHMI BIN MUHAMMAD ZALY SHAH      31.9
MUHAMMED AFIQ AFWAN BIN MOHD SALMI      32.7
NAZATUL SYAHIRAH BINTI NAZARUDDIN       33.8
NG LI TIAN                  23.1
NG ZHAN LUN                 32.4
NIK NUR ARISHA BINTI NIK ISMAIL         37.7
NOR SYUHADA BINTI ANUAR             28.1
NUR AFIQAH BINTI IBRAHIM            28.2
NUR ATIQAH BINTI AHMAD ZAKI         24
NUR AZMINA FATINI BINTI MAHADZIR        27.5
NUR WAFA BINTI ABDUL HADI           34.6
NURAINI SYAHIRA BINTI ROZMAN            34.4
NURSYAZWANI BINTI HASNIZAM          30
NURUL NADIA BINTI ASRIN             20.9
ONG TING JIE                    17.6
OOI CHEE SEANG                  11.1
PRIYANGKA A/P SELVAKUMARAN          16
SHANGGAVEE A/P VELOO                7.7
SHURAIKH `EZZUDDIN BIN SHUKRI           10.5
TEO ZHI XIAN                    13.8
WONG YEN PING                   14.6
YEO YI SHENG                    13.8
MUHAMAD RAFSHANJANI ICHMAWAN            8.1
NUR ATHIRAH BINTI MANAF             30.2
NUR HUSNA BINTI AZMI                26.5
NUR NABILA BINTI ZAKARIA            33.9
NURHAFIZAH BINTI SHUKRI             21.1
NURHASNATUL AIDA BINTI SUHIZLIZANI IHSAN    30.6
NURMAZLI AZRIN BINTI MOHD RAZALI        33.4
NURSYAHIRA SABRINA BINTI MOHD. SUKRI        35.2

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-01 14:52
    关注

    你得给出input.dat的内容

    就你的程序,只调用了1次getline,应该只输出1行。

    因为不知道你的input.dat,我按照我的理解写了一个

    #include<iostream>
    #include<sstream>
    #include<fstream>
    #include<string>
    using namespace std;
    int main()
    {
        double BMI;
        string name;
        string temp; 
        stringstream ss;
        fstream input("c:\\input.dat", ios::in);
        fstream output("c:\\output.dat", ios::out);
        while (!input.eof())
        {
            input >> name;
            input >> BMI;
            output << name << " ";
            output << BMI << " ";
            if (BMI >= 25) {
                output << "overweight" << '\n';
            }
            else if (BMI >= 18.5) {
                output << "normal weight" << '\n';
            }
            else {
                output << "under weight" << '\n';
            }
        }
    
    }
    
    

    这是运行结果:
    图片说明


    #include<iostream>
    #include<fstream>
    #include<string>
    #include<stdio.h>
    using namespace std;
    int main()
    {
        double BMI;
        string str;
        char name[100];
        fstream input("c:\\input.dat", ios::in);
        fstream output("c:\\output.dat", ios::out);
        while (!input.eof())
        {
            getline(input, str);
            sscanf(str.c_str(), "%[^\t]\t%lf", &name, &BMI);
            output << name << " ";
            output << BMI << " ";
            if (BMI >= 25) {
                output << "overweight" << '\n';
            }
            else if (BMI >= 18.5) {
                output << "normal weight" << '\n';
            }
            else {
                output << "under weight" << '\n';
            }
        }
    
    }
    

    input.dat(注意,名字和bmi之间是tab,不是空格!!)

    a a 123.5
    b bb    231.1
    c   17.6
    d   27
    ee ee ee    40
    

    output.dat

    a a 123.5 overweight
    b bb 231.1 overweight
    c 17.6 under weight
    d 27 overweight
    ee ee ee 40 overweight
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器