Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <clocale>
- #include <fstream>
- #include <cstdlib>
- using namespace std;
- int *lineSort(int *kLine, int lineSize) {
- int temp;
- for (int i = 0; i < lineSize - 1; i++) {
- for (int j = 0; j < lineSize - 1; j++) {
- if (kLine[j] > kLine[j + 1]) {
- temp = kLine[j];
- kLine[j] = kLine[j + 1];
- kLine[j + 1] = temp;
- }
- }
- }
- return kLine;
- }
- void sumElements(int *kLine, int lineSize) {
- int sum = 0;
- for (int i = 0; i < lineSize; i++) {
- if (kLine[i] > 0) {
- for (int j = i + 1; kLine[j] <= 0; j++) {
- sum += kLine[j];
- }
- break;
- }
- }
- if (sum == 0) {
- cout << "\nПодходящих элементов нет!\n";
- } else {
- cout << "\nСумма элементов, расположенных между 1 и 2 положительным эл-ом: " << sum << endl;
- }
- }
- void binaryOut(int *array) {
- cout << "Содержимое двоичного файла: \nN: " << array[0] << "; M: " << array[1] << ";\n";
- cout << "Матрица, считанная из двоичного файла: \n";
- for (int i = 0; i < array[0]; i++) {
- int el = 0;
- for (int j = 2 + (i * array[1]); el < array[1]; el++) {
- cout << array[j++] << ' ';
- }
- cout << endl;
- }
- }
- int main() {
- setlocale(LC_ALL, "russian");
- system("color F0");
- int n, m;
- ifstream textInput("source.txt");
- fstream binaryInOut("output.txt", ios_base::binary | ios_base::in | ios_base::out | ios_base::trunc);
- textInput >> n >> m;
- binaryInOut.write((char *)&n, sizeof(n));
- binaryInOut.write((char *)&m, sizeof(m));
- int *textTemp = new int[m];
- while (!textInput.eof()) {
- for (int i = 0; i < m; i++) {
- textInput >> textTemp[i];
- }
- binaryInOut.write((char *)textTemp, sizeof(int) *m);
- }
- delete[] textTemp;
- binaryInOut.seekg(0, ios_base::beg);
- int *binaryTemp = new int[2 + (n * m)];
- binaryInOut.read((char *)binaryTemp, sizeof(int) *(2 + (n * m)));
- binaryOut(binaryTemp);
- delete[] binaryTemp;
- int k;
- cout << "\nВведите номер обрабатываемой строки(k): ";
- cin >> k;
- if (k <= n) {
- int *line = new int[m];
- binaryInOut.seekg((2 + (k - 1) * m) * sizeof(int));
- binaryInOut.read((char *)line, sizeof(int) *m);
- sumElements(line, m);
- binaryInOut.seekp(0, ios_base::end);
- binaryInOut.write((char *)lineSort(line, m), sizeof(int) *m);
- delete[] line;
- int *binaryLine = new int[m];
- binaryInOut.seekg((2 + n * m) * sizeof(int));
- binaryInOut.read((char *)binaryLine, sizeof(int) *m);
- cout << "\nОтсартированная строка, считанная из двоичного файла: ";
- for (int i = 0; i < m; i++) {
- cout << binaryLine[i] << ' ';
- }
- cout << "\n\n";
- delete[] binaryLine;
- } else {
- cout << "\nТакой строки не сущетсвует!\n\n";
- }
- binaryInOut.close();
- textInput.close();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment