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

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

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

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

15.09.2013, 21:53. Просмотров 792. Ответов 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 и никак не могу с ней разобраться.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 21:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в программе (C++):

Ошибка в программе - C++
Написал 2 класса: 1 - описывает дробь с числителем и знаменателем (+ операции), 2 - шаблон, описывающий динамический массив указателей....

ошибка в программе - C++
Пожогите. пожалуйста, решить проблему... Уже все перепробовал, но ошибка осталась #include &lt;iostream&gt; #include &lt;windows.h&gt; using...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:42  [ТС] #16
Ладно. А то я так не отстану с вопросами спасибо всем
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 22:42 #17
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
#include <iostream>
#include <string.h>
using namespace std;
 
int main()
{
   setlocale(0, "");
   int a,b,c,d;
   d=1;
   char rez[20];
   
   do
   {
       cout << "Введите первое число: ";
       (cin >> a).get();
       cout << "Введите второе число: ";
       (cin >> b).get();
       c = a + b;
       cout << "Cумма чисел = " << c << endl << "Программа выполнена успешно! Введите 'exit' для выхода или 'e' для вычисления еще одной суммы: " << endl;
   
       cin.getline(rez, 20);
   
   } while (strcmp(rez, "exit"));
 
   return 0;
}
1
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:47  [ТС] #18
alsav22, спасибо Вам, но тут есть вещи которые мне еще не известны, а так я еще не прочитал до конца учебник(я собственно изучил пока только краткий курс), то не буду Вас мчать=)
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 22:48 #19
Цитата Сообщение от SanychBY Посмотреть сообщение
но тут есть вещи которые мне еще не известны
Какие? getline()? strcmp()?
0
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:49  [ТС] #20
C++
1
2
(cin >> a).get();
cin.getline(rez, 20);
0
alsav22
5419 / 4815 / 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() считает его первым, как пустую строку, и код, не останавливаясь на ввод, пойдёт дальше.
1
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'.
Зачем?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:01 #23
Такую конструкцию ((cin >> a).get()) можно везде использовать, на всякий случай, чтобы избежать неожиданных ошибок.

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

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

Добавлено через 3 минуты
Цитата Сообщение от SanychBY Посмотреть сообщение
Есть строка exit, перем первый символ e и добавляем его в конец строки exite???
20 - 1, это 19. Т.е. читает на один символ меньше (чтобы осталось место для '\0'), чем второй параметр. Поэтому массив, куда читает getline(), должен быть на единицу больше, чем длина строки.
0
SanychBY
38 / 45 / 1
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 23:09  [ТС] #26
Цитата Сообщение от alsav22 Посмотреть сообщение
20 - 1, это 19. Т.е. читает на один символ меньше (чтобы осталось место для '\0') чем второй параметр. Пэтому массив, куда читает getline(), должен быть на единицу больше, чем длина строки.
То есть getline() просто добавляет в конец '\0'?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:12 #27
Цитата Сообщение от SanychBY Посмотреть сообщение
То есть getline() просто добавляет в конец '\0'?
Что значит просто? cin.getline() - это метод чтения строк с консоли (так же, как и cin, но он читает до пробела). Т.е., вы вводите строку, getline() её считывает в массив, в конец добавляет '\0'.
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;?
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
15.09.2013, 23:16 #29
Цитата Сообщение от alsav22 Посмотреть сообщение
в конец добавляет '\0'.
я бы сказал, что вместо кода '\n' который возникает в момент нажатия на клавишу Enter, записывается нулевой символ '\0'
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 23:20 #30
Цитата Сообщение от SanychBY Посмотреть сообщение
А чем это отличается от cin >> a;?
getline() для чтения строк. cin может читать символы, слова (последовательность символов до первого пробельного символа), числа.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 23:20
Привет! Вот еще темы с ответами:

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

Ошибка в программе - C++
Задание 3. Написать и протестировать функцию STRS (S1,S2), которая определяет, встретился ли в строке S1 какой-нибудь символ из строки S2...

Ошибка в программе - C++
нужно найти кол-во нулевых элементов в массиве #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using...

ошибка в программе с++ - C++
В программе вылетает неизвестная мне ошибка, помогите Вот код программы: #include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include...


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

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

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