- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
需要在不知道数组大小的情况下从文本文件中读取一次,然后计算均值和方差。现在我无法创建特定的数组。结果,我无法计算均值和方差。我真的希望你们能提供帮助。
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <math.h>
#include "fraction.h"
using namespace std;
void ascending(fraction fractionarr[]);
fraction mean(fraction fractionarr[]);
fraction variance(fraction fractionarr[]);
static const int countlinenumber(ifstream& data);
void ascending(fraction fractionarr[])
{
ifstream data("data1.txt");
fraction temp;
fraction test(0, 1);
int n = 0;
int linenumber = countlinenumber(data);
for (int i = 0; i < 100; i++)
{
if(fractionarr[i] != test)
{
n++;
}
}
for (int i = 0; i < linenumber; i++)
{
for(int j = 0; j < linenumber-1; j++)
{
if(fractionarr[i+1] != test)
{
if(fractionarr[j] > fractionarr[j+1])
{
temp = fractionarr[j];
fractionarr[j] = fractionarr[j+1];
fractionarr[j+1] = temp;
}
}
}
}
}
fraction mean(fraction fractionarr[])
{
ifstream data("data1.txt");
fraction sum = fractionarr[0];
fraction average;
fraction n(1,1);
fraction test(0,1);
int linenumber = countlinenumber(data);
for (int i = 1; i < linenumber; i++)
{
if(fractionarr[i] != test)
{
sum = sum + fractionarr[i];
n = n + fraction(1,1);
}
}
average = sum / n;
return average;
}
fraction variance(fraction fractionarr[])
{
ifstream data("data1.txt");
fraction average = mean(fractionarr);
fraction* semi = new fraction[100];
fraction total;
fraction t(1, 1);
fraction variance;
fraction test(0,1);
int linenumber = countlinenumber(data);
for (int i = 0; i < linenumber; i++)
{
if(fractionarr[i] != test)
{
semi[i] = (fractionarr[i]-average) * (fractionarr[i]-average);
t = t + fraction(1, 1);
}
}
total = semi[0];
for (int i = 1; i < 100; i++)
{
if(semi[i] != test)
{
total = total + semi[i];
}
}
variance = total / t;
return variance;
}
static const int countlinenumber(ifstream& data)
{
string temp;
int linenumber = 0;
while(getline(data, temp) && !data.eof())
{
linenumber++;
}
return linenumber;
}
int main()
{
ifstream data("data1.txt");
ofstream data_out("data1_out.txt");
stringstream ss;
string temp;
char op;
fraction testing(0,1);
fraction average;
static const int linenumber = countlinenumber(data);
int* numerator = new int[linenumber];
int* denominator = new int[linenumber];
fraction* fractionarr = new fraction[linenumber];
for(int i = 0; i < linenumber; i++)
{
numerator[i] = 0;
denominator[i] = 0;
}
for(int i = 0; i < linenumber; i++)
{
if(!data.eof())
{
getline(data, temp, '\n');
ss << temp;
ss >> numerator[i] >> op >> denominator[i];
ss.clear();
}
}
delete [] numerator;
delete [] denominator;
ascending(fractionarr);
for (int i = 0; i < linenumber; i++)
{
if(fractionarr[i] != testing)
data_out << fractionarr[i] << endl;
}
data_out.close();
cout << mean(fractionarr) << endl;
average = mean(fractionarr);
cout << variance(fractionarr) << endl;
system("pause");
return 0;
}
最佳答案
恐怕这看起来很像家庭作业,我觉得有必要只提供一个方向的想法,而不是一个完整的解决方案来完成你所要求的一切。不过,我希望这足以让您入门:
#include <sstream>
#include <vector>
#include <iterator>
#include <numeric>
int main(){
std::istringstream input("1 200 50 9.5 300.1");
std::vector<double> numbers{std::istream_iterator<double>(input),
std::istream_iterator<double>()};
double sum = std::accumulate(numbers.begin(), numbers.end(), 0.0);
std::cout << "Sum: " << sum << "\n";
std::cout << "Count: " << numbers.size() << "\n";
}
这不会计算均值或方差,但根据此处的内容,我认为添加均值计算应该是微不足道的,而方差只是稍微困难一点(注意:对于方差,您需要std::accumulate
的版本,它使用 lambda 计算与平均值的每个平方差)。
关于c++ - 关于sstream,使用变量作为数组大小和计算溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186800/
我正在尝试编译一个包含 C 的 graphics.h 头文件的程序。我添加了 graphics.h 和 winbgim.h 包含文件夹中的头文件以及 libbgi.a 到 lib 文件夹中。 为了测试
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
这个问题在这里已经有了答案: How to clear stringstream? [duplicate] (1 个回答) 关闭 8 年前。 我正在使用 sstream 来解析字符串。该字符串包含由
我正在解析一个包含字符串和数值的文件。我想逐个字段处理文件,每个字段由空格或行尾字符分隔。ifstream::getline() 操作仅允许单个定界字符。因此,我目前所做的是以字符 ' ' 作为分隔符
我需要打开这种格式的文件 Dat Nguyen 77.7 88.8 99.9 11.1 22.2 Pat Nguyen 2 3 4 5 6 我需要将一行的名字分配给结构的成员数组,将行的姓氏分配给结构
我正在尝试读取每行包含不同数量变量的文本文件,并使用 sstream 将正确的值设置为 vector 。 /*Example file "f 1 2 3" "f 4 5 6 7" */ ifst
因此,我的代码应该打乱句子中的单词而不改变它们在输入中出现的顺序。代码工作正常,但在输出的末尾有一个空格导致显示错误。 #include #include #include using name
cout > test; stringstream ss(test); ss >> x; while(ss.fail()) { ss.str(""); cin.clear(); cin.ignore(
这是一段代码: #include #include using namespace std; int main() { stringstream ss; string st = "2,3,
我试图通过 stringstream 将 double 变成字符串,但它不起作用。 std::string MatlabPlotter::getTimeVector( unsigned int xve
到目前为止我做了什么: 平台:Windows 7(64 位) 在 this method 之后安装了 GCC 从 link 下载 Armadillo (armadillo-6.400.3.tar.gz
这个问题显然是示例代码。很多时候,当显示std::stringstream我认为如果我需要显式添加 #include 的示例. 最佳答案 header 可能包含也可能不包含 header 。最终
我有一个 .txt 文件,里面有这样的文本(这只是一个片段): ... [332, 605]-[332, 592], srednica: 13 [324, 593]-[332, 605], sredn
在命令行中输入: 1 2 3 它存储在“行”中,我的 vector 只填充了 1 我做错了什么?这是代码 string line; string buffer; int a,b,bas
我不明白为什么 XCode 在使用时会遇到链接问题 string create_base_uri(string host, int port, string dbname){ st
在 c++ STL 库的上下文中,string::+= 或 sstream::<< 哪个性能更好,或者它取决于其他东西? 编辑:这取决于我们附加的数据大小吗? 最佳答案 它依赖于很多各种各样的参数,主
我在使用 gcc5.4.0 对大型项目运行 make 时遇到了这个错误。 /usr/include/c++/5/sstream:300:14: error: '__xfer_bufptrs' rede
我们想使用 sstream 将字符串转换为 int。 但我们不知道我们的字符串是否有整数,例如它可以是 "hello 200" 而我们想要 200 ,或者它可以是“你好” 并且没有解决方案! 当字符串
就像我有一个 stringstream 变量包含 "abc gg rrr ff" 当我在那个 stringstream 变量上使用 >> 时,它给了我 "abc"。如何获得剩余的字符串:"gg rrr
我正在尝试使用头文件sstream.h 下面是我的代码段 #include #include #include int main () { string mystr; float pr
我是一名优秀的程序员,十分优秀!