Please tell me your ideas about the program.
Code:// By SiavoshKC // //This program reads numbers from a text file and analyses them. //It doesn't use vector maybe for simplfication (?) #include "stdafx.h" //This class manages every thing in this program class Numbers{ public: Numbers(char name[100]); long long Sum(); int Ave(); int Mid(); void PrintNums(); int Min(); int Max(); int Count(){ return numCount; } ~Numbers() { if(nums != NULL) delete[] nums; if(fileOfNumbers != NULL) delete fileOfNumbers; } private: unsigned int numCount; void ReadFile(); enum errTypeE {FILE_NOT_OPENED=1, ERR_READING_FILE, MEM_ALLOC_FAILED}; void ErrHandling(errTypeE err); char fileName[100]; ifstream *fileOfNumbers; int *nums; }; Numbers::Numbers(char name[100]) { nums = NULL; strcpy_s(fileName, name); fileOfNumbers = new ifstream(fileName); if(!fileOfNumbers->good()) ErrHandling(FILE_NOT_OPENED); ReadFile(); fileOfNumbers->close(); } void Numbers::ReadFile() { int temp; numCount = 0; //This loop counts the items in the text file while(!fileOfNumbers->eof()){ cin.clear(); *fileOfNumbers >> temp ; if(!fileOfNumbers->bad())numCount++; else ErrHandling(ERR_READING_FILE); } try { nums = new int[numCount+1]; } catch (...) { ErrHandling(MEM_ALLOC_FAILED); } numCount = 0; fileOfNumbers->seekg(0); fileOfNumbers->clear(); //Now saving numbers in memory while(!fileOfNumbers->eof()){ cin.clear(); //Bad style? *fileOfNumbers >> nums[numCount] ; if(!fileOfNumbers->bad())numCount++; else ErrHandling(ERR_READING_FILE); } } void Numbers::PrintNums() { for(int i = 0; i<numCount;i++) cout << nums[i] << endl; } void Numbers::ErrHandling(errTypeE err) { switch (err) { case FILE_NOT_OPENED: cerr << "ERROR: File could not be opened!"<<endl; this->~Numbers(); exit(err); break; case ERR_READING_FILE: cerr << "ERROR: File can not be read!" << endl; this->~Numbers(); exit(err); break; case MEM_ALLOC_FAILED: cerr << "ERROR: Memory allocation failed!" << endl; exit(err); break; } } int Numbers::Ave() { return(Sum()/numCount); } long long Numbers::Sum() { return accumulate(nums,nums+numCount,0); } int Numbers::Max() { return *max_element(nums,nums+numCount); } int Numbers::Min() { return *min_element(nums,nums+numCount); } int Numbers::Mid() { sort(nums, nums + numCount); return (nums[numCount/2]); } int _tmain(int argc, _TCHAR* argv[]) { Numbers nums("num.txt"); nums.PrintNums(); cout << "-------------------------------------------------------------------" << endl; cout << "Count: " << nums.Count() << endl; cout << "Sum: " << nums.Sum() << endl; cout << "Average: " << nums.Ave() << endl; cout << "Mid: " << nums.Mid() << endl; cout << "Max: " << nums.Max() << endl; cout << "Min: " << nums.Min() << endl; cout << "\nPress a key to exit..." << endl; getch(); return 0; }
stdafx.h
Code:// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <cstdio> #include <tchar.h> #include <fstream> #include <iostream> #include <numeric> #include <algorithm> #include <cstdlib> #include <conio.h> using namespace std; // TODO: reference additional headers your program requires here



