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

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

Войти
Регистрация
Восстановить пароль
 
 
IVSasha
6 / 6 / 2
Регистрация: 29.07.2015
Сообщений: 61
#1

Где ошибка? - C++

31.07.2015, 18:28. Просмотров 470. Ответов 21
Метки нет (Все метки)

Почему не вводятся имя, фамилия и возраст?
Первые 3 пользователя вводятся. Четвертый не вводится

Enter first name, last name and age > Viktor Ivanov 17
Enter first name, last name and age > Denis Petrov 18
Enter first name, last name and age > Aleksander Sigaev 19 // нажимаю Enter и ...
Enter first name, last name and age > Viktor Ivanov 1 // ... эта строка сама ввелась !!
7 Denis P
etrov 18 A
leksander Sigaev 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
typedef unsigned char BYTE;
 
class User
{
private:
    std::string firstName; // Фамилия
    std::string lastName; // Имя
    BYTE age;  // Возраст
 
public:
    User()
        : firstName(""), lastName(""), age(0)
    {
    }
 
    User(std::string firstName, std::string lastName, BYTE age)
        : firstName(firstName),lastName(lastName), age(age)
    {
    }
 
    void SetUser()
    {
        std::cout << "Enter first name, last name and age > ";
        std::cin >> firstName >> lastName >> age;
    }
 
    void Print() const
    {
        std::cout << firstName << " " << lastName << " " << age << std::endl;
    }
};
 
int main()
{
 
    User users[4];
 
    for (int i = 0;  i < 4;  i++)
        users[i].SetUser();
 
    for (int i = 0;  i < 4;  i++)
        users[i].Print();
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2015, 18:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где ошибка? (C++):

Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка) - C++
задан текст нужно вывести на экран количество слов где первая и последняя буквы одинаковы #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил) - C++
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для...

Укажите где ошибка (ошибка во время выполнения программы) - C++
Здравствуйте, помогите пожалуйста найти ошибки в коде которые возникаю при выполнении программы Картинка с ошибкой внизу поста. Код: ...

Ошибка при компиляции. Где ошибка? (Работа с классом) - C++
Уважаемые форумчане! При компиляции проекта возникает ошибка &quot; undefined reference to `MeterNZiF::MeterNZiF()' &quot; на 7 строку приложения. ...

В чём ошибка.В коде там где коментарий там ошибка поучается. - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class CMyString{ char *pStr; public: ...

Где ошибка ? - C++
Задача такая Вычислить сумму n слагаемых s=((1)/(2*3))+((2)/(3*4))+....+((n)/(n+1)*(n+2)) я написал программу , но она выдает ошибки ! ...

21
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
31.07.2015, 18:40 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от IVSasha Посмотреть сообщение
typedef unsigned char BYTE;
Возраст в символах? оригинально)
замени char на int
1
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,070
Завершенные тесты: 1
31.07.2015, 18:43 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
поменяй BYTE на int
у тебя BYTE это unsigned char и ввод ждет 1 символа , когда ты вводишь 19 он берет 1 и 9 отправляет дальше
1
IVSasha
6 / 6 / 2
Регистрация: 29.07.2015
Сообщений: 61
31.07.2015, 18:46  [ТС] #4
Но ведь в char можно записать цифры.
C++
1
char age = 17;
А ввести с клавиатуры их нельзя?
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,070
Завершенные тесты: 1
31.07.2015, 18:48 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от IVSasha Посмотреть сообщение
А ввести с клавиатуры их нельзя?
в коде ты явно задаешь цифру 17 как int
а cin в случае с char будет думать что 17 это строка "17" ( '1' , '7' )

можно через временную переменную int
вводишь через cin в переменную int потом копируешь в переменную char
1
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
31.07.2015, 18:56 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от IVSasha Посмотреть сообщение
Но ведь в char можно записать цифры
Не пиши в char не чего кроме букв, для таких случаев есть int;
В char храниться буквенное представление символа. посмотри таблицу символов ASCII в вики.
C++
1
2
char a=49;
char a='1'//извлечь код символа 1
это одно и тоже
1
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,070
Завершенные тесты: 1
31.07.2015, 18:58 #7
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
Не пиши в char не чего кроме букв
иногда нужно экономить память и использовать для числа 1 байт ( но не в этот раз )
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
31.07.2015, 18:59 #8
Что это:
Цитата Сообщение от IVSasha Посмотреть сообщение
User(std::string firstName, std::string lastName, BYTE age) : firstName(firstName),lastName(lastName), age(age)
? Что то по декларации не видно, чтоб у класса User были предки.
0
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
31.07.2015, 19:07 #9
Цитата Сообщение от Raali Посмотреть сообщение
иногда нужно экономить память и использовать для числа 1 байт
когда речь идет о микроконтроллерах то да, в любом случае для ТС сейчас это не актуально.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
private:
    std::string m_firstName; // Фамилия
    std::string m_lastName; // Имя
    BYTE m_age;  // Возраст
 
 
    User(std::string firstName, std::string lastName, BYTE age)
        : m_firstName(firstName),m_lastName(lastName), m_age(age)
    {
    }
taras atavin, вы о том что нужно так?

Добавлено через 2 минуты
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
В char храниться буквенное представление символа
описался числовое)

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Что то по декларации не видно, чтоб у класса User были предки
такая инициализация допустима и для полей. Что не так?
0
IVSasha
6 / 6 / 2
Регистрация: 29.07.2015
Сообщений: 61
31.07.2015, 19:07  [ТС] #10
Предков нет. Это так переменные firstName, lastName и age инициализируются
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
31.07.2015, 19:15 #11
Цитата Сообщение от IVSasha Посмотреть сообщение
Но ведь в char можно записать цифры.
Код C++
Выделить код
1
char age = 17;
А ввести с клавиатуры их нельзя?
Нельзя. 17 - это число, а не цифры. Попробуй
C++
1
2
3
4
a='17';
std::cout(int)<<std::endl;
a=17;
std::cout(int)<<std::endl;
. Узнаешь много нового.

Добавлено через 37 секунд
Цитата Сообщение от Raali Посмотреть сообщение
цифру 17
Нет такой цифры.

Добавлено через 6 минут
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
taras atavin, вы о том что нужно так?
Как?
1
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,867
Записей в блоге: 1
Завершенные тесты: 5
31.07.2015, 19:16 #12
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
a='17';
Засунуть в символьную переменную 2 символа - очень умно.
Цитата Сообщение от taras atavin Посмотреть сообщение
Что то по декларации не видно, чтоб у класса User были предки.
А это к чему Вы написали?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
31.07.2015, 19:17 #13
Цитата Сообщение от IVSasha Посмотреть сообщение
Предков нет. Это так переменные firstName, lastName и age инициализируются
Вызовом конструкторов отсутствующих предков?

Добавлено через 50 секунд
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Засунуть в символьную переменную 2 символа - очень умно.
Я это предложил ТСу в целях наглядной демонстрации дури.
0
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
31.07.2015, 19:18 #14
Цитата Сообщение от taras atavin Посмотреть сообщение
Вызовом конструкторов отсутствующих предков?
это корректная инициализация переменных! Что не так?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
31.07.2015, 19:19 #15
Лучше даже так:
C++
1
2
3
4
5
6
7
 uint8_t a;
 a='17';
 std::cout<<(int)a<<std::endl;
 std::cout<<a<<std::endl;
 a=17;
 std::cout<<(int)a<<std::endl;
 std::cout<<a<<std::endl;
.
0
31.07.2015, 19:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 19:19
Привет! Вот еще темы с ответами:

Где ошибка? - C++
#include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;ctype.h&gt; using namespace std; int main() ...

Где ошибка? - C++
#include &lt;iostream&gt; using namespace std; int main() { double fahr, cels; cout &lt;&lt; endl &lt;&lt; &quot;Vvedite t po farengeitu&quot; &lt;&lt; endl;...

Где ошибка? - C++
Помогите найти ошибку? #include &lt;iostream.h&gt; int main () { int x,y,z; cout &lt;&lt; &quot;Enter two numbers:\n&quot;; cout &lt;&lt; &quot;First...

Где ошибка? - C++
Добрый день! Подскажите пожалуйста как риолизовать Функцию ln x (x+1)–1 в программе : #include &lt;iostream&gt; #include &lt;math.h&gt; using...


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

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

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