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

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

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

Неизвестная конструкция - C++

17.03.2013, 12:42. Просмотров 298. Ответов 1
Метки нет (Все метки)

Задача поставлена так: Написать программу, переводящую арабские числа в римские. Задача упрощается тем, что можна считать, что 40=XXXX, 9=VIIII и тому подобное.
Саму программу я написал, но меня волнует проверка на ввод. Я ее где-то выкопал и не знаю, как она работает.

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
#include <iostream>
  #include <conio.h>
    #include <stdio.h>
using namespace std;
int roman(int i, int j, char k)
{
while(i>=j)
{
putchar(k);
i=i-j;
}
return i;
}
int main()
{
     
           int Number;   
   while(true){
        cout << "Type your number: ";
        cin >> Number;                           
        if ( (cin.peek() == '\n') & (Number>0)){           
            cin.get();                      
            break;
        }
        else{
            cout <<"You have typed wrong number, type it again:"<<endl;
            cin.clear();                    
            while (cin.get() != '\n'){}     
        }  
    
    fflush(stdin);
}    
 cout << "Transformed number into Roman system:\n";
                        Number=roman(Number,1000,'M');
                        Number=roman(Number,500,'D');
                        Number=roman(Number,100,'C');
                        Number=roman(Number,50,'L');
                        Number=roman(Number,10,'X');
                        Number=roman(Number,5,'V');
                        Number=roman(Number,1,'I');   
    cout <<"\n";
   
    getch ();
    return 0;
}

меня волнует эта часть. Можете разжевать ее, кто в теме?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  int Number;   
   while(true){
        cout << "Type your number: ";
        cin >> Number;                           
        if ( (cin.peek() == '\n') & (Number>0)){           
            cin.get();                      
            break;
        }
        else{
            cout <<"You have typed wrong number, type it again:"<<endl;
            cin.clear();                    
           while (cin.get() != '\n'){}     
        }  
    
    fflush(stdin);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 12:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неизвестная конструкция (C++):

Неизвестная ошибка - C++
Ребята все работает все запускается, но ошибка не исчезает... Подскажите...

неизвестная функция - C++
Здравствуйте ! Хочу откомпилировать код одной программы написанной на С на компиляторе borland билдер с++ 6 версии,но появлются следующие...

Неизвестная функция - C++
#include &quot;std_lib_facilities.h&quot; class Token { public: char kind; double value; Token(char ch) ...

Неизвестная ошибка с++ - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;fstream&gt; #include &lt;math.h&gt; using namespace std; ...

Неизвестная ошибка - C++
Доброго время суток, я тут с толкнулся с непонятной штукой, все правильно точно так же как и показано на видео но почему то у меня ошибки...

неизвестная ошибка - C++
Помогите с кодом который из книги по изучению С++: Вот неработающий код: #include &lt;iostream&gt; using namespace std; ...

1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.03.2013, 13:39 #2
Это:
C++
1
2
 cin.clear();                    
           while (cin.get() != '\n'){}
Сброс флага ошибки и очистка птока ввода(cin.get() будет извлекать по символу из потока пока не встретит '\n'. Его тоже извлечёт). После этого поток ввода чист и готов к работе.

Добавлено через 4 минуты
Первая часть кода: после нажатия Enter проверяется, есть ли в потоке, между последней цифрой и '\n' (Enter), не цифры (если да, то cin.peek() не равен '\n') и положительно ли введённое число. Если всё правильно, то '\n' извлекается из потока (cin.get())(чтобы дальше не мешал) и выход из цикла ввода.

Добавлено через 4 минуты
Только вместо & нужно && писать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 13:39
Привет! Вот еще темы с ответами:

Неизвестная ошибка - C++
При написании кода столкнулся с такой ситуацией. При запуске программы происходит экстренное завершение программы. #include &lt;conio.h&gt; ...

Неизвестная escape-последовательность - C++
Ger = Fre.erase(0, Fre.find_first_of(&quot;\t\t&quot;)) + &quot;&lt;\German&gt;&quot;; Прога компилируются, но Выскакивает предупреждение: Предупреждение 1 ...

Неизвестная мне ошибка - C++
В общем имеется код: //--------------------------------------------------------------------------- #include &lt;iostream.h&gt; #include...

Неизвестная escape-последовательность - C++
Продолжаю допиливать свою FNP (my First Need Programm). Вроде все хорошо работает но компилятор ругается: ...


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

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

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