Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 03.06.2019
Сообщений: 81
1

Switch case. не работает вызов методов

25.09.2019, 20:29. Показов 918. Ответов 3
Метки нет (Все метки)

Работают все кейсы кроме 2 и 3, так как не вызываются методы. Как можно это исправить?
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream>
#include <fstream>
#include <map>
#include <cstdlib>;
#include <windows.h>;
#include <sstream>
#include <cctype>
#include <ctype.h>
#include <cstring>
#include <string>
using namespace std;
bool famio(std::string & s)
{
    std::istringstream ist(s);
    std::string f, i, o;
    if ( ( ist >> f ) && ( ist >> i ) && ( ist >> o ) )
    {
        i[1] = o[1] = '.';
        i.resize(2);
        o.resize(2);
        std::ostringstream ost;
        ost << f << ' ' << i << ' ' << o;
        s = ost.str();
        return true;
    }
else
return false;
}
 
bool IsPalindrome(string const&line)
{
        size_t size=line.size();
        for(size_t i = 0; i < size/2; i++)
        if(line[i]!=line[size-1-i]) return false;
            return true;
}
 
int main()
{
    int c;
    cout << "input c:\t";
    cin >> c;
        switch (c)
        {
            case 1:
                {
                setlocale(LC_ALL,"Russian");
                ifstream fileIn("text.txt");
                string sentence;
                while (!fileIn.eof())
                    sentence+= fileIn.get();
                for (int i = sentence.size()-1; i >= 0; i--)
                {
                    if (sentence[i] == '.')
                    {
                    for (int j = i+2; sentence[j-1] != '.'
                        && j < sentence.size(); j++)
                    cout << sentence[j];
                    cout << " ";
                    }
                }
                for (int j = 0; sentence[j-1] != '.' && j < sentence.size(); j++)
                    cout << sentence[j];
                return 0;
            break;
                }
 
            case 2:
                {
                std::string s;
                while ( std::cout << "FIO: " && std::getline(std::cin, s) && ! s.empty() )
                {
                if ( famio(s) )
                    std::cout << "RET: " << s << std::endl;
                else
                    std::cerr << "Wrong string format!" << std::endl;
                }
 
                return 0;
            break;
                }
 
            case 3:
                {
                setlocale( LC_ALL,"Russian" );
                string s, line;
                cout << "Строка:\n";
                getline(cin, s);
                size_t i=0;
                while (s[i])
                {
                    if (s[i]!=' ') line+=tolower(s[i]);
                    i++;
                }
                if(IsPalindrome(line))
                    cout << "Палиндром";
                else
                    cout << "Непалиндром\n";
 
                return 0;
            break;
                }
 
            case 4:
                {
                int i;
                unsigned char buf[100];
                setlocale( LC_ALL, "" );
                strcpy( (char*)buf, "НИЖНИЙ РЕГИСТР, верхний регистр" );
                for ( i= 0; buf[i]!='\0'; i++ )
                {
                    if ( isupper( buf[i] ) )
                    {
                        buf[i]= tolower( buf[i] );
                    }
                    else if ( islower( buf[i] ) )
                    {
                        buf[i]= toupper( buf[i] );
                    }
                }
                cout <<"Result\n" <<buf <<"\n";
                return 0;
            break;
                }
 
            case 5:
                {
                setlocale( LC_ALL,"Russian" );
                ifstream fin("slovo.txt");
                if (fin.is_open())
                {
                    string line, word, word1;
                    stringstream ss;
                    ss << fin.rdbuf();
                    line = ss.str();
                    int i=0, count=0;
                    while (line[i])
                    {
                        if (line[i]=='.') line[i]=' ';
                        i++;
                    }
                    cout << "Введите слово:\n";
                    cin >> word1;
                    stringstream words(line);
                    while (words >> word)
                    {
                        if(word==word1) count++;
                    }
 
                    cout << "Количество слов=" << count << "\n";
                }
                else
                    cout << " Unable to open file\n";
                return 0;
            break;
                }
 
            case 6:
                {
                    setlocale(LC_ALL,"Russian");
                    string s;
                    ifstream in1("file.txt");
                    map<string, int> D;
                    while (in1 >> s)
                        D[s]++;
                        in1.close();
                    map <string, int>::iterator it;
                    ofstream res("filee.txt");
                    for (it = D.begin(); it != D.end(); it++)
                        res << it->first << endl;
                    return 0;
            break;
                }
        }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2019, 20:29
Ответы с готовыми решениями:

Не работает операция switch-case
Программа должна переводить число от 0 до 255 в двоичную систему, побитово декодировать информацию...

Оптимальная конструкция switch-case-while / while-switch-case
Имеется конструкция типа: switch() { case 1: while() { ... }

Вызов метода объекта для проверки в конструкции switch-case
Ребят, каким образом создать объект и метод для него, чтобы в кейсах просто метод вызывать, а то с...

Не корректно работает switch() case
Мне нужно сделать switch case строк не подскажите как это реализовать? switch(Values-&gt;Strings)) {...

3
Продавец времени
6454 / 3452 / 800
Регистрация: 12.03.2015
Сообщений: 16,491
25.09.2019, 20:32 2
Цитата Сообщение от Igor912 Посмотреть сообщение
Как можно это исправить?
Прогнать под дебаггером, понаставив точки останова в проблемных местах.
0
С чаем беда...
Эксперт CЭксперт С++
9441 / 4935 / 1350
Регистрация: 18.10.2014
Сообщений: 11,492
25.09.2019, 20:47 3
Цитата Сообщение от Igor912 Посмотреть сообщение
так как не вызываются методы
О каких "методах" идет речь?
0
136 / 76 / 60
Регистрация: 14.09.2019
Сообщений: 218
25.09.2019, 21:10 4
Igor912, во 2 и 3 кейсе функция getline() с двумя параметрами не запускается. Запустится, если ей передать ещё один третий параметр - разделитель. Но тогда в строке появятся дополнительные символы, которые не вводились с клавиатуры.
Мне кстати тоже интересно почему getline с двумя параметрами
C++
1
getline(cin, s);
игнорируется. Так и должно быть?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2019, 21:10

Не работает конструкция switch-case
Здравствуйте. Изучаю С# вторую неделю и не понимаю почему у меня не работает switch-case в...

switch case с range не работает
сделал как тут в ответах...

Как работает switch-case ?
Собственно когда-то читал, что некоторые компиляторы для си превращали switch-case в over9000...

Цикл switch case работает не правильно
Цикл switch работает только по первому условию public override void BuildBread_products(int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru