Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstddef>
  4. #include <fstream>
  5. #include <sstream>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. using namespace std;
  11. int strict(char*);
  12. int default_(char*);
  13. int integers(char* );
  14. int str_integer(char* );
  15.  
  16. int main(int argc,char* argv[])
  17. {
  18. char* name=argv[1];
  19. if(argc==2)
  20. {
  21. default_(name);
  22. }
  23. else if (argc==3)
  24. {
  25. char *command=argv[2];
  26. if(strcmp(command,"--strict")==0)
  27. {
  28. strict(name);
  29. }
  30. else if(strcmp(command,"--integers-only")==0)
  31. {
  32. integers(name);
  33. }
  34. }
  35. else if(argc==4)
  36. {
  37. str_integer(name);
  38.  
  39. }
  40. }
  41.  
  42. int default_(char* name)
  43. {
  44. string input;
  45.  
  46. vector<float> numbers;
  47.  
  48. int i=0;
  49.  
  50. char* end;
  51.  
  52. double sum=0,temp=0,big=0,small;
  53.  
  54. float number;
  55.  
  56. ifstream file;
  57.  
  58. size_t found;
  59.  
  60. file.open(name);
  61.  
  62. if(file.fail())
  63. {
  64. exit(1);
  65. }
  66.  
  67. while(file>>input)
  68. {
  69. i++;
  70. number=strtof(input.data(),&end);
  71. if(number != 0 || (number==0 && input != "0"))
  72. {
  73. numbers.push_back(number);
  74. }
  75. }
  76. big=numbers[0];
  77. small=numbers[0];
  78. for(int j=0;j<i;j++)
  79. {
  80. if (numbers[j]>big)
  81. {
  82. big=numbers[j];
  83. }
  84. else if(numbers[j]<small)
  85. {
  86. small=numbers[j];
  87. }
  88. sum+=numbers[j];
  89. }
  90. cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
  91. return 0;
  92. }
  93.  
  94. int strict(char* name)
  95. {
  96. string input;
  97.  
  98. vector<float> numbers;
  99.  
  100. int i=0;
  101.  
  102. char* end;
  103.  
  104. float number,sum=0,temp=0,big=0,small;
  105.  
  106. ifstream file;
  107.  
  108. size_t found;
  109.  
  110. file.open(name);
  111.  
  112. if(file.fail())
  113.  
  114. {
  115. exit(1);
  116. }
  117.  
  118. while(file>>input)
  119. {
  120. i++;
  121. number=strtof(input.data(), &end);
  122. found=input.find_first_not_of("0123456789.");
  123. if(found != std::string::npos)
  124. {
  125. cerr<<"ERR: PROVIDE ONLY NUMBERS"<<endl;
  126. return -1;
  127. }
  128. else
  129. {
  130. numbers.push_back(number);
  131. }
  132. }
  133. big=numbers[0];
  134. small=numbers[0];
  135. for(int j=0;j<i;j++)
  136. {
  137. if (numbers[j]>big)
  138. {
  139. big=numbers[j];
  140. }
  141. else if(numbers[j]<small)
  142. {
  143. small=numbers[j];
  144. }
  145. sum+=numbers[j];
  146. }
  147. cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
  148. return 0;
  149. }
  150.  
  151. int integers(char* name)
  152. {
  153. string input;
  154. vector<int> numbers;
  155.  
  156.  
  157. int i=0;
  158.  
  159. char* end;
  160.  
  161. float number,sum=0,temp=0,big=0,small;
  162.  
  163. ifstream file;
  164.  
  165. file.open(name);
  166.  
  167. if(file.fail())
  168.  
  169. {
  170.  
  171. exit(1);
  172.  
  173. }
  174. while(file>>input)
  175. {
  176. i++;
  177. number=strtol(input.data(),&end,10);
  178. if(number != 0 || (number==0 && input != "0"))
  179. {
  180. numbers.push_back(number);
  181. }
  182. }
  183. big=numbers[0];
  184. small=numbers[0];
  185. for(int j=0;j<i;j++)
  186. {
  187. if (numbers[j]>big)
  188. {
  189. big=numbers[j];
  190. }
  191. else if(numbers[j]<small)
  192. {
  193. small=numbers[j];
  194. }
  195. sum+=numbers[j];
  196. }
  197. cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
  198. return 0;
  199. }
  200. int str_integer(char* name)
  201. {
  202.  
  203. string input;
  204. vector<int> numbers;
  205.  
  206.  
  207. int i=0;
  208.  
  209. char* end;
  210.  
  211. float number,sum=0,temp=0,big=0,small;
  212.  
  213. ifstream file;
  214.  
  215. file.open(name);
  216.  
  217. if(file.fail())
  218.  
  219. {
  220.  
  221. exit(1);
  222.  
  223. }
  224. while(file>>input)
  225. {
  226. i++;
  227. number=strtof(input.data(),&end);
  228. if ((number-(int)number != 0) && (number != 0 || (number==0 && input != "0")))
  229. {
  230. cout<< "ERR: PROVIDE ONLY INTEGERS"<<endl;
  231. return -1;
  232. }
  233. numbers.push_back(number);
  234. }
  235. big=numbers[0];
  236. small=numbers[0];
  237. for(int j=0;j<i;j++)
  238. {
  239. if (numbers[j]>big)
  240. {
  241. big=numbers[j];
  242. }
  243. else if(numbers[j]<small)
  244. {
  245. small=numbers[j];
  246. }
  247. sum+=numbers[j];
  248. }
  249. cout<<small<<" "<<big<<" "; printf("%.2f",sum/i); cout<<endl;
  250. return 0;
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement