С++ создать текстовый файл с произвольной информацией. Организовать просмотр содержимого файла. Организовать чтение и обработку данных из файла в соответствии с заданием. Сохранить полученные результаты в новый текстовый файл. «Область»: название области; областной центр; население; площадь территории; губернатор. Вывести данные про области, население которых меньше 2 млн. жителей.

vadim1154 vadim1154    1   27.06.2020 12:28    35

Ответы
Catia2006 Catia2006  20.12.2023 20:45
Хорошо, давайте пошагово разберем, как выполнить данное задание.

1. Создание текстового файла с произвольной информацией:
Для этого используем операции записи в файл в C++. Вот пример кода, который создаст текстовый файл и запишет в него произвольную информацию:

```cpp
#include // подключаем библиотеку для работы с файлами

int main() {
// открываем файл для записи
std::ofstream file("data.txt");

// записываем произвольную информацию в файл
file << "Область: Московская\n";
file << "Областной центр: Москва\n";
file << "Население: 12 млн. жителей\n";
file << "Площадь территории: 2,511 км²\n";
file << "Губернатор: Иванов Иван Иванович\n";

// закрываем файл
file.close();

return 0;
}
```
В приведенном примере используется объект `std::ofstream` для записи данных в файл. Метод `<<` используется для записи каждой строки в файл.

2. Просмотр содержимого файла:
Для просмотра содержимого файла можно использовать простую операцию чтения файла в C++. Вот пример кода, который прочитает и выведет содержимое файла:

```cpp
#include
#include

int main() {
// открываем файл для чтения
std::ifstream file("data.txt");

// проверяем, успешно ли открылся файл
if (!file.is_open()) {
std::cout << "Ошибка открытия файла!";
return 1;
}

// читаем и выводим содержимое файла
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}

// закрываем файл
file.close();

return 0;
}
```
В этом примере используется объект `std::ifstream` для чтения данных из файла, и метод `std::getline` для считывания каждой строки из файла и ее вывода на экран.

3. Чтение и обработка данных из файла в соответствии с заданием:
Для чтения и обработки данных из файла мы можем модифицировать предыдущий код следующим образом:

```cpp
#include
#include
#include
#include

struct Region {
std::string name;
std::string center;
unsigned int population;
double area;
std::string governor;
};

int main() {
// открываем файл для чтения
std::ifstream file("data.txt");

// проверяем, успешно ли открылся файл
if (!file.is_open()) {
std::cout << "Ошибка открытия файла!";
return 1;
}

std::vector regions;

// читаем и обрабатываем данные из файла
std::string line;
while (std::getline(file, line)) {
std::stringstream ss(line);
Region region;

std::string regionInfo;
std::getline(ss, regionInfo, ':');
ss.ignore(1);
std::getline(ss, region.name);

std::getline(file, line);
std::stringstream ss2(line);
std::getline(ss2, regionInfo, ':');
ss2.ignore(1);
std::getline(ss2, region.center);

std::getline(file, line);
std::stringstream ss3(line);
std::getline(ss3, regionInfo, ':');
ss3.ignore(1);
ss3 >> region.population;

std::getline(file, line);
std::stringstream ss4(line);
std::getline(ss4, regionInfo, ':');
ss4.ignore(1);
ss4 >> region.area;

std::getline(file, line);
std::stringstream ss5(line);
std::getline(ss5, regionInfo, ':');
ss5.ignore(1);
std::getline(ss5, region.governor);

if (region.population < 2000000) {
regions.push_back(region);
}
}

// закрываем файл
file.close();

// сохраняем полученные результаты в новый текстовый файл
std::ofstream resultFile("result.txt");
for (const auto& region : regions) {
resultFile << "Область: " << region.name << std::endl;
resultFile << "Областной центр: " << region.center << std::endl;
resultFile << "Население: " << region.population << " жителей" << std::endl;
resultFile << "Площадь территории: " << region.area << " км²" << std::endl;
resultFile << "Губернатор: " << region.governor << std::endl;
resultFile << std::endl;
}
resultFile.close();

return 0;
}
```
В этом примере каждая строка из файла считывается в отдельную переменную типа `std::string`, а затем обрабатывается и сохраняется в структуру `Region`. Если население области меньше 2 млн., то эта область добавляется в `vector` regions.

4. Вывод данных про области с населением меньше 2 млн. жителей:
Мы уже добавили такую фильтрацию в предыдущем шаге, поэтому осталось только вывести полученные результаты. Они уже сохранены в новом текстовом файле `result.txt`, но вот пример кода, который выведет эти результаты на экран:

```cpp
#include
#include
#include
#include

struct Region {
std::string name;
std::string center;
unsigned int population;
double area;
std::string governor;
};

int main() {
// открываем файл для чтения
std::ifstream file("result.txt");

// проверяем, успешно ли открылся файл
if (!file.is_open()) {
std::cout << "Ошибка открытия файла!";
return 1;
}

// читаем и выводим содержимое файла
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}

// закрываем файл
file.close();

return 0;
}
```
В этом примере мы просто открываем и читаем файл `result.txt`, и выводим его содержимое на экран.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Другие предметы