Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
#1

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

15.09.2013, 21:53. Просмотров 871. Ответов 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
Ответы с готовыми решениями:

Ошибка в программе
В программе есть ошибка, подозрения падают на atanh так как в ошибке курсор там...

Ошибка в программе
Здравствуйте! Решал одну задачу. И возникла проблема при выводе результата в...

Ошибка в программе
Здравствуйте, дорогие форумчане. У меня почему-то не хочет компилировать...

ошибка в программе
1&gt;c:\users\1\documents\visual studio 2010\projects\иптьб\иптьб\орпим.cpp(1):...

Ошибка в программе
Программа должны выводить слова с неповторяющимися символами, свое назначение...

31
ViktorKozlov
134 / 126 / 59
Регистрация: 13.12.2012
Сообщений: 293
15.09.2013, 21:57 #2
C++
1
rez = 'e';
1
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:06  [ТС] #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
rez = 'e';
Мдаа. Вот уж чего не мог ожидать.

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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;
   }
}
а почему происходит зацикливание программы когда цикл должен завершиться, то есть при вводе "exit"?
0
Бендерродригез
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
15.09.2013, 22:09 #4
Цитата Сообщение от SanychBY Посмотреть сообщение
а почему происходит зацикливание программы когда цикл должен завершиться, то есть при вводе "exit"?
Ты вводишь слово "exit"? А попробуй просто что-нибудь другое и посмотри на результат.
1
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:11  [ТС] #5
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Ты вводишь слово "exit"? А попробуй просто что-нибудь другое и посмотри на результат.
Цикл завершился.

Добавлено через 34 секунды
а почему не работает с exit?
0
Бендерродригез
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
15.09.2013, 22:14 #6
Цитата Сообщение от SanychBY Посмотреть сообщение
Цикл завершился.

Добавлено через 34 секунды
а почему не работает с exit?
Потому что ты считываешь символ, а не строку. Ну, а раз первый символ в "exit" - 'e', то...
0
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
15.09.2013, 22:18 #7
Цитата Сообщение от SanychBY Посмотреть сообщение
а почему происходит зацикливание программы когда цикл должен завершиться, то есть при вводе "exit"?
когда вводишь слово "exit", то первая буква попадает в переменную rez а остальные так и остаются во входной очереди. Кстати условие продолжения цикла будет true Они никуда не исчезают и ждут следующего оператора cin >> . И когда встречается cin >> a; (переменная a это тип int), то в нее попадает следующая буква или даже оставшаяся часть от слова exit Но ведь в переменной типа int не может хранится строка! поток cin становится испорченным и Вот тут начинается зацикливание.
1
ValeryS
Модератор
7215 / 5478 / 682
Регистрация: 14.02.2011
Сообщений: 18,530
15.09.2013, 22:19 #8
Цитата Сообщение от SanychBY Посмотреть сообщение
Мдаа. Вот уж чего не мог ожидать.
одинарные кавычки символ
двойные строка, даже если строка из одной буквы
например
'a' в памяти будет лежать 'a'
"a" в памяти будет лежать 'a' и 0
0 в Си это конец строки
1
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:30  [ТС] #9
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Потому что ты считываешь символ, а не строку. Ну, а раз первый символ в "exit" - 'e', то...
Цитата Сообщение от _ Посмотреть сообщение
когда вводишь слово "exit", то первая буква попадает в переменную rez а остальные так и остаются во входной очереди. Кстати условие продолжения цикла будет true Они никуда не исчезают и ждут следующего оператора cin >> . И когда встречается cin >> a; (переменная a это тип int), то в нее попадает следующая буква или даже оставшаяся часть от слова exit Но ведь в переменной типа int не может хранится строка! поток cin становится испорченным и Вот тут начинается зацикливание.
Хорошо, а как тогда записать в rez всю строку exit?

Добавлено через 1 минуту
Или ка считать?
0
Бендерродригез
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
15.09.2013, 22:31 #10
Цитата Сообщение от SanychBY Посмотреть сообщение
Хорошо, а как тогда записать в rez всю строку exit?

Добавлено через 1 минуту
Или ка считать?
В rez - никак. Это char.
0
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
15.09.2013, 22:32 #11
Цитата Сообщение от SanychBY Посмотреть сообщение
как тогда записать в rez всю строку exit?
для этого нужен массив char-ов. где каждый элемент - символ:

C++
1
2
3
char rez[20];
 
cin >> rez;
еще можно использовать string, но думаю он здесь не нужен
0
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:34  [ТС] #12
Цитата Сообщение от Бендерродригез Посмотреть сообщение
В rez - никак. Это char.
А во что тогда?

Добавлено через 1 минуту
Цитата Сообщение от _ Посмотреть сообщение
еще можно использовать string, но думаю он здесь не нужен
Код
int — целочисленный тип данных.
float — тип данных с плавающей запятой.
double — тип данных с плавающей запятой двойной точности.
char — символьный тип данных.
bool — логический тип данных.
что за стринг?
0
Бендерродригез
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
15.09.2013, 22:37 #13
Да и зачем? Отправляешь любой символ кроме 'е' и всё.

Добавлено через 2 минуты
Цитата Сообщение от SanychBY Посмотреть сообщение
что за стринг?
Читай учебник дальше, всему своё время.
К тому же, от char до string читать не долго.
1
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 22:37 #14
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>
using namespace std;
 
int main()
{
   setlocale(0, "");
   int a,b,c,d;
   d=1;
   string rez;
   
   do
   {
       cout << "Введите первое число: ";
       (cin >> a).get();
       cout << "Введите второе число: ";
       (cin >> b).get();
       c = a + b;
       cout << "Cумма чисел = " << c << endl << "Программа выполнена успешно! Введите 'exit' для выхода или 'e' для вычисления еще одной суммы: " << endl;
   
       getline(cin, rez);
   
   } while (rez != "exit");
 
   return 0;
}
1
User409368
191 / 168 / 32
Регистрация: 09.09.2013
Сообщений: 524
15.09.2013, 22:39 #15
Цитата Сообщение от SanychBY Посмотреть сообщение
что за стринг?
если коротко сказать то это массив у которого может изменятся размер.
чтобы его использовать надо подключить заголовочный файл
C++
1
#include <string>
а работа с ним намного легче чем с простыми массивами char []
1
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:42  [ТС] #16
Ладно. А то я так не отстану с вопросами спасибо всем
1
alsav22
5441 / 4836 / 831
Регистрация: 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
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:47  [ТС] #18
alsav22, спасибо Вам, но тут есть вещи которые мне еще не известны, а так я еще не прочитал до конца учебник(я собственно изучил пока только краткий курс), то не буду Вас мчать=)
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 22:48 #19
Цитата Сообщение от SanychBY Посмотреть сообщение
но тут есть вещи которые мне еще не известны
Какие? getline()? strcmp()?
0
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:49  [ТС] #20
C++
1
2
(cin >> a).get();
cin.getline(rez, 20);
0
15.09.2013, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 22:49

Ошибка в программе
#include &lt;graphics.h&gt; class Figure { int x,y; int color; public:...

Ошибка в программе
Вот код: /*---------------------------------------------------------------...

Ошибка в программе!
найти минимальное положительное целое число Q такое, что произведение цифр...


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

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

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