-10 / 2 / 1
Регистрация: 08.01.2015
Сообщений: 325
1

Зацикливание проверки

18.10.2015, 15:23. Показов 1290. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
1) Хотелось бы узнать почему не срабатывает проверка в цикле?
2) Можно ли обойтись без цикла и темболее уж без goto
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
void main()
{
    setlocale(LC_ALL, "Rus");
    string capital_letters;
    string letters = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    transform(letters.begin(), letters.end(), std::back_inserter(capital_letters), ::toupper);
    letters = letters + capital_letters;
 
    cout << letters << endl;
 
    size_t found;
    string file_name;
    string array_name;
    string enum_name;
 
    cout << "Введите названия файла " << endl;
    cin >> file_name;
    found = file_name.find_first_not_of(letters);
    while (true)
    {
        if (found == string::npos) 
        {
            file_name = "\0";
            cout << "Введите названия файла " << endl;
            cin >> file_name;
        }
    }
 
    cout << "Введите названия массива " << endl;
    cin >> array_name;
 
    cout << "Введите названия enum'a" << endl;
    cin >> enum_name;
 
    ofstream ofs("C://" + file_name + ".txt");
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2015, 15:23
Ответы с готовыми решениями:

Зацикливание
При выводе стека бесконечный вывод последнего элемента Stack&lt;Command&gt; cmds;...

Зацикливание
Вообще не понимаю тему, но надо срочно сдать задачу. Вводится целое число Х (1 &lt;= X &lt;= 1000) ...

Зацикливание
Всем доброго времени суток. Написал прогу по определению кратности второго числа относительно...

зацикливание
Не выдает нужного результата происходит зацыкливание // wer.cpp : Defines the entry point for the...

11
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.10.2015, 15:29 2
Что-то вроде
C++
1
2
3
4
5
6
7
8
9
10
11
    getline(cin,file_name);
    found = file_name.find_first_not_of(letters);
    do
    {
        if (found == string::npos) 
        {
            cout << "Введите названия файла " << endl;
            getline(cin,file_name);
        }
        found = file_name.find_first_not_of(letters);
    }while(found != string::npos);
0
-10 / 2 / 1
Регистрация: 08.01.2015
Сообщений: 325
18.10.2015, 15:42  [ТС] 3
Не работает. Просто мигает стрелочка (не знаю как её ещё назвать)
Миниатюры
Зацикливание проверки  
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
18.10.2015, 15:48 4
через F10 код запустите да посмотрите что не работает
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.10.2015, 15:51 5
У Вас в коде нет getline(cin,file_name);
перед 65 строкой
found = file_name.find_first_not_of(letters);
0
-10 / 2 / 1
Регистрация: 08.01.2015
Сообщений: 325
18.10.2015, 15:53  [ТС] 6
zss, есть.
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
void main()
{
    setlocale(LC_ALL, "Rus");
    string capital_letters;
    string letters = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    transform(letters.begin(), letters.end(), std::back_inserter(capital_letters), ::toupper);
    letters = letters + capital_letters;
 
    cout << letters << endl;
 
    size_t found;
    string file_name;
    string array_name;
    string enum_name;
 
    cout << "Введите названия файла " << endl;
    getline(cin, file_name);
    found = file_name.find_first_not_of(letters);
    do
    {
        if (found == string::npos)
        {
            cout << "Введите названия файла " << endl;
            getline(cin, file_name);
        }
        found = file_name.find_first_not_of(letters);
    } 
    while (found != string::npos);
    cout << "Введите названия массива " << endl;
    cin >> array_name;
 
    cout << "Введите названия enum'a" << endl;
    cin >> enum_name;
 
    ofstream ofs("C://" + file_name + ".txt");
    system("pause");
}
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.10.2015, 17:51 7
А Вам еще надо учесть, что название вводится в 866 кодировке, а не в windows 1251

Добавлено через 14 минут
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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <windows.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Rus");
    string capital_letters;
    string letters = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    transform(letters.begin(), letters.end(), std::back_inserter(capital_letters), ::toupper);
    letters = letters + capital_letters;
 
    cout << letters << endl;
 
    size_t found=1;
    string file_name;
    string array_name;
    string enum_name;
    while (found != string::npos) 
    // цикл проверки того, что введутся только русские буквы
    {
        cout << "Введите названия файла русскими буквами" << endl;
        char tmp[100];
        cin.getline(tmp,100);
        OemToChar(tmp,tmp);
        file_name=tmp;
        found = file_name.find_first_not_of(letters);
    } 
    cout << "Введите названия массива " << endl;
    cin >> array_name;
 
    cout << "Введите названия enum'a" << endl;
    cin >> enum_name;
    file_name="C://" + file_name + ".txt";
    ofstream ofs(file_name.c_str());
    system("pause");
    return 0;
}
0
-10 / 2 / 1
Регистрация: 08.01.2015
Сообщений: 325
18.10.2015, 17:58  [ТС] 8
Не пойдет зачем создавать чар? -_-
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.10.2015, 19:36 9
Цитата Сообщение от Kenny_Dalglish Посмотреть сообщение
зачем создавать чар
Функция OemToChar работает с char.
Аналога для string я не знаю.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
18.10.2015, 20:36 10
zss, Можно же:
C++
1
2
std::string str;
str.c_str();
Или нет?
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
18.10.2015, 21:01 11
Цитата Сообщение от makfak Посмотреть сообщение
str.c_str();
Дает копию текста строки. Все равно придется работать с char
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
18.10.2015, 21:31 12
zss, А, все, понял.
0
18.10.2015, 21:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2015, 21:31
Помогаю со студенческими работами здесь

Зацикливание
помогите исправить ошибку пожалуйста! у меня зацикливается она! # include &quot;stdafx.h&quot; # include...

Зацикливание
Вобщем, проверял уже 100 раз. Думаю причина в моем неумении работать с файлами. Почти все...

зацикливание в C++
Подскажите, пожалуйста, как зациклить программу, чтобы при попытке набрать другой символ выдавалось...

Зацикливание
Помогите разобраться while (point &gt;= min &amp;&amp; point &lt;= max || prodal &gt;= min &amp;&amp; prodal &lt;= max) {...

Происходит зацикливание
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;windows.h&gt; #include &lt;list&gt; #include &lt;iterator&gt;...

Зацикливание ввода
Народ подскажите в чем может быть дело, если ввести не корректные данные в представленный код,...


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

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

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