Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SiAOD2 2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //Создать два новых файла из значений исходного, переписав в один из них первую половину чисел исходного
- //, а в другой, оставшуюся часть. В исходный файл слить данные их двух новых файлов упорядоченными по возрастанию парами,
- //т.е. прочитать первые числа двух файлов, сначала в исходный файл записать меньшее из них, а за ним большее.
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <random>
- #include <ctime>
- using namespace std;
- //чтение из текстового файла и вывод значений на монитор
- ///постусловие 0 - sucess, 1 - error
- void fillFile(ofstream& otf);
- bool existFile(string filename);
- void createFile(string filename);
- void addNoteToFile(string filename, int n);
- int getCountNumbers(string filename);
- void printFile(string filename);
- int getNumber(string filename, int ind);
- void rewriteFiles(string filename);
- int main()
- {
- setlocale(LC_ALL, "rus");
- srand(time(NULL));
- rewriteFiles("test1");
- }
- void rewriteFiles(string filename) {
- createFile("file1");
- createFile("file2");
- int count = getCountNumbers(filename),t,t1;
- ifstream itf(filename+".txt"),itf1;
- ofstream otf("file1.txt");
- for (int i = 0; i < count / 2; i++) {
- itf >> t;
- otf << t<<' ';
- }
- otf.close();
- otf.open("file2.txt");
- for (int i = count/2; i < count; i++) {
- itf >> t;
- otf << t<<' ';
- }
- itf.close();
- otf.close();
- otf.open(filename + ".txt");
- itf.open("file1.txt");
- itf1.open("file2.txt");
- while (itf >> t) {
- itf1 >> t1;
- if (t < t1)
- {
- otf << t << " ";
- otf << t1 << "\n";
- }
- else {
- otf << t1 << " ";
- otf << t << "\n";
- }
- }
- if (itf1 >> t1) otf << t1;
- otf.close();
- itf.close();
- itf1.close();
- }
- void fillFile(ofstream& otf) {
- int count = rand() % 91 + 10, t;
- while (count != 0) {
- t = rand() % count + 1;
- for (int i = 0; i < t; i++) otf << rand() % 2001 - 1000 << ' ';
- count -= t;
- if (count != 0)otf << '\n';
- }
- }
- bool existFile(string filename) {
- ifstream itf(filename + ".txt");
- itf.close();
- return itf ? true : false;
- }
- void createFile(string filename) {
- ofstream otf(filename + ".txt");
- // fillFile(otf);
- otf.close();
- }
- void addNoteToFile(string filename, int n) {
- ofstream otf(filename + ".txt", ios::app);
- otf << n << " ";
- }
- int getCountNumbers(string filename) {
- if (!existFile(filename)) {
- cerr << "Такого файла не существует!\n";
- return -1;
- }
- ifstream otf(filename + ".txt");
- int c = 0, t;
- while (otf >> t) c++;
- return c;
- }
- void printFile(string filename) {
- if (!existFile(filename)) {
- cerr << "Такого файла не существует!\n";
- return;
- }
- ifstream itf(filename + ".txt");
- string t;
- while (!itf.eof()) {
- getline(itf, t);
- cout << t << '\n';
- }
- }
- int getNumber(string filename, int ind) {
- if ((ind > getCountNumbers(filename) || ind < 1) || !existFile(filename)) {
- cerr << "Индекс > чем кол-во чисел или файла не существует!\n";
- return -1;
- }
- ifstream itf(filename + ".txt");
- int c = 0, t;
- while (itf >> t) if (++c == ind) return t;
- }
- ///////////////////////////////////////////////////////////////////////////////
- #include <string.h>
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct Worker {
- string Name; //Фамилия сотрудника
- float salary; //Заработная плата
- int age; //Возраст рабочего
- };
- int main()
- {
- const char* FName = "Worker.bin"; //Путь к файлу. Вписывайте свой.
- Worker teacher; //teacher - Записываемый в файл объект структуры
- Worker w1; //w1 - читаемый из файл объект структуры
- ofstream otf(FName);
- // fillFile(otf);
- otf.close();
- /*ЗАПОЛНЯЕМ СТРУКТУРУ*/
- teacher.Name="Pupkin"; //в случае работы с Си-строками, нужно копировать строку в строку
- teacher.age = 30;
- teacher.salary = 1523.99;
- /*Записываем структуру в файл*/
- ofstream f1(FName, ios::binary);
- f1.write((char*)&teacher, sizeof(teacher));
- f1.close();
- /*Читаем структуру из файла */
- ifstream f2(FName, ios::binary | ios::in);
- f2.read((char*)&w1, sizeof(teacher));
- f2.close();
- /*Вывод данных на экран*/
- cout << w1.Name << '\t' << w1.age << '\t' << w1.salary << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement