早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++编程问题描述鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法的应用

题目详情
c++编程问题
描述
鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

关于输入
第一行为整数n;
其余n行每行两个整数,第一个整数是临床实验的总病例数,第二个疗效有效的病例数。
这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

关于输出
有n-1行输出,分别表示对应改进疗法的效果:
如果效果更好,输出better;如果效果更差,输出worse;否则输出same
请通过c++编程解决上述问题
▼优质解答
答案和解析

假设只使用标准c++(不用boost,qt之类的)
假设输入数据格式为
number 3
data 100 90
data 100 96
data 100 80

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
std::wstring s2ws(const std::string& s)
{
setlocale(LC_ALL, "chs");
const char* _Source = s.c_str();
size_t _Dsize = s.size() + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest, 0, _Dsize);
mbstowcs(_Dest,_Source,_Dsize);
std::wstring result = _Dest;
delete []_Dest;
setlocale(LC_ALL, "C");
return result;
}
std::string ws2s(const std::wstring& ws)
{
std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";
setlocale(LC_ALL, "chs");
const wchar_t* _Source = ws.c_str();
size_t _Dsize = 2 * ws.size() + 1;
char *_Dest = new char[_Dsize];
memset(_Dest,0,_Dsize);
wcstombs(_Dest,_Source,_Dsize);
std::string result = _Dest;
delete []_Dest;
setlocale(LC_ALL, curLocale.c_str());
return result;
}
class Judge
{
public:
Judge():number(0)
{
std::wcout.imbue(std::locale("chs"));
}
~Judge(){}
bool read(const std::wstring & filePathName);
bool write(void);
private:
enum show
{
better,
worse,
same
};
std::list allNum;
std::list expNum;
std::list per;
std::list result;
int number;
std::wifstream fin;
std::wofstream fout;
};
bool Judge::read(const std::wstring & filePathName)
{
fin.close();
fout.close();
fin.open(filePathName);
if(fin.is_open())
{
fout.open(filePathName+std::wstring(L".txt"));
allNum.clear();
expNum.clear();
per.clear();
number=0;
std::wstring lineTemp;
while( std::getline(fin,lineTemp) )
{
std::wstringstream ilineTemp(lineTemp);
if( std::getline(ilineTemp,lineTemp,L' ') )
{
if(lineTemp==std::wstring(L"data"))
{
if(std::getline(ilineTemp,lineTemp,L' '))
{
allNum.push_back( atoi(ws2s(lineTemp).c_str()) );
ilineTemp>>lineTemp;
expNum.push_back( atoi(ws2s(lineTemp).c_str()) );
}
else
{
std::wcout< return false;
}
}
if(lineTemp==std::wstring(L"number"))
{//#if1
ilineTemp>>lineTemp;
if(number)
{
std::wcout< return false;
}
number=atoi(ws2s(lineTemp).c_str());
if(number>0)
{
}
else
{
std::wcout< return false;
}
}//~#if1
}
}
}
else
{
std::wcout< return false;
}
if((int)(expNum.size())!=number)
{
std::wcout< return false;
}
return true;
}
bool Judge::write(void)
{
if( fout.is_open()&&(expNum.size()==allNum.size())&&(number>1) )
{
{
std::list::iterator exp=expNum.begin();
int ii=0;
for(std::list::iterator num=allNum.begin();num!=allNum.end();++num)
{
if((*num>0)&&(*num>=*exp)&&(*exp>=0))
{
per.push_back( (double)(*exp)/(double)(*num) );
++exp;
++ii;
}
else
{
std::wcout< return false;
}
}
}
std::list::iterator ii=per.begin();
double x=*ii;
result.clear();
result.push_back(show::same);
++ii;
for(;ii!=per.end();++ii)
{
double y=*ii;
if(x-y>0.05)
{
result.push_back(show::worse);
}
else
{
if(y-x>0.05)
{
result.push_back(show::better);
}
else
{
result.push_back(show::same);
}
}
}
}
else
{
std::wcout< return false;
}
int jj=0;
for(std::list::iterator ii=result.begin();ii!=result.end();++ii,++jj)
{
//fout< switch (*ii)
{
case show::better:
fout< case show::worse:
fout< case show::same:
fout< }
fout<<:endl> }
return true;
}
int main(int argc,char * argv[])
{
std::wcout.imbue(std::locale("chs"));
if(argc!=2)
{
std::wcout< system("pause");
return EXIT_FAILURE;
}
std::string filepathnametemp(argv[1]);
std::wstring filePathName=s2ws(filepathnametemp);
Judge judge;
judge.read(filePathName);
judge.write();
return EXIT_SUCCESS;
}
看了 c++编程问题描述鸡尾酒疗法...的网友还看了以下:

如图是呼吸作用过程图解,请据图回答(1)图中[一]过程是指,它是通过实现的.(2)图中[四]过程是  2020-05-13 …

如图是呼吸作用过程图解,请据图回答(1)图中[一]过程是指,它是通过实现的.(2)图中[四]过程是  2020-05-17 …

交通工程学理论把在单向道路上行驶的汽车看成连续的流体,并用流量、速度、密度三个概念描述车流的基本特  2020-06-12 …

当手指连入220V电压时,人的心脏有电流通过吗手指大拇指和小拇指分别连了火线和零线,也就是说手连如  2020-07-03 …

英语翻译摘要:通过对正泰公司掘进巷道施工过程中经历的实际问题,对掘进巷道施工中探放水的重要意义进行了  2020-11-15 …

下列有关WWW的叙述不正确的是a.它是基于一种称为Hypertext的技术b.在Hypertext文  2020-12-01 …

“钟摆族”是指工作在城市中,生活在郊区或其他城市,两处奔波的职场人士;“潮汐车道”是指根据交通流量的  2020-12-05 …

跪求大家,几道选择题.十分感谢.急用!1对程序计数器PC的操作()A是自动进行的B是通过传送指令进行  2020-12-26 …

如图为重庆一中大校门与立洋百货间路口的交通指示灯的示意图.指示灯可以通过不同颜色灯光的变化指示行人的  2021-01-10 …

如图为重庆一中大校门与立洋百货间路口的交通指示灯的示意图.指示灯可以通过不同颜色灯光的变化指示行人的  2021-01-10 …