39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
1

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

15.09.2013, 21:53. Показов 1526. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2013, 21:53
Ответы с готовыми решениями:

Ошибка в программе
Написал программу решения функции D=A+B-1+2C, но ответ не совпадает. На сколько я понимаю, 1...

ошибка в программе
Всем привет!:) При компиляции программа выдает ошибку &quot;GraphEngine.exe&quot;: Загружено:...

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

Ошибка в программе!!!
Здравствуйте, пожалуйста кто в массивах разбирается помогите исправить ошибку в программе!!! ...

31
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
15.09.2013, 21:57 2
C++
1
rez = 'e';
1
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
15.09.2013, 22:09 4
Цитата Сообщение от SanychBY Посмотреть сообщение
а почему происходит зацикливание программы когда цикл должен завершиться, то есть при вводе "exit"?
Ты вводишь слово "exit"? А попробуй просто что-нибудь другое и посмотри на результат.
1
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
15.09.2013, 22:14 6
Цитата Сообщение от SanychBY Посмотреть сообщение
Цикл завершился.

Добавлено через 34 секунды
а почему не работает с exit?
Потому что ты считываешь символ, а не строку. Ну, а раз первый символ в "exit" - 'e', то...
0
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
15.09.2013, 22:18 7
Цитата Сообщение от SanychBY Посмотреть сообщение
а почему происходит зацикливание программы когда цикл должен завершиться, то есть при вводе "exit"?
когда вводишь слово "exit", то первая буква попадает в переменную rez а остальные так и остаются во входной очереди. Кстати условие продолжения цикла будет true Они никуда не исчезают и ждут следующего оператора cin >> . И когда встречается cin >> a; (переменная a это тип int), то в нее попадает следующая буква или даже оставшаяся часть от слова exit Но ведь в переменной типа int не может хранится строка! поток cin становится испорченным и Вот тут начинается зацикливание.
1
Модератор
Эксперт по электронике
8790 / 6575 / 892
Регистрация: 14.02.2011
Сообщений: 23,084
15.09.2013, 22:19 8
Цитата Сообщение от SanychBY Посмотреть сообщение
Мдаа. Вот уж чего не мог ожидать.
одинарные кавычки символ
двойные строка, даже если строка из одной буквы
например
'a' в памяти будет лежать 'a'
"a" в памяти будет лежать 'a' и 0
0 в Си это конец строки
1
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
15.09.2013, 22:31 10
Цитата Сообщение от SanychBY Посмотреть сообщение
Хорошо, а как тогда записать в rez всю строку exit?

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

C++
1
2
3
char rez[20];
 
cin >> rez;
еще можно использовать string, но думаю он здесь не нужен
0
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
15.09.2013, 22:37 13
Да и зачем? Отправляешь любой символ кроме 'е' и всё.

Добавлено через 2 минуты
Цитата Сообщение от SanychBY Посмотреть сообщение
что за стринг?
Читай учебник дальше, всему своё время.
К тому же, от char до string читать не долго.
1
5494 / 4889 / 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
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
15.09.2013, 22:39 15
Цитата Сообщение от SanychBY Посмотреть сообщение
что за стринг?
если коротко сказать то это массив у которого может изменятся размер.
чтобы его использовать надо подключить заголовочный файл
C++
1
#include <string>
а работа с ним намного легче чем с простыми массивами char []
1
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:42  [ТС] 16
Ладно. А то я так не отстану с вопросами спасибо всем
1
5494 / 4889 / 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
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
15.09.2013, 22:47  [ТС] 18
alsav22, спасибо Вам, но тут есть вещи которые мне еще не известны, а так я еще не прочитал до конца учебник(я собственно изучил пока только краткий курс), то не буду Вас мчать=)
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.09.2013, 22:48 19
Цитата Сообщение от SanychBY Посмотреть сообщение
но тут есть вещи которые мне еще не известны
Какие? getline()? strcmp()?
0
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2013, 22:49
Помогаю со студенческими работами здесь

Ошибка в программе
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; using std::cout; using namespace std;...

ошибка в программе
int alice(int n,int g,int x) { long int a,a1; a1=pow(g,x); a=a1%n; return(a); } ...

Ошибка в программе
есть у меня одна прога,открывала я ее пару раз все было ок. а потом стала выходить ошибка. код не...

Ошибка в программе
В программе выдает две ошибки, помогите пожалуйста исправить код. Задание программы. Написать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru