0_liprikon_0

Untitled

Apr 16th, 2021
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <string>
  5. #include <sstream>
  6. using namespace std;
  7. int main()
  8. {
  9. ​ ​ ​ setlocale(LC_ALL, "ru");
  10. ​ ​ ​ int i;
  11. ​ ​ ​ streampos p;
  12. ​ ​ ​ int b;
  13. ​ ​ ​ string er;
  14. ​ ​ ​ i = 0;
  15. ​ ​ ​ ifstream file;
  16. ​ ​ ​ int m; // статичная переменная
  17. ​ ​ ​ int* C; //динамичная переменая
  18. ​ ​ ​ do
  19. ​ ​ ​ {
  20. ​ ​ ​ ​ ​ ​ m = 0;
  21. ​ ​ ​ ​ ​ ​ string name;
  22. ​ ​ ​ ​ ​ ​ cout << "Введите имя файла с массивом или \"*\", чтобы выйти из программы: ";
  23. ​ ​ ​ ​ ​ ​ getline(cin, name); //ввод имени файла
  24. ​ ​ ​ ​ ​ ​ if (name == "*")
  25. ​ ​ ​ ​ ​ ​ ​ ​ ​ return 0;
  26. ​ ​ ​ ​ ​ ​ //открытие файла
  27. ​ ​ ​ ​ ​ ​ file.open(name);
  28. ​ ​ ​ ​ ​ ​ if (!file) {
  29. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << endl << "Не удалось открыть файл " << "\"" << name << "\"!" << endl; // проверка на открытие файла
  30. ​ ​ ​ ​ ​ ​ ​ ​ ​ continue;
  31. ​ ​ ​ ​ ​ ​ }
  32. ​ ​ ​ ​ ​ ​ while (!(file >> ws).eof()) {
  33. ​ ​ ​ ​ ​ ​ ​ ​ ​ p = file.tellg();
  34. ​ ​ ​ ​ ​ ​ ​ ​ ​ file >> b;
  35. ​ ​ ​ ​ ​ ​ ​ ​ ​ char k;
  36. ​ ​ ​ ​ ​ ​ ​ ​ ​ if (file.fail() || ((k = file.peek()) != ' ' && k != '\t' && k != '\n' && k != EOF)) {
  37. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ file.clear();
  38. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ file.seekg(p);
  39. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ file >> er;
  40. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ return false;
  41. ​ ​ ​ ​ ​ ​ ​ ​ ​ }
  42. ​ ​ ​ ​ ​ ​ ​ ​ ​ m++;
  43. ​ ​ ​ ​ ​ ​ }
  44. ​ ​ ​ ​ ​ ​ // проверка на наличие данных в файле
  45. ​ ​ ​ ​ ​ ​ if (m == 0) {
  46. ​ ​ ​ ​ ​ ​ ​ ​ ​ file.close();
  47. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << "Файл пуст!" << endl;
  48. ​ ​ ​ ​ ​ ​ ​ ​ ​ continue;
  49. ​ ​ ​ ​ ​ ​ }
  50. ​ ​ ​ ​ ​ ​ C = new(nothrow) int[m];
  51. ​ ​ ​ ​ ​ ​ // вывод массива на экран
  52. ​ ​ ​ ​ ​ ​ cout << setw(10) << "Массив С" << endl;
  53. ​ ​ ​ ​ ​ ​ cout << setw(10) << "Номер";
  54. ​ ​ ​ ​ ​ ​ for (int i = 1; i <= m; i++)
  55. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << setw(4) << i;
  56. ​ ​ ​ ​ ​ ​ cout << endl << setw(10) << "Элемент";
  57. ​ ​ ​ ​ ​ ​ file.clear();
  58. ​ ​ ​ ​ ​ ​ file.seekg(0);
  59. ​ ​ ​ ​ ​ ​ for (int i = 0; i < m; i++) {
  60. ​ ​ ​ ​ ​ ​ ​ ​ ​ file >> C[i];
  61. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << setw(4) << C[i];
  62. ​ ​ ​ ​ ​ ​ }
  63. ​ ​ ​ ​ ​ ​ file.close();
  64. ​ ​ ​ ​ ​ ​ cout << endl;
  65. ​ ​ ​ ​ ​ ​ int pos1 = 0;
  66. ​ ​ ​ ​ ​ ​ do {
  67. ​ ​ ​ ​ ​ ​ ​ ​ ​ for (int i = 0; i < m; i++)
  68. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ if (C[i] == 0) {
  69. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ pos1 = i; i++;
  70. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ break;
  71. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ }
  72. ​ ​ ​ ​ ​ ​ } while (pos1 == 0);
  73. ​ ​ ​ ​ ​ ​ int pos2 = 0;
  74. ​ ​ ​ ​ ​ ​ do {
  75. ​ ​ ​ ​ ​ ​ ​ ​ ​ for (pos1; pos1 < m; pos1++)
  76. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ if (C[pos1 + 1] == 0) {
  77. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ pos2 = pos1; pos1++;
  78. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ break;
  79. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ }
  80. ​ ​ ​ ​ ​ ​ } while (pos2 == 0);
  81. ​ ​ ​ ​ ​ ​ cout << "Преобразованный массив C: " << endl;
  82. ​ ​ ​ ​ ​ ​ for (i; i < pos1; i++) {
  83. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << setw(4) << C[i];
  84. ​ ​ ​ ​ ​ ​ }
  85. ​ ​ ​ ​ ​ ​ for (i; (i > pos1)& (i < pos2); i++) {
  86. ​ ​ ​ ​ ​ ​ ​ ​ ​ C[i] = 1;
  87. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << setw(4) << C[i];
  88. ​ ​ ​ ​ ​ ​ ​ ​ ​ break;
  89. ​ ​ ​ ​ ​ ​ }
  90. ​ ​ ​ ​ ​ ​ for (i; (i > pos2)& (i < m); i++) {
  91. ​ ​ ​ ​ ​ ​ ​ ​ ​ cout << setw(4) << C[i];
  92. ​ ​ ​ ​ ​ ​ ​ ​ ​ break;
  93. ​ ​ ​ ​ ​ ​ }
  94. ​ ​ ​ ​ ​ ​ cout << endl;
  95. ​ ​ ​ } while (true);
  96. }
Advertisement
Add Comment
Please, Sign In to add comment