Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cstddef>
- #include <fstream>
- #include <sstream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdlib.h>
- #include <string.h>
- using namespace std;
- int strict(char*);
- int default_(char*);
- int integers(char* );
- int str_integer(char* );
- int main(int argc,char* argv[])
- {
- char* name=argv[1];
- if(argc==2)
- {
- default_(name);
- }
- else if (argc==3)
- {
- char *command=argv[2];
- if(strcmp(command,"--strict")==0)
- {
- strict(name);
- }
- else if(strcmp(command,"--integers-only")==0)
- {
- integers(name);
- }
- }
- else if(argc==4)
- {
- str_integer(name);
- }
- }
- int default_(char* name)
- {
- string input;
- vector<float> numbers;
- int i=0;
- char* end;
- double sum=0,temp=0,big=0,small;
- float number;
- ifstream file;
- size_t found;
- file.open(name);
- if(file.fail())
- {
- exit(1);
- }
- while(file>>input)
- {
- i++;
- number=strtof(input.data(),&end);
- if(number != 0 || (number==0 && input != "0"))
- {
- numbers.push_back(number);
- }
- }
- big=numbers[0];
- small=numbers[0];
- for(int j=0;j<i;j++)
- {
- if (numbers[j]>big)
- {
- big=numbers[j];
- }
- else if(numbers[j]<small)
- {
- small=numbers[j];
- }
- sum+=numbers[j];
- }
- cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
- return 0;
- }
- int strict(char* name)
- {
- string input;
- vector<float> numbers;
- int i=0;
- char* end;
- float number,sum=0,temp=0,big=0,small;
- ifstream file;
- size_t found;
- file.open(name);
- if(file.fail())
- {
- exit(1);
- }
- while(file>>input)
- {
- i++;
- number=strtof(input.data(), &end);
- found=input.find_first_not_of("0123456789.");
- if(found != std::string::npos)
- {
- cerr<<"ERR: PROVIDE ONLY NUMBERS"<<endl;
- return -1;
- }
- else
- {
- numbers.push_back(number);
- }
- }
- big=numbers[0];
- small=numbers[0];
- for(int j=0;j<i;j++)
- {
- if (numbers[j]>big)
- {
- big=numbers[j];
- }
- else if(numbers[j]<small)
- {
- small=numbers[j];
- }
- sum+=numbers[j];
- }
- cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
- return 0;
- }
- int integers(char* name)
- {
- string input;
- vector<int> numbers;
- int i=0;
- char* end;
- float number,sum=0,temp=0,big=0,small;
- ifstream file;
- file.open(name);
- if(file.fail())
- {
- exit(1);
- }
- while(file>>input)
- {
- i++;
- number=strtol(input.data(),&end,10);
- if(number != 0 || (number==0 && input != "0"))
- {
- numbers.push_back(number);
- }
- }
- big=numbers[0];
- small=numbers[0];
- for(int j=0;j<i;j++)
- {
- if (numbers[j]>big)
- {
- big=numbers[j];
- }
- else if(numbers[j]<small)
- {
- small=numbers[j];
- }
- sum+=numbers[j];
- }
- cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
- return 0;
- }
- int str_integer(char* name)
- {
- string input;
- vector<int> numbers;
- int i=0;
- char* end;
- float number,sum=0,temp=0,big=0,small;
- ifstream file;
- file.open(name);
- if(file.fail())
- {
- exit(1);
- }
- while(file>>input)
- {
- i++;
- number=strtof(input.data(),&end);
- if ((number-(int)number != 0) && (number != 0 || (number==0 && input != "0")))
- {
- cout<< "ERR: PROVIDE ONLY INTEGERS"<<endl;
- return -1;
- }
- numbers.push_back(number);
- }
- big=numbers[0];
- small=numbers[0];
- for(int j=0;j<i;j++)
- {
- if (numbers[j]>big)
- {
- big=numbers[j];
- }
- else if(numbers[j]<small)
- {
- small=numbers[j];
- }
- sum+=numbers[j];
- }
- cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement