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

Как прекратить ввод string? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
04.07.2013, 19:13     Как прекратить ввод string? #1
Снизу код. Пока прога должна просто напечатать пары имя-возраст,но вопрос в том,как прекратить ввод имен чтобы прога поняла что все,имен больше считывать не надо. Ибо там где числа, то легче,я например вставляю в конце символ | и все,а что со стрингом делать?
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
# include <iostream>
# include <string>
# include <vector>
# include <algorithm>
# include <cmath>
# include <windows.h>
#include <fstream>
using namespace std;
 
int main()
{
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    vector<string> name; 
    vector<int> age;
    string n;
    int a;
    while(cin>>n)
        name.push_back(n);
    while(cin>>a)
        age.push_back(a);
    if(name.size()==age.size()){
    for(int i=0;i<age.size();i++){
        cout<<name[i]<<" - "<<age[i]<<endl;
    }
    }
    else
        cout<<"Эй,человек,ну как же так: "<<name.size()<<" человек(а) и "<<age.size()<<" возроста(ов)?";
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
263 / 185 / 10
Регистрация: 15.01.2011
Сообщений: 668
04.07.2013, 19:20     Как прекратить ввод string? #2
к примеру так:
C++
1
2
3
4
5
6
7
...
if( a == 10 )
{
  std::cout << " ФИНАЛ "<< std::endl;
  break;
}
...
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 19:20     Как прекратить ввод string? #3
Ctrl + Z
Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
04.07.2013, 19:25  [ТС]     Как прекратить ввод string? #4
Jupiter, Так тоже Страуструп писал,но может я не то просто делаю.Эту комбинацию нужно нажать после всех введеных имен? Если так,то в консоли появляеться ^Z
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.07.2013, 19:27     Как прекратить ввод string? #5
Можно зарезервировать имя, которое будет сигнализировать о том что предыдущее введённое имя последнее, а чтоб разрешить ввод любого возможного имени, специальное должно быть не возможным. Например, если прога предназначена только для русских, то можно за такое имя взять exit, так как не может английское слово, пишущееся прямо латиницей, быть русским именем. Но так не учтёшь транслит и не русских. Поэтому надо взять действительно не возможное. Имя не может состоять из одних пробелов, или быть совсем пустым, вот пустую строку и надо взять за специальное имя.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 20:15     Как прекратить ввод string? #6
Цитата Сообщение от Chernobyl Посмотреть сообщение
Если так,то в консоли появляеться ^Z
именно, но винда же user friendly, потому и Ctrl+Z надо подтверждать ентером
Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
06.07.2013, 13:51  [ТС]     Как прекратить ввод string? #7
Проблема решена, воспользовался советом taras'а atavin'а и переписал немного код.Окончательно все работает как требуеться. Благодарю всех.

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
# include <iostream>
# include <string>
# include <vector>
# include <algorithm>
# include <cmath>
# include <windows.h>
#include <fstream>
using namespace std;
 
int main()
{
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
        cout<<"Вводите имена"<<endl;
        vector<string> name; 
        string n;
     do {
        cin>>n;
        name.push_back(n);
        }while(n!="end");
    name.pop_back();//удаляем последний элемент,тоесть тот нолик,он нам не нужен
 
    cout<<"Вводите возрасты"<<endl;
    vector<int> age;
    int a;
    do {
        cin>>a;
        age.push_back(a);
       }while(a!=0);
    age.pop_back();//соответственно удаляем то последне слово энд
 
 
    if(name.size()==age.size()){
    for(int i=0;i<age.size();i++){
        cout<<name[i]<<" - "<<age[i]<<endl;
    }
    }
    else
        cout<<"Эй,человек,ну как же так: "<<name.size()<<" человек(а) и "<<age.size()<<" возроста(ов)?"<<endl;
    system("pause");
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 00:38     Как прекратить ввод string? #8
Цитата Сообщение от Chernobyl Посмотреть сообщение
воспользовался советом taras'а atavin'а
В коде этого совета не видно:
Цитата Сообщение от taras atavin Посмотреть сообщение
вот пустую строку и надо взять за специальное имя.
Если же воспользовать советом taras atavin, и убрать лишние действия:
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
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Вводите имена" << endl;
    vector <string> name; 
    string n;
    do 
    {
        getline(cin, n);
        if (!n.empty()) name.push_back(n);
        else break;
    } while(true);
    
    cout << "Вводите возрасты" << endl;
    vector <int> age;
    int a;
    do 
    {
        cin >> a;
        if (a) age.push_back(a);
        else break;
    } while(true);
    
    if (name.size() == age.size())
    {
        for(int i = 0; i < age.size(); i++)
            cout << name[i] << " - " << age[i] << endl;
    }
    else
        cout << "Эй, человек, ну как же так: " << name.size() << " человек(а) и " << age.size() << " возроста(ов)?" << endl;
    
    system("pause");
    return 0;
}
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
07.07.2013, 00:43     Как прекратить ввод string? #9
Цитата Сообщение от Jupiter Посмотреть сообщение
именно, но винда же user friendly
ctrl-с сразу прекращает работу
без френдли
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 21:03     Как прекратить ввод string?
Еще ссылки по теме:

C++ Циклический алгоритм: прекратить ввод, когда сумма введенных чисел превысит 100
Как организовать проверку на ввод определенных букв переменной string? C++
Ввод string после int C++

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

Или воспользуйтесь поиском по форуму:
Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
07.07.2013, 21:03  [ТС]     Как прекратить ввод string? #10
alsav22, Я имел в виду то, что я последовал тому, что нужно выделить число и слово, которое прекращает ввод. То другое я не смог реализовать, поетому благодарю за код.
Yandex
Объявления
07.07.2013, 21:03     Как прекратить ввод string?
Ответ Создать тему
Опции темы

Текущее время: 03:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru