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

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

Войти
Регистрация
Восстановить пароль
 
 
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
#1

Ошибка в программе - C++

15.09.2013, 21:53. Просмотров 762. Ответов 31
Метки нет (Все метки)

Доброго времени суток. Только недавно начал пробовать что то ваять на С, пока все получалось до этого момента.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
   setlocale(0, "");
   int a,b,c,d;
   d=1;
   char rez;
   rez = "e";
   while(rez == "e")
   {
   cout << "Введите первое число: ";
   cin >> a;
   cout << "Введите второе число: ";
   cin >> b;
   c = a + b;
   cout << "Cумма чисел = " << c << endl << "Программа выполнена успешно! Введите 'exit' для выхода или 'e' для вычисления еще одной суммы: " << endl;
   cin >> rez;
   }
}
Что то не нравиться ему переменная rez и никак не могу с ней разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 21:53     Ошибка в программе
Посмотрите здесь:

Ошибка в программе - C++
Доброе утро, уважаемые программисты. Прошу у вас помощи: выбивает ошибку. Спасибо #include &lt;iostream&gt; #include &lt;math.h&gt; using...

Ошибка в программе - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; using namespace std; int main() { const float...

Ошибка в программе - C++
Доброе утро! Прошу у вас помощи с программой: не хочет работать. Буду очень благодарен за любую помощь! // ConsoleApplication1.cpp:...

ошибка в программе - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; #include &lt;string&gt; #include &lt;ctype.h&gt; ...

Ошибка в программе - C++
Откуда берутся эти числа? Задание (если нужно): Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в...

Ошибка в программе - C++
Я сейчас читаю книгу Липпмана &quot;Язык программирования С++&quot;, так вот, там в конце 1 главы есть упражнение.Цитирую: &quot;Напишите программу,...

ошибка в программе - C++
скажите где ошибка и как её исправить? #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 22:58     Ошибка в программе #21
C++
1
(cin >> a).get();
Всё равно, что:
C++
1
2
3
cin >> a;
cin.get(); // извлекает из потока чтения '\n', который попадает туда при нажатии Enter
              // нужно для того, чтобы getline() нормально сработала
Добавлено через 1 минуту
C++
1
cin.getline(rez, 20);
Читает в массив rez 20 - 1 символ, добавляет, в конец, считанного '\0'.

Добавлено через 3 минуты
Если перед getline() не извлечь из потока '\n', то getline() считает его первым, как пустую строку, и код, не останавливаясь на ввод, пойдёт дальше.
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 23:00  [ТС]     Ошибка в программе #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Читает в массив rez 20 - 1 символ, добавляет, в конец, считанного '\0'.
Цитата Сообщение от alsav22 Посмотреть сообщение
1
cin.getline(rez, 20);
Читает в массив rez 20 - 1 символ, добавляет, в конец, считанного '\0'.
Зачем?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:01     Ошибка в программе #23
Такую конструкцию ((cin >> a).get()) можно везде использовать, на всякий случай, чтобы избежать неожиданных ошибок.

Добавлено через 47 секунд
Цитата Сообщение от SanychBY Посмотреть сообщение
Зачем?
'\0' - это символ (маркер) конца строки С.
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 23:03  [ТС]     Ошибка в программе #24
Цитата Сообщение от alsav22 Посмотреть сообщение
get()
А что можно писать в скобках?

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
'\0' - это символ (маркер) конца строки С.
Есть строка exit, перем первый символ e и добавляем его в конец строки exite???
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:07     Ошибка в программе #25
Цитата Сообщение от SanychBY Посмотреть сообщение
А что можно писать в скобках?
В данном случае, ничего не нужно. Будет просто извлечение одного символа из потока.

Добавлено через 3 минуты
Цитата Сообщение от SanychBY Посмотреть сообщение
Есть строка exit, перем первый символ e и добавляем его в конец строки exite???
20 - 1, это 19. Т.е. читает на один символ меньше (чтобы осталось место для '\0'), чем второй параметр. Поэтому массив, куда читает getline(), должен быть на единицу больше, чем длина строки.
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 23:09  [ТС]     Ошибка в программе #26
Цитата Сообщение от alsav22 Посмотреть сообщение
20 - 1, это 19. Т.е. читает на один символ меньше (чтобы осталось место для '\0') чем второй параметр. Пэтому массив, куда читает getline(), должен быть на единицу больше, чем длина строки.
То есть getline() просто добавляет в конец '\0'?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:12     Ошибка в программе #27
Цитата Сообщение от SanychBY Посмотреть сообщение
То есть getline() просто добавляет в конец '\0'?
Что значит просто? cin.getline() - это метод чтения строк с консоли (так же, как и cin, но он читает до пробела). Т.е., вы вводите строку, getline() её считывает в массив, в конец добавляет '\0'.
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 23:16  [ТС]     Ошибка в программе #28
Цитата Сообщение от alsav22 Посмотреть сообщение
Что значит просто? cin.getline() это метод чтения с консоли. Т.е., вы вводите строку, getline() её считывает в массив, в конец добавляет '\0'.
А чем это отличается от cin >> a;?

Добавлено через 37 секунд
А чем это отличается от обычного cin >> a;?
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
15.09.2013, 23:16     Ошибка в программе #29
Цитата Сообщение от alsav22 Посмотреть сообщение
в конец добавляет '\0'.
я бы сказал, что вместо кода '\n' который возникает в момент нажатия на клавишу Enter, записывается нулевой символ '\0'
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:20     Ошибка в программе #30
Цитата Сообщение от SanychBY Посмотреть сообщение
А чем это отличается от cin >> a;?
getline() для чтения строк. cin может читать символы, слова (последовательность символов до первого пробельного символа), числа.
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 23:21  [ТС]     Ошибка в программе #31
Цитата Сообщение от alsav22 Посмотреть сообщение
getline() для чтения строк. cin может читать символы, слова (последовательность символов до первого пробельного символа), числа.
Все понятно. Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 23:28     Ошибка в программе
Еще ссылки по теме:

Ошибка в программе - C++
Проблема в сортировке, не совсем понимаю как реализовать. Тем более не знаю где инициализировать нулем count ...

Ошибка в программе - C++
Помогите запустить программу,а то пишет: C:\Users\Desktop\source\deykstra.cpp|4|fatal error: iostream.h: No such file or directory| Вот...

Ошибка в программе - C++
Ребят, очередная ошибка в программе. - Задача - Для целочисленной квадратной матрицы найти число элементов, кратных К и наибольшие...

Ошибка в программе - C++
Здравствуйте.Помогите новичку только осваиваю C++ ничего не выходит C# знаю. Помогите исправить программу в консоле. #include...

ошибка в программе - C++
Даны два массива. Массив А состоит из N элементов и отсортирован по возрастанию. Массив В состоит из М элементов и отсортирован по...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:28     Ошибка в программе #32
Цитата Сообщение от _ Посмотреть сообщение
я бы сказал, что вместо кода '\n' который возникает в момент нажатия на клавишу Enter, записывается нулевой символ '\0'
По-моему, так не стоит говорить, ведь getline() не обязательно читает до '\n'. '\n' третьим параметром по умолчанию стоит, но можно и другой символ задать. Просто, при строковом чтении, строка должна завершится '\0'.

Добавлено через 6 минут
И getline() в любом случае '\0' в конец считанного помещает, даже если '\n' не считан, а количество считанного уже на единицу меньше второго параметра, только при этом флаг ошибки установит. При этом всё, что не считалось ( в том числе и '\n) останется в очереди.
Yandex
Объявления
15.09.2013, 23:28     Ошибка в программе
Ответ Создать тему
Опции темы

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