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

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

Войти
Регистрация
Восстановить пароль
 
 
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
#1

Непонятность с if. - C++

19.02.2012, 16:09. Просмотров 754. Ответов 19
Метки нет (Все метки)

Решил сделать некое подобие калькулятора с побитовыми операторами. Вводищ число, потом оператор (если ввел ~ (побитовое отрицание) то сразу выдает ответ), потом ввоищ 2-ое число и программа выдает ответ. Но возникла проблема с работой программы: ввожу число (i1), ввожу оператор ~ (ch), теперь программа должна ввывести ответ, но она просит ввести i2. Какя понимаю где-то ошибка в блоке if. Но что эта за ошибка.

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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
setlocale( LC_ALL,"" );
 
cout<<"& - побитовое И\n"<<
      "| -побитовое ИЛИ\n"<<
      "^ - побитовое исключающие ИЛИ\n"<<
      "< - побитовый здвиг влево\n"<<
      "> - побитовый здвиг вправо\n"<<
      "~ - побитовое отрицание (унарный)\n"<<endl;
      
int i1,i2;
char ch;
cin>>i1>>ch;
 
if(ch=='~'){i1=~i1;}
 
else{
 cin>>i2;
 if(ch=='&'){i1= i1&i2;;}
 if(ch=='<'){i1= i1>>i2;}
 if(ch=='>'){i1= i1<<i2;}
 if(ch=='^'){i1= i1^i2;}
 if(ch=='|'){i1= i1|i2;}}
 
 
cout<<i1<<endl;
 
  system("PAUSE");  
  return 0;
}
вместо else пробовал
C++
1
if(ch!='~'||ch!='<'||ch!='>');
- не помогает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 16:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Непонятность с if. (C++):

непонятность по теории - C++
что означает статическая переменная? она как локальная только не стирается после окончания функции? или как?

Непонятность в маленьком кусочке кода - C++
Здраствуйте. Объясните пожалуйста что происходит в данном фрагменте кода. str1-строка. x-массив целых. for ( i = 0; i &lt; nx; i++) ...

непонятность в условии и верен ли алгоритм - C++
Последовательность из l целых чисел b1, b2, ..., bl (1 ≤ b1 ≤ b2 ≤ ... ≤ bl ≤ n) называется хорошей, если каждое число делит без остатка...

Непонятность в одной граф либе - C++
Мм... Вообщем я даже не знаю как сие явление прокомментировать, хочу нарисовать стрелку - дабы в дальнейшем знать как строить класс,...

Непонятность с неопределённостью. - Математический анализ
Здравствуйте! В книжке предел \lim_{x\rightarrow \frac{\pi }{2}}\frac{\ln \sin x}{\cot x} находится по правилу Лопиталя и...

Непонятность с циклами - C#
using System; class aaa { static void Main() { int x, y; string a; ...

19
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
19.02.2012, 16:22 #2
У меня выводит ответ) По крайней мере не просит ввести i2
1
Миниатюры
Непонятность с if.  
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
19.02.2012, 16:25  [ТС] #3
Infinity3000, А чем ты пользуешся ? А то у меня Dev-C++ уже второй раз сталкиваюсь с багами, а VS неохота использовать - уж слишком мудренная .
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
19.02.2012, 16:26 #4
Цитата Сообщение от cactus09 Посмотреть сообщение
А чем ты пользуешся ?
MSVS 2010
1
soundtrack
42 / 42 / 4
Регистрация: 15.12.2011
Сообщений: 131
19.02.2012, 16:32 #5
Да, программа работает правильно. Я на этом форуме сижу около недели, и уже раз четвёртый сталкиваюсь с темами, где компилятор Dev-C++ ведёт себя неадекватно.
З.Ы. Infinity3000, я тоже почему-то в первый раз ввёл "3" для проверки Шаблонно мыслим, программисты...)
1
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
19.02.2012, 16:36  [ТС] #6
soundtrack, Ну а ты какю среду для програмирования порекомендовал бы?
0
soundtrack
42 / 42 / 4
Регистрация: 15.12.2011
Сообщений: 131
19.02.2012, 16:41 #7
Visual Studio 10 или 8, ну или Embarcadero RAD Studio 2010, если майкрософт считаешь замороченной. Но вообще я за первую, не знаю что тебе в ней кажется мудрёным...как по мне-очень удобно всё
1
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
19.02.2012, 16:41  [ТС] #8
Заметил такую веш - программа ведет себя неодыкватно. Если вводить переменную и нажимать enter потом оператор ~ и снова enter то она потребует ввести i2, а если ввести в одну строку i2 и ch и потом enter то i2 вводить не потребует и сразу выдаст ответ.
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
19.02.2012, 16:47 #9
Цитата Сообщение от cactus09 Посмотреть сообщение
Заметил такую веш - программа ведет себя неодыкватно. Если вводить переменную и нажимать enter потом оператор ~ и снова enter то она потребует ввести i2, а если ввести в одну строку i2 и ch и потом enter то i2 вводить не потребует и сразу выдаст ответ.
Я бы так не утверждал!
0
Миниатюры
Непонятность с if.  
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
19.02.2012, 16:52 #10
cactus09, пересоберите проект. на моем mingw gcc все адекватно как и следовало ожидать
0
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
19.02.2012, 17:05  [ТС] #11
Всё - разобрался. Зря грешил на Dev-C++(хотя насамом деле лагает). Виной всему моя невнимательность. Все прекрасно работает и у меня но только со стракой else. Если вместо else использовать
C++
1
if(ch!='~'||ch!='<'||ch!='>');
(как я и сделал в первый раз) то программа будет требоват i2 - вопрос только почему? Видь при вводе ~(ch) "ch!='~'||ch!='<'||ch!='>'" должно равняца fulse и действия в скобках if выполняца не будет - НО ОНО ВЫПОЛНЯЕТСЯ
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
19.02.2012, 17:07 #12
скиньте весь код! со всеми своими преобразованиями
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
19.02.2012, 17:10 #13
Цитата Сообщение от cactus09 Посмотреть сообщение
то программа будет требоват i2 - вопрос только почему?
Иф с пустой ветвью и брошенные от балды скобки от нечего.
0
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
19.02.2012, 17:11  [ТС] #14
Infinity3000, Да он посути весь и висит.

1) Не просит i2
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
setlocale( LC_ALL,"" );
 
cout<<"& - ïîáèòîâîå È\n"<<
      "| - ïîáèòîâîå ÈËÈ\n"<<
      "^ - ïîáèòîâîå èñêëþ÷Г*ГѕГ№ГҐГҐ ÈËÈ\n"<<
      "< - ñäâèã âëåâî\n"<<
      "> - ñäâèã ГўГЇГ°Г*ГўГ®\n"<<
      "~ - ïîáèòîâîå îòðèöГ*Г*ГЁГҐ (ГіГ*Г*Г°Г*ûé)\n"<<endl;
      
int i1,i2;
char ch;
cin>>i1>>ch;
 
if(ch=='~'){i1=~i1;}
 
else{
 cin>>i2;
 if(ch=='&'){i1= i1&i2;;}
 if(ch=='<'){i1= i1>>i2;}
 if(ch=='>'){i1= i1<<i2;}
 if(ch=='^'){i1= i1^i2;}
 if(ch=='|'){i1= i1|i2;}}
 
 
cout<<i1<<endl;
 
  system("PAUSE");  
  return 0;
}
2) Просит i2
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
setlocale( LC_ALL,"" );
 
cout<<"& - ïîáèòîâîå È\n"<<
      "| - ïîáèòîâîå ÈËÈ\n"<<
      "^ - ïîáèòîâîå èñêëþ÷Г*ГѕГ№ГҐГҐ ÈËÈ\n"<<
      "< - ñäâèã âëåâî\n"<<
      "> - ñäâèã ГўГЇГ°Г*ГўГ®\n"<<
      "~ - ïîáèòîâîå îòðèöГ*Г*ГЁГҐ (ГіГ*Г*Г°Г*ûé)\n"<<endl;
      
int i1,i2;
char ch;
cin>>i1>>ch;
 
if(ch=='~'){i1=~i1;}
 
if(ch!='~'||ch!='<'||ch!='>'){
 cin>>i2;
 if(ch=='&'){i1= i1&i2;;}
 if(ch=='<'){i1= i1>>i2;}
 if(ch=='>'){i1= i1<<i2;}
 if(ch=='^'){i1= i1^i2;}
 if(ch=='|'){i1= i1|i2;}}
 
 
cout<<i1<<endl;
 
  system("PAUSE");  
  return 0;
}
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
19.02.2012, 17:12 #15
Цитата Сообщение от cactus09 Посмотреть сообщение
должно равняца fulse и действия в скобках if выполняца не будет - НО ОНО ВЫПОЛНЯЕТСЯ
А какая разница, чему там оно у тебя равно?
0
19.02.2012, 17:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2012, 17:12
Привет! Вот еще темы с ответами:

Непонятность с record - Delphi
Здравствуйте! Нужно создать некую структуру, типа древовидной (есть проект, состоящий из нескольких зданий, в зданиях есть помещения, в...

Непонятность со ссылками - PHP
Есть некое поле формы с кодом обработчиком php, в случае успешного заполнения этой формы я перебрасываю пользователя на страницу которая...

Непонятность со StopWatch - C#
// The first execution time will be tossed // out, since it can skew the average time. Взято из примера Msdn...

Непонятность с обобщениями в Java - Java SE
package tutor; import java.io.*; class Gen&lt;T&gt;{ T ob; Gen(T o){ob = o;} void get(){ System.out.println(ob +...


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

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

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