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

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

Войти
Регистрация
Восстановить пароль
 
mustang96
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 16
#1

Ввод имени в программу с клавиатуры, содержащее 2 или более слова - C++

24.05.2013, 17:59. Просмотров 406. Ответов 4
Метки нет (Все метки)

Помогите, пожалуйста, сделать возможным ввод имени, состоящего из нескольких слов. Например, пункт назначения "Москва" читается без проблема, а "Нижний Новгород" нет - второе слово "Нижний" распознаётся уже как номер рейса. Наверное, это нужно делать через getline, не могу понять как

На фотографии-изначальное задание

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
#include <iostream>
#include <cctype>
#include <cstring>
#include <iomanip>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
 
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    int i,j;
    struct AEROFLOT
    {
        char kudaletim[30];
        int nomerreisa;
        char planetype[10];
    };
    AEROFLOT Bort[7];
    for (int i=0; i <= 6; i++)
    {
        cout << "Введите пункт назначения рейса " << (i+1) << " \n";
            cin>>Bort[i].kudaletim;
        cout << "Введите номер рейса\n";
            cin>>Bort[i].nomerreisa;
        cout << "Введите тип самолёта\n";
            cin>>Bort[i].planetype;
    }
    for ( i=0; i<=5;i++)
        for ( j=i+1; j<=6;j++)
            if (Bort[i].nomerreisa>Bort[j].nomerreisa)
            {
                AEROFLOT a = Bort[i];
                Bort[i] = Bort[j];
                Bort[j] = a;
            }
 
    cout << "-Пункт назначения-    -№ рейса-   -тип самолёта-\n";
    for (int i=0; i<=6;i++)
         cout << Bort[i].kudaletim << "  " << Bort[i].nomerreisa << "  " << Bort[i].planetype << "\n";
    bool z= true;
    char punkt[30];
    cout << "Введите пункт назначения\n";
    cin >> punkt;
    for(int i=0; i<=6;i++)
        if(strcmp(Bort[i].kudaletim,punkt)==0)
        {
        cout << Bort[i].kudaletim << "  "<< Bort[i].nomerreisa << "  " << Bort[i].planetype << "\n";
        z=false;    
        }   
 
    if(z) cout<< "Рейсов по вашему запросу не найдено\n\n";
    system ("pause");
    return 0;
}
0
Миниатюры
Ввод имени в программу с клавиатуры, содержащее 2 или более слова  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 17:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод имени в программу с клавиатуры, содержащее 2 или более слова (C++):

Ввод имени файла с клавиатуры - C++
Всем привет! Хочу сделать так: int main() { char finame; printf(&quot;Enter the name of file: &quot;); scanf_s(&quot;%s&quot;, &amp;finame); ...

Ввод имени входного/выходного файла с клавиатуры (fstream) - C++
Подскажите, пожалуйста, как можно организовать ввод имени входных/выходных файлов для их последующего использования с помощью библиотеки...

Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну строку не более 50 символов и выводит на экран позиции вхождени - C++
Задание: Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну строку не более 50 символов и выводит на...

Cделать ввод с клавиатуры 20 слов и найти индекс максимального слова - C++
Нужно сделать ввод с клавиатуры 20 слов и найти индекс максимального слова. Может у кого-то есть идеи?

Реализовать ввод с клавиатуры в программу - C++
#include &lt;iostream&gt; int main() { char op = 0; std::cin &gt;&gt; op; int a = 220; int b =...

Сделать программу более компактной + Ручной ввод размерности квадратной матрицы. - C++
Программу я написал. Но надо сделать программу еще более компактной. + Вопрос, как сделать так, чтобы n не было константой, т.е. его...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
24.05.2013, 18:15 #2
C++
1
cin.getline(Bort[i].kudaletim,30);
0
mustang96
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 16
24.05.2013, 18:23  [ТС] #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
cin.getline(Bort[i].kudaletim,30)
Всё равно не распознаёт
0
dalay_lama
77 / 77 / 16
Регистрация: 22.09.2012
Сообщений: 470
24.05.2013, 18:25 #4
чтобы взять строку полностью вместе с пробелами можно использовать getline или get. Синтаксис такой:
C++
1
2
char name[20];
cin.getline(name,20);//первый аргумент имя переменной, второй размер массива переменной
Пример get
C++
1
2
cin.get(name,20);//теже аргументы
cin.get();//считываем знак каретки
Отличия между ними в том, что getline считывает всю строку вместе с кареткой(enter), а get, считывает всю строку до знака каретки, т.е. после того как считали строку в переменную, на входе остаётся просто ввод и если ты потом попытаешься ввести ещё одну переменную, то в неё просто попадёт ввод, программа тебе даже не даст возможности ничего ввести, для этого и используем cin.get(), можно это ещё записать так:
C++
1
cin.get(name,20).get();//тоже самое что и код выше
Ну и ещё один нюанс, если перед вводом строки, ты считал переменную числового вида, т.е. cin >>number, тогда будет так же проблема что и с cin.get() и сделать нужно будет тоже самое, что и с cin.get()
Вот как будет выглядеть код для твоего случая:
C++
1
2
3
4
5
6
7
        cout << "Введите пункт назначения рейса " << (i+1) << " \n";
            cin.getline(Bort[i].kudaletim,30);
        cout << "Введите номер рейса\n";
            cin>>Bort[i].nomerreisa;
            cin.get();//то, о чём я говорил после ввода числового значения
        cout << "Введите тип самолёта\n";
            cin.getline(Bort[i].planetype,20);
А вообще, судя по твоему вопросу, лучше тебе какую-нибудь книженцию почитать для новичков, на форуме вывесили хороший список литературы, лично я читаю Прата С. c++ лекции и упражения, не знаю пока как в других, ну там очень хорошо описывается то что ты как раз спросил.
1
mustang96
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 16
24.05.2013, 18:33  [ТС] #5
skorik-1992, спасибо большое)
да, стоит почитать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 18:33
Привет! Вот еще темы с ответами:

Добавить в программу ввод данных с клавиатуры - C++
int main(int argc, char** argv) { string Target(&quot;12345678&quot;); Target.insert(3, &quot;-+-&quot;); MessageBox(NULL, Target.c_str(),...

Добавить в программу ввод данных с клавиатуры - C++
using namespace std; #include &lt;iostream&gt;; void main() { setlocale(0,&quot;&quot;); const int N = 15; int arr = {1, 2, 3, 0, 9, -1,...

Переделать программу со вводом с клавиатуры на ввод из файла - C++
нужно сделать в программе чтоб ввод был из файла, а не с клавиатуры #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; ...

Напишите программу вычисления значения величины у, предусмотрев ввод а и х с клавиатуры - C++
Напишите программу вычисления значения величины у, предусмотрев ввод а и х с клавиатуры y=16.5*x+9*x^2-1.25*x^3 если 1=&lt;x&lt;9 y=|x|+a...


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

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

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