fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void View(FILE*,char*);
  5. void NameFile(char*, char*);
  6. void Create(FILE*);
  7. int Menu();
  8.  
  9. int main()
  10. {
  11. FILE *a, *b;
  12. int x, y, n;
  13. int ptr1, ptr2, k;
  14. char nameA[20], nameB[20];
  15.  
  16. setlocale(LC_ALL, "");
  17. NameFile(nameA, "Введите имя исходного файла:");
  18.  
  19. while (true)
  20. {
  21. switch (Menu())
  22. {
  23. case 1:
  24. if (!(a = fopen(nameA, "wb")))
  25. {
  26. cout << "\nОшибка создания файла " << nameA << ".\n";
  27. return 1;
  28. }
  29. Create(a);
  30.  
  31. fclose(a);
  32. break;
  33. case 2:
  34. if (!(a = fopen(nameA, "rb+")))
  35. {
  36. cout << "\nОшибка открытия файла " << nameA << ".\n";
  37. return 1;
  38. }
  39.  
  40. View(a, "\nДанные файла А:\n");
  41. fclose(a);
  42. break;
  43. case 3:
  44. if (!(a = fopen(nameA, "rb")))
  45. {
  46. cout << "\nОшибка открытия файла " << nameA << ".\n";
  47. return 1;
  48. }
  49.  
  50. NameFile(nameB, "Введите имя результирующего файла:");
  51.  
  52. if (!(b = fopen(nameB, "wb")))
  53. {
  54. cout << "\nОшибка создания файла " << nameB << ".\n";
  55. return 1;
  56. }
  57.  
  58. fread(&x, sizeof(x), 1, a);
  59. fwrite(&x, sizeof(x), 1, b);
  60.  
  61. ptr1 = ptr2 = k= 1;
  62. cout << "\nx=" << x << " ptr1=" << ptr1 << " ptr2=" << ptr2 << " k=" << k;
  63. while (true)
  64. {
  65. while ((n=fread(&y, sizeof(int), 1, a) )== 1 && x*y > 0)
  66. {
  67. k++;
  68. cout << "\ny=" << y << " ptr1=" << ptr1 << " ptr2=" << ptr2 << " k=" << k;
  69. }
  70. if (n != 1)
  71. break;
  72.  
  73. fwrite(&y, sizeof(int), 1, b);
  74. x = y;
  75. ptr2 = k+1;
  76. k++;
  77. cout << "\nx=" << x << " ptr1=" << ptr1 << " ptr2=" << ptr2 << " k=" << k;
  78.  
  79. fseek(a, ptr1*sizeof(int), 0);
  80. fread(&x, sizeof(int), 1, a);
  81. fwrite(&x, sizeof(int), 1, b);
  82. ptr1++;
  83. cout << "\nx=" << x << " ptr1=" << ptr1 << " ptr2=" << ptr2 << " k=" << k;
  84.  
  85. fread(&y, sizeof(int), 1, a);
  86.  
  87. if (x*y<0)
  88. fseek(a, ptr2*sizeof(int), 0);
  89. cout << "\ny=" << y << " ptr1=" << ptr1 << " ptr2=" << ptr2 << " k=" << k;
  90. system("pause");
  91. }
  92. fclose(a);
  93. fclose(b);
  94. break;
  95. case 4:
  96. if (!(b = fopen(nameA, "rb")))
  97. {
  98. cout << "\nОшибка создания файла " << nameB << ".\n";
  99. return 1;
  100. }
  101.  
  102. View(b, "\nДанные файла B:\n");
  103. fclose(b);
  104. break;
  105. case 0:
  106.  
  107. system("pause");
  108. return 0;
  109. }
  110. }
  111. }
  112.  
  113. void NameFile(char *name, char *s)
  114. {
  115. puts(s);
  116. fflush(stdin);
  117. gets(name);
  118.  
  119. }
  120.  
  121. void Create(FILE *f)
  122. {
  123. int x;
  124.  
  125. while (true)
  126. {
  127. cout << "\nВведите число (0 - конец ввода):\n";
  128. cin >> x;
  129.  
  130. if (!x) break;
  131. fwrite(&x, sizeof(int), 1, f);
  132. }
  133. }
  134.  
  135. void View(FILE *f, char *s)
  136. {
  137. int x;
  138.  
  139. cout << s;
  140. while (fread(&x, sizeof(int), 1, f) == 1)
  141. cout << x << " ";
  142. cout << endl;
  143. }
  144.  
  145. int Menu()
  146. {
  147. int i;
  148.  
  149. do
  150. {
  151. cout << "Выберите режим работы\n";
  152. cout << "1 - создание файла;\n";
  153. cout << "2 - просмотр заданного файла;\n";
  154. cout << "3 - создание файла В;\n";
  155. cout << "4 - просмотр файла В.\n";
  156. cout << "0 - выход\n";
  157.  
  158. cin >> i;
  159. } while (i>4 || i<0);
  160.  
  161. return i;
  162. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function 'int main()':
prog.cpp:17:72: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
  NameFile(nameA, "Введите имя исходного файла:");
                                                                        ^
prog.cpp:40:45: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    View(a, "\nДанные файла А:\n");
                                             ^
prog.cpp:50:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    NameFile(nameB, "Введите имя результирующего файла:");
                                                                                      ^
prog.cpp:102:44: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    View(b, "\nДанные файла B:\n");
                                            ^
prog.cpp: In function 'void NameFile(char*, char*)':
prog.cpp:117:11: error: 'gets' was not declared in this scope
  gets(name);
           ^
stdout
Standard output is empty