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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Chernobyl
213 / 213 / 67
Регистрация: 30.09.2012
Сообщений: 542
#1

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

04.07.2013, 19:13. Просмотров 1508. Ответов 9
Метки нет (Все метки)

Снизу код. Пока прога должна просто напечатать пары имя-возраст,но вопрос в том,как прекратить ввод имен чтобы прога поняла что все,имен больше считывать не надо. Ибо там где числа, то легче,я например вставляю в конце символ | и все,а что со стрингом делать?
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 19:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как прекратить ввод string? (C++):

Как прекратить ввод данных из консоли - C++
Программа должна считывать пары точек (x, y), но заранее не известно количество пар. Как сделать так, чтобы ввод прекратился после ввода...

Циклический алгоритм: прекратить ввод, когда сумма введенных чисел превысит 100 - C++
Вводятся положительные числа. Прекратить ввод, когда сумма введенных чисел превысит 100. Помогите будьте так любезны.

Как организовать проверку на ввод определенных букв переменной string? - C++
Добрый день, не могу организовать проверку на ввод определенных букв переменной string. Необходимо, чтобы в переменную temp записывались...

Как прекратить работу программы? - C++
# include &lt;iostream&gt; # include &lt;locale&gt; using namespace std; int main () { setlocale (LC_ALL,&quot;Russian&quot;); int number; ...

Подскажите как прекратить чтение из файла? - C++
Есть программа: #include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main() { ifstream cin(&quot;in.txt&quot;); int name; ...

Как по клавише прекратить (приостановить) запись в файл? - C++
Консольное приложение VC6. Есть функция записи в файл. Данные пишутся в цикле: while(i &lt; file_size) { fputs(buffer,file_out); ...

9
ssXXss
266 / 188 / 10
Регистрация: 15.01.2011
Сообщений: 681
04.07.2013, 19:20 #2
к примеру так:
C++
1
2
3
4
5
6
7
...
if( a == 10 )
{
  std::cout << " ФИНАЛ "<< std::endl;
  break;
}
...
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 19:20 #3
Ctrl + Z
1
Chernobyl
213 / 213 / 67
Регистрация: 30.09.2012
Сообщений: 542
04.07.2013, 19:25  [ТС] #4
Jupiter, Так тоже Страуструп писал,но может я не то просто делаю.Эту комбинацию нужно нажать после всех введеных имен? Если так,то в консоли появляеться ^Z
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.07.2013, 19:27 #5
Можно зарезервировать имя, которое будет сигнализировать о том что предыдущее введённое имя последнее, а чтоб разрешить ввод любого возможного имени, специальное должно быть не возможным. Например, если прога предназначена только для русских, то можно за такое имя взять exit, так как не может английское слово, пишущееся прямо латиницей, быть русским именем. Но так не учтёшь транслит и не русских. Поэтому надо взять действительно не возможное. Имя не может состоять из одних пробелов, или быть совсем пустым, вот пустую строку и надо взять за специальное имя.
1
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 20:15 #6
Цитата Сообщение от Chernobyl Посмотреть сообщение
Если так,то в консоли появляеться ^Z
именно, но винда же user friendly, потому и Ctrl+Z надо подтверждать ентером
0
Chernobyl
213 / 213 / 67
Регистрация: 30.09.2012
Сообщений: 542
06.07.2013, 13:51  [ТС] #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;
}
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 00:38 #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;
}
1
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.07.2013, 00:43 #9
Цитата Сообщение от Jupiter Посмотреть сообщение
именно, но винда же user friendly
ctrl-с сразу прекращает работу
без френдли
0
Chernobyl
213 / 213 / 67
Регистрация: 30.09.2012
Сообщений: 542
07.07.2013, 21:03  [ТС] #10
alsav22, Я имел в виду то, что я последовал тому, что нужно выделить число и слово, которое прекращает ввод. То другое я не смог реализовать, поетому благодарю за код.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 21:03
Привет! Вот еще темы с ответами:

ввод string-а - C++
Как написать во входных данных 2 строки первая с данными а второя пустая ннапишите как написать вторую строку??

Как задать конец строки и прекратить при вводе определённого символа? - C++
Добрый день! Подскажите, пожалуйста, как задать конец строки при вводе определённого символа. Например, char mass , но при вводе с...

Ввод с клавиатуры в string переменную - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;map&quot; #include &quot;algorithm&quot; int _tmain(int argc, _TCHAR*...

Поэлементный ввод из строки string - C++
Здравствуйте, форумчане. Есть такая проблемка. Имеется файл который состоит из символов и чисел (X456.1) - это координаты. ...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
07.07.2013, 21:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru