Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
3,088
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.57 KB | None | 0 0
  1. Изучи содержание параграфа пар.68 "Работа с файлами" и выполни задания.
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Задание 1. Ответь кратко на вопросы.
  8.  
  9. Вопрос
  10.  
  11. Ответ
  12.  
  13. 1. Чем отличаются текстовые и двоичные файлы по внутреннему содержанию? Можно ли сказать, что текстовый файл – это частный случай двоичного файла?
  14.  
  15. Текстовые - хранят только текстовые символы и символ переноса строки.
  16.  
  17. Двоичные - хранят любые символы.
  18.  
  19. Текстовый - частный случай двоичного, т.к. символы текста относятся ко "всем" символам
  20.  
  21. 2. Объясните «принцип сэндвича» при работе с файлами.
  22.  
  23. 1 этап - открытие файла, установление связи между программой и файлом
  24.  
  25. 2 этап - работа с файлом
  26.  
  27. 3 этап - закрытие файла и сохранение изменений, разрыв связи с программой.
  28.  
  29. 3. Как вы думаете, почему открытый программой файл, как правило, блокируется и другие программу не могут получить к нему доступ?
  30.  
  31. Чтобы не было конфликтующих изменений
  32.  
  33. 4. Почему рекомендуется вручную закрывать файлы, хотя при закрытии программы они закроются автоматически? В каких ситуациях это может быть важно?
  34.  
  35. Могут не сохранится изменения, если файл редактировался.
  36.  
  37. 5. Что такое файловая переменная? Почему для работы с файлом используют не имя файла, а файловую переменную?
  38.  
  39. Файловая переменная содержит блок управления файлами, это удобнее
  40.  
  41. 6. В каком случае одна и та же файловая переменная может быть использована для работы с несколькими файлами, а в каком – нет?
  42.  
  43. По завершении работы с одним файлом, файловую переменную можно использовать и для нескольких других.
  44.  
  45. 7. Что такое «последовательный доступ к данным»?
  46.  
  47. Принцип, при котором, чтобы прочитать n-й элемент, нужно прочитать и n-1 элементов до него.
  48.  
  49. 8. Как можно начать чтение данных из файла с самого начала?
  50.  
  51. Закрыть файл, а потом заново открыть его.
  52.  
  53. 9. Как определить, что данные в файле закончились?
  54.  
  55. Курсор будет указывать на конец файла, а функция F.eof() вернёт истину.
  56.  
  57. В каких случаях надо знать максимальное количество данных в файлах, а в каких - нет?
  58.  
  59. В случае обработки данных в статическом массиве, а если хранить данные необязательно, то и знать их количество не нужно.
  60.  
  61. 11. В каких случаях нужно открывать одновременно несколько файлов?
  62.  
  63. Когда программа работает сразу с несколькими файлами, например, читает данные из одного, а выводит результат в другой.
  64.  
  65.  
  66.  
  67. Задание 2. Реши задачи
  68.  
  69. Задание
  70.  
  71. Программный код задачи
  72.  
  73. 1. Напишите программу, которая находит среднее арифметическое всех чисел, записанных в файле в столбик, и выводит результат в другой файл.
  74.  
  75. #define _CRT_SECURE_NO_WARNINGS
  76.  
  77. #include <iostream>
  78.  
  79. #include <vector>
  80.  
  81. #include <algorithm>
  82.  
  83. #include <set>
  84.  
  85. #include <string>
  86.  
  87. #include <iomanip>
  88.  
  89. #include <fstream>
  90.  
  91. #define pb push_back
  92.  
  93. #define mp make_pair
  94.  
  95. #define ti t[i]-'a'
  96.  
  97.  
  98.  
  99. using namespace std;
  100.  
  101. using ll = long long;
  102.  
  103.  
  104.  
  105.  
  106.  
  107. int main() {
  108.  
  109. string s1;
  110.  
  111. ifstream in("D:\\input.txt");
  112.  
  113. ofstream out("D:\\output.txt");
  114.  
  115. int s = 0;
  116.  
  117. int cnt = 0;
  118.  
  119. while (getline(in, s1)) {
  120.  
  121. s += stoi(s1);
  122.  
  123. cnt++;
  124.  
  125. }
  126.  
  127. in.close();
  128.  
  129. out << (double)s / cnt;
  130.  
  131. out.close();
  132.  
  133. return 0;
  134.  
  135. }
  136.  
  137.  
  138.  
  139. 2. Напишите программу, которая находит минимальное и максимальное среди чётных положительных чисел, записанных в файле, и выводит результат в другой файл. Учтите, что таких чисел может вообще не быть.
  140.  
  141. #define _CRT_SECURE_NO_WARNINGS
  142.  
  143. #include <iostream>
  144.  
  145. #include <vector>
  146.  
  147. #include <algorithm>
  148.  
  149. #include <set>
  150.  
  151. #include <string>
  152.  
  153. #include <iomanip>
  154.  
  155. #include <fstream>
  156.  
  157. #include <algorithm>
  158.  
  159. #define pb push_back
  160.  
  161. #define mp make_pair
  162.  
  163. #define ti t[i]-'a'
  164.  
  165.  
  166.  
  167. using namespace std;
  168.  
  169. using ll = long long;
  170.  
  171.  
  172.  
  173.  
  174.  
  175. int main() {
  176.  
  177. string s1;
  178.  
  179. ifstream in("D:\\input.txt");
  180.  
  181. ofstream out("D:\\output.txt");
  182.  
  183. int mx = -INT32_MAX;
  184.  
  185. int mn = INT32_MAX;
  186.  
  187. while (getline(in, s1)) {
  188.  
  189. if (stoi(s1) > 0 && stoi(s1) % 2 == 0) {
  190.  
  191. mn = min(mn, stoi(s1));
  192.  
  193. mx = max(mx, stoi(s1));
  194.  
  195. }
  196.  
  197. }
  198.  
  199. in.close();
  200.  
  201. if (mn == INT32_MAX) {
  202.  
  203. out << "NO";
  204.  
  205. }
  206.  
  207. else {
  208.  
  209. out << "max: " << mx << endl << "min: " << mn;
  210.  
  211. }
  212.  
  213. out.close();
  214.  
  215. return 0;
  216.  
  217. }
  218.  
  219.  
  220.  
  221. 3. В файле в столбик записаны целые числа. Напишите программу, которая определяет длину самой длинной цепочки идущих подряд одинаковых чисел и выводит результат в другой файл.
  222.  
  223. #define _CRT_SECURE_NO_WARNINGS
  224.  
  225. #include <iostream>
  226.  
  227. #include <vector>
  228.  
  229. #include <algorithm>
  230.  
  231. #include <set>
  232.  
  233. #include <string>
  234.  
  235. #include <iomanip>
  236.  
  237. #include <fstream>
  238.  
  239. #include <algorithm>
  240.  
  241. #define pb push_back
  242.  
  243. #define mp make_pair
  244.  
  245. #define ti t[i]-'a'
  246.  
  247.  
  248.  
  249. using namespace std;
  250.  
  251. using ll = long long;
  252.  
  253.  
  254.  
  255.  
  256.  
  257. int main() {
  258.  
  259. string s1;
  260.  
  261. ifstream in("D:\\input.txt");
  262.  
  263. ofstream out("D:\\output.txt");
  264.  
  265. int l = 1;
  266.  
  267. int l2 = 1;
  268.  
  269. int cur = INT32_MAX;
  270.  
  271. while (getline(in, s1)) {
  272.  
  273. int c = stoi(s1);
  274.  
  275. l = max(l, l2);
  276.  
  277. if (c == cur) l2++;
  278.  
  279. else l2 = 1;
  280.  
  281. cur = c;
  282.  
  283. }
  284.  
  285. in.close();
  286.  
  287. out << l;
  288.  
  289. out.close();
  290.  
  291. return 0;
  292.  
  293. }
  294.  
  295.  
  296.  
  297. 4. В файле записаны в столбик целые числа. Отсортировать их по возрастанию последней цифры и записать в другой файл.
  298.  
  299. #define _CRT_SECURE_NO_WARNINGS
  300.  
  301. #include <iostream>
  302.  
  303. #include <vector>
  304.  
  305. #include <algorithm>
  306.  
  307. #include <set>
  308.  
  309. #include <string>
  310.  
  311. #include <iomanip>
  312.  
  313. #include <fstream>
  314.  
  315. #include <algorithm>
  316.  
  317. #define pb push_back
  318.  
  319. #define mp make_pair
  320.  
  321. #define ti t[i]-'a'
  322.  
  323.  
  324.  
  325. using namespace std;
  326.  
  327. using ll = long long;
  328.  
  329.  
  330.  
  331. bool cmp(int f, int s) {
  332.  
  333. return f % 10 < s % 10;
  334.  
  335. }
  336.  
  337.  
  338.  
  339. int main() {
  340.  
  341. string s1;
  342.  
  343. ifstream in("D:\\input.txt");
  344.  
  345. ofstream out("D:\\output.txt");
  346.  
  347. vector<int> a;
  348.  
  349. while (getline(in, s1)) {
  350.  
  351. a.pb(stoi(s1));
  352.  
  353. }
  354.  
  355. sort(a.begin(), a.end(), cmp);
  356.  
  357. in.close();
  358.  
  359. for (int i = 0; i < a.size(); out << a[i++] << endl);
  360.  
  361. out.close();
  362.  
  363. return 0;
  364.  
  365. }
  366.  
  367.  
  368.  
  369. 5. В файле записаны в столбик целые числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл.
  370.  
  371. #define _CRT_SECURE_NO_WARNINGS
  372.  
  373. #include <iostream>
  374.  
  375. #include <vector>
  376.  
  377. #include <algorithm>
  378.  
  379. #include <set>
  380.  
  381. #include <string>
  382.  
  383. #include <iomanip>
  384.  
  385. #include <fstream>
  386.  
  387. #include <algorithm>
  388.  
  389. #define pb push_back
  390.  
  391. #define mp make_pair
  392.  
  393. #define ti t[i]-'a'
  394.  
  395.  
  396.  
  397. using namespace std;
  398.  
  399. using ll = long long;
  400.  
  401.  
  402.  
  403. inline int sum(int n) {
  404.  
  405. int ans = 0;
  406.  
  407. while (n > 0) ans += n % 10, n /= 10;
  408.  
  409. return ans;
  410.  
  411. }
  412.  
  413.  
  414.  
  415. bool cmp(int f, int s) {
  416.  
  417. return sum(f) < sum(s);
  418.  
  419. }
  420.  
  421.  
  422.  
  423. int main() {
  424.  
  425. string s1;
  426.  
  427. ifstream in("D:\\input.txt");
  428.  
  429. ofstream out("D:\\output.txt");
  430.  
  431. vector<int> a;
  432.  
  433. while (getline(in, s1)) {
  434.  
  435. a.pb(stoi(s1));
  436.  
  437. }
  438.  
  439. sort(a.begin(), a.end(), cmp);
  440.  
  441. in.close();
  442.  
  443. for (int i = 0; i < a.size(); out << a[i++] << endl);
  444.  
  445. out.close();
  446.  
  447. return 0;
  448.  
  449. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement