1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192

Замена представления даты и времени в текстовом файле

04.01.2019, 13:04. Показов 7117. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа должна запускаться из командной строки с одним параметром — именем входного файла. Исходный текст состоит из слов, отделенных друг от друга пробелами. Некоторые слова представляют собой запись даты или времени. Например: 27.09.06, 09:15:00. Необходимо заменить такое представление на следующее: 27 сентябрь 2006г., 9 час 15 мин 0 сек.

Использовать структурное программирование, никаких классов и ООП. Рекомендуется выполнять через односвязные линейные списки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.01.2019, 13:04
Ответы с готовыми решениями:

Замена слов в одном текстовом файле словами, записанными в другом текстовом файле
Кто-нибудь пожалуйста приведете пример реализации следующей программы имеются два тектовых файла - один с повторяющимися записями типа ...

Класс для представления даты и времени
Здравствуйте, знаю что уже было много тем создано с подобным вопросом. Но начал искать я уже после того, как проделал какую то работу и...

Изменение представления даты и времени в удобный вид
Добрый день! Есть список с датами и временем такого вида: 20120307 065530 Подскажите, пожалуйста, каким образом можно привести к...

74
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
13.01.2019, 12:51
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kesha777 Посмотреть сообщение
Fixer_84, рядом с .exe файлом лежит файл с входным текстом (имеет любое имя .txt)
В консоли пользователь вводит имя этого файла и программа его открывает и работает с ним.
Хорошо. Сейчас сделаю так.

Добавлено через 46 секунд
Цитата Сообщение от Новичок Посмотреть сообщение
auto на int заменить можно(об этом спрашивал TC).
Здравствуйте! Спасибо за ваше замечание. Да, можно

Добавлено через 23 минуты
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Хорошо. Сейчас сделаю так.
Kesha777, я исправил программу. Но будьте внимательны. Если вы хотите, чтобы она работала при компиляции (не запуске .exe из папки Debug) вам нужно будет еще создать файл (или файлы) .txt в папке с названием проекта (она находится рядом с папкой Debug в которой лежит .exe файл). Или вы можете скомпилировать программу один раз, а затем запускать ее через .exe и все будет работать. Вот часть кода, которую нужно исправить, начиная с функции clear():

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
31
32
33
34
35
36
37
38
39
40
41
42
43
//3.
 
void clear(const string &fname) { //Функция очистки файла с именем fname
    ofstream in(fname, ios::out | ios::trunc);
    in.close();
}
 
//4.
 
void output(const string &fname) { //Функция вывода узлов односвязного списка в файл с именем fname
    ofstream out(fname); //Открываем файл с именем fname
    node* tmp = head; //Создаем переменную типа node и присваиваем ей значение head (инициализируем список)
    while (tmp != NULL) { //Пробегаем по списку (пока не встретим NULL)
        out << tmp->data << " "; //Выводим узлы списка в файл с именем fname через пробел 
        tmp = tmp->next; //Переход к следующему элементу в списке
    }
    out.close(); //Закрываем файл с именем fname
}
 
//ВЫПОЛНЕНИЕ ОСНОВНОЙ ПРОГРАММЫ
 
int main() {
    setlocale(LC_ALL, "Russian");
    string fname;
    cout << "Enter a file name: ";
    getline(cin, fname); //Вводим название файла
    ifstream in(fname); //Открываем файл c именем fname
    if (in) { //Если файл с именем fname существует
        string word; //Объявляем строковую переменную (переменную типа string)
        while (in >> word) { //Пробегаем по файлу с именем fname
            add(word); //Добавляем слова в односвязный список
        }
        replace(); //Заменяем соответствующие узлы в списке (корректные дата и время)
        clear(fname); //Очищаем файл с именем fname
        output(fname); //Вывод измененных узлов списка в файл с именем fname
        in.close(); //Закрываем файл с именем fname
    }
    else {
        cout << "File \"" << fname << "\" not found!\n"; //Выводим это сообщение, если файл с именем fname не найден
    }
    system("pause");
    return 0;
}
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
13.01.2019, 13:23  [ТС]
Fixer_84, Спасибо! Вроде пока вопросов нет, буду тестировать
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
13.01.2019, 13:38
Kesha777, хорошо. Договорились.
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
14.01.2019, 13:07  [ТС]
Fixer_84,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool is_date_candidate(const string &date) { //Функция определения потенциальной даты (согласно заданному формату)
    if (date.length() == 10) {
        for (auto i : { 0, 1, 3, 4, 6, 7, 8, 9 }) { //Нужно подключить стандарт C++11 или выше
            if (!(date[i] >= '0' && date[i] <= '9')) {
                return false;
            }
        }
        if (date[2] != '.' || date[5] != '.') {
            return false;
        }
        return true;
    }
    return false;
}
Эту функцию плохо понял. Почему именно такие цифры по которым мы идем циклом, не закомментирована строчка и не понял (да и вообще вся функция не закомментирована.
C++
1
for (auto i : { 0, 1, 3, 4, 6, 7, 8, 9 }) {
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.01.2019, 13:50
Kesha777, здравствуйте! Это функция определения потенциальной даты. Под потенциальной датой имеется ввиду, что когда мы перебираем слова в списке, нам ведь нужно понять как отделять слова от даты и времени. Так, например, строка 99.99.9999 (там могут быть любые цифры) будет являться потенциальной датой, но не будет являться валидной. У потенциальной даты во-первых, всегда будет длина 10, во-вторых, в позициях 0, 1, 3, 4, 6, 7, 8, 9 всегда будут стоять цифры, и, наконец в третьих в позициях 2 и 5 ( индексация начинается с нуля) всегда будут символы "." Если хотя бы одно из этих условий не выпоняется, функция вернет false. Таким образом, прежде чем проверить дату на валидность нужно понять является ли она потенциальной (то есть, может оказаться валидной). Если дата не является потенциальной, то и на валидность ее проверять нет смысла. Аналогично я сделал со временем. Вам теперь понятно?
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
14.01.2019, 14:08  [ТС]
Fixer_84, да понятно, теперь понял что это позиции. А if date.length() == 10 это если слово из 10 символов, так?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.01.2019, 15:06
Kesha777, да.
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
14.01.2019, 15:28  [ТС]
Fixer_84, т.е например слово "Литература" будет прогонятся по проверке валидности даты? прикольно))
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.01.2019, 15:37
Kesha777, сначала функции is_valid_date() и is_valid_time() поймут, что она не является даже потенциальной (если вы посмотрите, внутни этих функций сначала вызываются функции is_date_candidate() и is_time_candidate()) и проверка на валидность для слова "Литература" даже не будет производиться. Малейшие отличия от корректных даты или времени учитываются.
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
14.01.2019, 16:08  [ТС]
Fixer_84, аааа точняк. Все понял)
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.01.2019, 17:27
Добавлено через 2 минуты
Kesha777, напишите, пожалуйста, сдали или нет.
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
14.01.2019, 19:29  [ТС]
Fixer_84, послезавтра
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.01.2019, 22:44
Kesha777, Хорошо.
0
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 192
16.01.2019, 16:48  [ТС]
Fixer_84, сдал, спасибо)
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
16.01.2019, 21:47
Kesha777, не за что. Очень рад, что все получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2019, 21:47

Замена значения в текстовом файле
Добрый день! Есть конфигурационный файл в нём содержится строчка NewLine=1000. Как заменить число получилось, но в самом файле...

Замена слов в текстовом файле
Нужна помощь, как в текстовом файле изменить слово, например, &quot;Black&quot; на &quot;White&quot;?

Замена текста в текстовом файле
Здравствуйте! Может кто подскажет как можно заменить текст в текстовом файле? Буду благодарен. p.s пробовал...

Замена символов в текстовом файле
Добрый день , есть батник в котором пробелы меняются на , Необходимо чтобы пробелы менялись на | (но если ставлю | выполнения...

Поиск и замена в текстовом файле
Здравствуйте! Очень нуждаюсь в Вашей помощи. Перепробовала все найденные мною варианты решения подобных задач и все равно никак не могу...


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

Или воспользуйтесь поиском по форуму:
75
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru