С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21

Работа с текстовыми файлами

17.04.2018, 22:41. Показов 1232. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть програма которая используя числа из текстового файла input.txt и решает по формуле указанной в программе.
Код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
 
using namespace std;
 
int main()
{
    ifstream fin("1.txt");
    double a, b;
    try
    {
        if (!fin.good())
        {
            throw "File input.txt doesn't exist!";
        }
        fin >> a >> b;
        cout << "K oplate: " << a * b / 100 << " UAH.\n";
    }
    catch (const char* error)
    {
        cout << error << "\n";
    }
    fin.close();
    return 0;
}
Мне нужно сделать так, что-бы при отсутствии текстового файла программа создавала его сама и оставляла его не заполненым. И что для меня более важно, если в текстовом файле отсутствуют или некоректно введены данные, то выдаёт ошибку "Некоректный формат данных" или "Отсутствуют данные". Зарание спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2018, 22:41
Ответы с готовыми решениями:

Работа с текстовыми файлами
Делаю лабы по С++. Необходимо записать несколько строк в файл, а затем считать их оттуда. Использую методы, описанные в методичке (по сути,...

Работа с текстовыми файлами
Всем доброго дня! Нужна помощь в решении следующей работы: Нужно создать файл, содержащий текст, набранный заглавными английскими...

Работа с текстовыми файлами
Пожалуйста, помогите с задачей: Дан файл f, компоненты которого являются действительными числами. Найти: 1.наибольшее из значений...

12
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
17.04.2018, 23:36
Цитата Сообщение от _easy_ Посмотреть сообщение
Мне нужно сделать так, что-бы при отсутствии текстового файла программа создавала его сама и оставляла его не заполненым.
Пpи созднии объекта откpытии файла для записи в него
C++
1
2
ofstream obj;
obj.open(name.txt);
Если файла нет, то он создает его автоматически.

Добавлено через 4 минуты
Цитата Сообщение от _easy_ Посмотреть сообщение
И что для меня более важно, если в текстовом файле отсутствуют или некоректно введены данные, то выдаёт ошибку "Некоректный формат данных" или "Отсутствуют данные"
если файл создается пpи pаботе пpогpаммы, то ставь условие пpовеpки, что запись в файл только целочисленные значения т.е int.
1
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 21:18  [ТС]
Хорошо, а если у меня уже есть текстовый файл с данными с названием "1.txt" оно стирает всю информацию из моего файла и снова его создаёт уже пустым программа пишет в строчке вместо ответа некое "inf", это из-за того что у меня стоит "double" вместо "int", но в том то и проблемма что я работаю именно с десятичными числами.
0
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
18.04.2018, 22:58
Цитата Сообщение от _easy_ Посмотреть сообщение
Хорошо, а если у меня уже есть текстовый файл с данными с названием "1.txt" оно стирает всю информацию из моего файла и снова его создаёт уже пустым программа пишет в строчке вместо ответа некое "inf", это из-за того что у меня стоит "double" вместо "int", но в том то и проблемма что я работаю именно с десятичными числами.
Без кода ничего сказать не могу.
0
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:13  [ТС]
Кстати код у меня частично изменился:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream obj; // правильно ведь поставил ваши строчки?
    obj.open("input.txt");
    double a, b;
    try
    {
        if (!fin.good())
        {
            throw "File input.txt doesn't exist! Please create it and fill the data";
        }
                // примерно здесь думаю стоит сделать проверку на коректность данных из текстового файла
        fin >> a >> b;
        cout << "K oplate: " << a * b / 100 << " UAH.\n";
    }
    catch (const char* error)
    {
        cout << error << "\n";
    }
    fin.close();
    return 0;
}
А в текстовом файле, если вдруг важно, числа лежат в столбик.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:29
Вы файл затираете в строчках 11-12. Они должны выполняться только после неуспешной попытки открыть файл.
1
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:32  [ТС]
Хорошо, значит получается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    double a, b;
    try
    {
        if (!fin.good())
        {
            throw "File input.txt doesn't exist! Please create it and fill the data";
        }
                // примерно здесь думаю стоит сделать проверку на коректность данных из текстового файла
        fin >> a >> b;
        cout << "K oplate: " << a * b / 100 << " UAH.\n";
    }
    catch (const char* error)
    {
        cout << error << "\n";
    }
    fin.close();
    return 0;
}
Правильно?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:33
Лучший ответ Сообщение было отмечено _easy_ как решение

Решение

_easy_, правильно, но пустой файл создаваться не будет. Если он нужен, добавьте проверку перед теми строчками.
0
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:37  [ТС]
Ну вобщем новый пустой файл не обязателен т.к. есть просто сообщение про отсутствие файла. А вот про наличие данных в определённом их колличестве (2 строчки = 2 переменные) в файле очень даже кстати.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:41
_easy_, второе предложение не понял о чем. Какие то проблемы еще остались?
0
0 / 0 / 0
Регистрация: 18.02.2018
Сообщений: 21
18.04.2018, 23:47  [ТС]
По факту проверка на наличие самого текстового файла уже работает.
Я хочу добавить вторую проверку. Если файл пустой - выводить сообщение. Как это написать, используя "fseek". И нужна третья проверка на наличие 6 чисел в текстовом файле, често я хз как их сделать
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
18.04.2018, 23:49
_easy_, зачем использовать fseek? Сделайте счетчик и увеличивайте его после каждого считывания a и b. Если считано 0 пар значений, то это и будет ваша вторая проверка. Если считано 6 пар значений (или 3?), то это ваша третяя проверка.
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
10.05.2018, 21:19
Цитата Сообщение от _easy_ Посмотреть сообщение
Как это написать, используя "fseek".
Здравствуйте! Проверить файл на пустоту можно, например, так:

C++
1
2
3
4
5
6
7
8
9
bool ifFileIsEmpty() {
    ifstream fin("input.txt");
    long fsize;
    fin.seekg(0, ios::end);
    fsize = fin.tellg();
    if (fsize == 0) return true;
    return false;
    fin.close();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2018, 21:19
Помогаю со студенческими работами здесь

Работа с текстовыми файлами
Здравствуйте, уважаемые !!! Появились проблемы во время решения задачи. Никак не могу решить проблему. Задача такова: Существует...

Работа с текстовыми файлами
3)Разработать программу, которая выполняет следующие действия: создает входной поток для построчного чтения из внешнего файла и выходной...

Работа с текстовыми файлами
Доброго времени суток. Есть ф-ия: void FillM(int **&amp;tab, int &amp;w, int &amp;h) { FILE *f; ...

Работа с текстовыми файлами
Разработать программу, которая: а) создает текстовый файл TF5_1 с символьных строк различной длины; б) читает содержимое файла TF5_1,...

Работа с текстовыми файлами
Доброй ночи. Будте добры, помогите сделать задачу с файлами. Теоретически понимаю что нужно делать, а программно реализовать не могу( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru