Прочитайте .txt файл, рассчитайте сумму и среднее

У меня есть файл .txt, который содержит цифры и выглядит так:

1
2
3

так далее

Цифры не важны, но все они начинаются с новой строки.

Я хочу потом найти сумму & среднее число чисел в текстовом файле.

Вот что у меня так далеко:

#include<cmath>
#include<cstdlib>
#include<iomanip>
#include<string>
#include<fstream>
using namespace std;

int main(int argc, char * argv[])
{
std::fstream myfile("numbers.txt", std::ios_base::in);

float a;
while (myfile >> a)
{
printf("%f ", a);
}

getchar();

return 0;

int sum(0);
int sumcount(0);
double average(0);
int even(0);
int odd(0);

ifstream fin;

string file_name;

int x(0);

cout<<"numbers.txt";
cin>> file_name;
fin.open(file_name.c_str(),ios::in);

if (!fin.is_open())
{
cerr<<"Unable to open file "<<file_name<<endl;
exit(10);

}

fin>>x;
while (!fin.fail())
{
cout<<"Read integer: "<<x<<endl;
fin>>x;
sum=sum+x;
sumcount++;
if(x%2==0)
even++;
else
odd++;

}

fin.close();
average=(double)sum/sumcount;
cout<<"Sum of integers: "<<sum<<endl;
cout<<"Average: "<<average<<endl;
cout<<"Number of even integers: "<<even<<endl;
cout<<"Number of odd integers: "<<odd<<endl;

return 0;
}

Старт загружает числа, но не выполнит следующий шаг.

я просмотрел много другого кода и попытался реализовать другие идеи для решения проблемы; Тем не менее, некоторые люди используют циклы и массивы и другие вещи, и я не уверен, что использовать.

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

Также будут приветствоваться любые другие ссылки на помощь

РЕДАКТИРОВАТЬ: хотя числа являются целыми числами, среднее может не быть

1

Решение

Вот ваш рабочий код.

#include <cmath>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>using namespace std;

int main(int argc, char * argv[])
{
std::fstream myfile("numbers.txt", std::ios_base::in);

float a = 0;

myfile >> a;

while (!myfile.fail())
{
printf("%f ", a);
myfile >> a; // here you dispay your numbers
}

getchar(); // waiting for input

float sum(0);
int x(0);
int sumcount(0);
double average(0);
int even(0);
int odd(0);

ifstream fin;

string file_name;

cout<<"numbers.txt" << endl;

cin>> file_name; // waiting for enter file name

fin.open(file_name.c_str(),ios::in);

if (!fin.is_open())
{
cerr<<"Unable to open file "<<file_name<<endl;
exit(10);
}

fin >> x;

while (!fin.fail())
{
cout<<"Read integer: "<<x<<endl; // display number again

sum=sum+x;
sumcount++;
if(x % 2==0)  // compuing your file statistics
even++;
else
odd++;

fin>>x;
}

fin.close();
average=(double)sum/sumcount;

cout<<"Sum of integers: "<<sum<<endl; // displaying results
cout<<"Average: "<<average<<endl;
cout<<"Number of even integers: "<<even<<endl;
cout<<"Number of odd integers: "<<odd<<endl;

return 0;
}

Я добавил несколько минимальных изменений, чтобы ваша программа работала правильно.

результат

введите описание изображения здесь

и больше

введите описание изображения здесь

1

Другие решения

Как только ваша основная функция встретит оператор, возвращающий 0, она выйдет из программы и не сможет выполнить оставшийся код. Как правило, это должно появиться только один раз в вашей основной функции, в конце вашего блока кода

0

#include <iostream>
#include <fstream>
using namespace std;int main() {

int n=0;
int sum=0,total=0;

fstream file("numbers.txt");
while(file >> n) // or while(cin >> n) to read from stdin, commandline
{
sum += n;
total++;
}

int average = (float) sum/total;

cout<<"sum: " << sum << endl;
cout << "average: " << average << endl;
return 0;
}
0

#include <iostream>
#include<fstream>

int main()
{
std::ifstream txtFile;
txtFile.open("data.txt");
//TODO: check if the file fails to open.

double tempNum, mean(0.0), sum(0.0), count(0.0);
while (txtFile >> tempNum)
{
sum += tempNum;
++count;
}
mean = sum/count;
std::cout << "mean: " << mean << "  sum: " << sum << std::endl;

return 0;
}
0
По вопросам рекламы [email protected]