Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <stdlib.h>
  3. // #include < windows.h >
  4. #include <conio.h>
  5. #include <fstream>
  6. #include <iostream>
  7. #include <string>
  8. #include <cstdio>
  9.  
  10. using namespace std;
  11.  
  12. void print_mass(int* mass, int m) {
  13. cout << endl << "№" << "\t";
  14. for (int i = 1; i <= m; i++)
  15. {
  16. cout << i << "\t";
  17. }
  18. cout << endl << "Эл." << "\t";
  19. for (int i = 0; i < m; i++)
  20. {
  21. cout << mass[i] << "\t";
  22. }
  23. cout << endl;
  24. }
  25.  
  26.  
  27. int main() {
  28. setlocale(LC_ALL, "rus");
  29.  
  30. int * mass;
  31. int case_num, check = 0, t;
  32. char a;
  33. char file_name_out[40];
  34. char file_name_in[40];
  35. int n=0; // количество элементов в массиве
  36. float S1, S2, Smax_znachenie;
  37. string Smax;
  38.  
  39.  
  40. while (true) {
  41. cout << "Введите номер команды\n";
  42. cin >> case_num;
  43. switch (case_num) {
  44. case 1: //записывает введенный с клавиатура массив в бинарный файл
  45. {
  46. fstream fout;
  47. cout << "Введите количество эл\n";
  48. cin >> n;
  49. mass = new int[n]; //изменение динамического массива
  50. cout << "Введите сами элементы\n";
  51.  
  52. try
  53. {
  54. for (int i = 0; i < n; i++) cin >> mass[i];
  55. }
  56. catch (int err)
  57. {
  58. cout << "Вы вводите неправильные значения";
  59. break;
  60. }
  61.  
  62. while (!fout.is_open()) {
  63. cout << "Введите название файла, если файл уже существует, то он будет перезаписан\n";
  64. cin >> file_name_out;
  65. fout.open(file_name_out, ios::out | ios::binary);
  66. }
  67.  
  68. for (int i = 0; i < n; i++)
  69. {
  70. fout.write((char*)&mass[i], sizeof(mass[i])); //переводим в строку байтов, потом указываем количество байтов, сколько будем записывать
  71. }
  72.  
  73.  
  74. print_mass(mass, n);
  75. //проверка если файл уже существует
  76. fout.close();
  77. _getch();
  78. system("cls");
  79. break;
  80. }
  81. case 2:
  82. {
  83. fstream fin;
  84.  
  85. while (check == 0) {
  86. cout << "Введите название файла\n";
  87. cin >> file_name_in;
  88. fin.open(file_name_in, ios::in | ios::binary);
  89. if (!fin.is_open()) check = 0;
  90. else check = 1;
  91. }
  92. int *buf = new int;
  93.  
  94. n = 0;
  95.  
  96. while (!fin.eof()) {
  97. fin.read((char*)&buf, sizeof(*buf)); // (char*)&buf - адрес переменной buf в памяти | sizeof(*buf) - количество байт которые будет записывать
  98. //cout << "Считалось: " << (int)buf << endl;
  99. n++;
  100. }
  101.  
  102. fin.clear();
  103. fin.seekg(0);
  104.  
  105. mass = new int[n]; //изменение динамического массива
  106. // try catch
  107.  
  108. for (int i = 0; i < n; i++)
  109. {
  110. fin.read((char*)&buf, sizeof(*buf)); // (char*)&buf - адрес переменной buf в памяти | sizeof(*buf) - количество байт которые будет записывать
  111. mass[i] = (int)buf;
  112. }
  113.  
  114. n = n - 1;
  115.  
  116.  
  117. cout << "Количество элементов: " << n << endl;
  118. cout << "Размер массива:" << n*sizeof(int) << endl;
  119.  
  120. print_mass(mass, n);
  121. fin.close();
  122. _getch();
  123. system("cls");
  124. break;
  125. }
  126. case 3: {
  127. print_mass(mass, n);
  128. _getch();
  129. system("cls");
  130. break;
  131. }
  132. case 4: {
  133. S1 = 0; S2 = 0;
  134. for (int i = 1; i < n - 1; i++)
  135. {
  136. S1 = S1 + float(mass[i - 1]) / float(pow(i, 2));
  137. }
  138. for (int i = 1; i < n + 1; i++)
  139. {
  140. S2 = S2 + float(pow(mass[i - 1], 2));
  141. }
  142.  
  143. if (S1 < S2) {
  144. Smax = 'S2';
  145. Smax_znachenie = S2;
  146. }
  147. else
  148. {
  149. Smax = 'S1';
  150. Smax_znachenie = S1;
  151. }
  152.  
  153. cout << "Считаем сумму S1 = " << S1 << endl;
  154. cout << "Считаем сумму S2 = " << S2 << endl;
  155. cout << "Определяем какая из сумм наибольшая Smax = " << "S" << Smax << " = " << Smax_znachenie;
  156. _getch();
  157. system("cls");
  158. break;
  159. }
  160. case 5:
  161. delete [] mass;
  162. return 0;
  163. default: {
  164. _getch();
  165. system("cls");
  166. cout << "Вы ввели неправильный номер команды\n";
  167. }
  168. }
  169. }
  170. _getch();
  171. return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement