Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Проверьте, пожалуйста, код (выдает ошибку "Не удается найти указанный файл") - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разбить заданное целое число на 2 слагаемых http://www.cyberforum.ru/cpp-beginners/thread1822935.html
2. Разбейте заданное целое число на 2 слагаемых всеми различными способами. Разбиения, отличающиеся лишь порядком слагаемых, разными не считать.
C++ В заданной символьной строке, состоящей из букв и чисел, найти сумму чисел 2. Задана символьная строка, состоящая из букв и чисел. Напечатать сумму чисел. http://www.cyberforum.ru/cpp-beginners/thread1822933.html
C++ Напечатать 20 первых степеней числа 2
1. Напечатайте 20 первых степеней числа 2.
C++ В заданной символьной строке, содержащей две точки, определить количество символов между точками
1. Задана символьная строка, содержащая две точки. Определить и напечатать количество символов между точками.
C++ Найти сумму простых делителей каждого числа заданной последовательности http://www.cyberforum.ru/cpp-beginners/thread1822923.html
Вводится последовательность целых чисел, 0 – конец последовательности. Для каждого числа последовательности найти сумму его простых делителей (функцией оформить определение суммы простых делителей...
C++ Найти наибольшее число среди отрицательных чисел заданной последовательности 1. Дана последовательность из 10 целых чисел. Найти величину наибольшего среди отрицательных чисел этой последовательности. 2. Дана последовательность из 10 целых чисел. Вычислить разность ... подробнее

Показать сообщение отдельно
Moonlit
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 36

Проверьте, пожалуйста, код (выдает ошибку "Не удается найти указанный файл") - C++

10.10.2016, 07:55. Просмотров 231. Ответов 10
Метки (Все метки)

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
///////////////////////////////////////////////////////////////////////////////
//В текстовом файле специальные термины выделены
//кавычками. Переписать файл так, чтобы термины выделялись
//прописными буквами.
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <fstream>
#include <iostream>
#include <string>
typedef std::string         T_str;
typedef T_str::size_type    T_pos;
///////////////////////////////////////////////////////////////////////////////
enum    T_symb_state
{
    OTHER_SYMB,
    QUOTE_SYMB,
    SPACE_SYMB
};
///////////////////////////////////////////////////////////////////////////////
enum    T_term_state
{
    NO_TERM,
    START_TERM,
    IN_TERM,
    FINISH_TERM
};
///////////////////////////////////////////////////////////////////////////////
T_symb_state    get_symb_state(char    symb)
{
    T_symb_state    res{ OTHER_SYMB };
 
    if (
        symb == '"'
        )
    {
        res = QUOTE_SYMB;
    }
    else if (
        std::isspace(symb)
        )
    {
        res = SPACE_SYMB;
    }
 
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
T_term_state    get_term_state
(
    T_symb_state    symb_state,
    T_term_state    term_state
)
{
    T_term_state    res{ NO_TERM };
 
    switch (symb_state)
    {
    case    QUOTE_SYMB:
        res = term_state == IN_TERM
            ? FINISH_TERM
            : START_TERM;
        break;
 
    case    OTHER_SYMB:
        if (
            term_state == START_TERM
            || term_state == IN_TERM
            )
        {
            res = IN_TERM;
        }
 
    default:
        ;
    }//switch
 
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
void    process_terms(T_str    &   str)
{
    T_term_state    term_state{ NO_TERM };
    T_pos           left_quote_ind{};
 
    for (T_pos i{}; i < str.size(); ++i)
    {
        auto
            symb_state = get_symb_state(str[i]);
 
        term_state = get_term_state
        (
            symb_state,
            term_state
        );
 
        switch (term_state)
        {
        case    START_TERM:
            left_quote_ind = i;
            break;
 
        case    FINISH_TERM:
            for (
                T_pos
                j = left_quote_ind + 1;
                j   <   i;
                ++j
                )
            {
                str[j] = std::toupper(str[j]);
            }
            break;
 
        default:
            ;
        }//switch
    }//for
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::ifstream   ifile("f.txt");
 
    if (!ifile)
    {
        std::cout << "bad file" << std::endl;
 
        exit(1);
    }//if
 
    std::ofstream   ofile("ff.txt");
 
    T_str       cur_str;
 
    while (
        getline(ifile, cur_str)
        )
    {
        process_terms(cur_str);
        ofile << cur_str << '\n';
    }
    ofile << std::endl;
 
    std::cout << "finish" << std::endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru