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

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

Войти
Регистрация
Восстановить пароль
 
2008kedr2008
3 / 3 / 0
Регистрация: 16.11.2010
Сообщений: 165
#1

проверьте!!! - C++

10.05.2011, 18:30. Просмотров 280. Ответов 0
Метки нет (Все метки)

почему не правильно работает сложение??? по условию нужно сложить два двоичных числа.....
но когда я ввожу большие числа возникает ошибка!!!!
ошибка при сложение если разница разрядов более двух.....111+1111111.....вообще вылетает!!
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
main.h
#include <cstdlib>
#include <iostream>
#include "Bin.h"
using namespace std;
 
int main(int argc, char *argv[])
{
    string c;
    Bin b1, b2;
    cout<<"Enter the first number:"<<endl;
    cin>>b1;
     if(b1.check()){
    cout<<"Enter the command(+,-,*,/,%,>,>,!=,==)"<<endl;
    cin>>c;
     if(c==">" || c=="<" || c=="==" || c=="!=" || c=="+" || c=="*"|| c=="/"|| c=="-"|| c=="%"){
    cout<<"Enter the second number:"<<endl;
    cin>>b2;
     if(b2.check()){
   //Операция сложение
      if(c=="+"){ 
       b1=b1+b2;
        cout<<"Result of additions:"<<endl<<b1; } 
        // Операция вычитание
         if(c=="-"){
            if(b1>b2){ 
              b1=b1-b2;
              cout<<"Result:"<<endl<<b1;}
            else{cout<<"The inadmissible answer!"<<endl;}}
        //Операция  умножение
            if(c=="*"){
            b1=b1*b2;
            cout<<"Result of multiple:"<<endl<<b1;} 
        //Операция деление
          if(c=="/"){
            b1=b1/b2;
            cout<<"Result of division:"<<endl<<b1;} 
           // Операция остаток
            if(c=="%"){
            b1=b1%b2;
            cout<<"Result:"<<endl<<b1;
          }   
    // Операция больше
    if(c==">"){
    if(b1>b2){
    cout<<"The first number more than the second!"<<endl;
    }
    else{
    cout<<"The first number no more than the second!"<<endl;
    if(b1==b2){cout<<"The numbers are equal!"<<endl;}
    else{cout<<"The first number less than the second!"<<endl;}
         }
         }
    //Операция меньше
    if(c=="<"){
    if(b1>b2){
    cout<<"The first number less than the second!"<<endl;
    }
    else{
    cout<<"The first number no less than the second!"<<endl;
    if(b1==b2){cout<<"The numbers are equal!"<<endl;}
    else{cout<<"The first number more than the secind!"<<endl;}
         }
         }
    // Операция равно
    if(c=="=="){
    if(b1==b2){
    cout<<"The Numbers are equal!"<<endl;
    }
    else{
    cout<<"The numbers are not equal!"<<endl;
    if(b1>b2) {cout<<"The first number more than the second!"<<endl;}
    else{cout<<"The first number less than the second!"<<endl;}
               }
               }
    // Операция не равно
    if(c=="!="){
    if(b1!=b2){
    cout<<"The numbers are not equal!"<<endl;
    if(b1>b2){cout<<"The first number more than the second!"<<endl;}
    else{cout<<"The first number less than the second!"<<endl;}
    }
     else{cout<<"The numbers are equal!"<<endl;}
     }
     }
     else {cout<<"The second number is incorrect!"<<endl;}
     }
     
     else {cout<<" The incorect operations is entered!"<<endl;}
     }
     else {cout<<"The first number is incorrect!"<<endl;}
    system("PAUSE");
    return EXIT_SUCCESS;
}
bin.h
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
#ifndef BIN
#define BIN
 
#include <list>
#include <iostream>
 
using namespace std;
class Bin{
      public:
             friend istream& operator>>(istream&, Bin&);
             friend ostream& operator<<(ostream&, const Bin&);
             Bin operator+(Bin&);
             Bin operator-(Bin&);
             Bin operator*(Bin&);
             Bin operator/(Bin&);
             Bin operator%(Bin&);
             int  operator>(Bin);
             int operator<(Bin);
             int operator==(Bin);
             int operator!=(Bin);
             int check();
             private:
             list <unsigned char> n;
             list <unsigned char>::iterator it;
             long transfer();
             friend void conclusion(Bin);
};
#endif
bin.cpp
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <cstdlib>
#include <iostream>
#include <math.h>
#include "Bin.h"
using namespace std;
 
Bin Bin:: operator+(Bin& b1){
int t=0;
int i, n1,n2,s;
char f[2];
if(b1.n.size()>n.size()){s=b1.n.size();}  
else{s=n.size();}
 b1.n.resize(s);
for(b1.it=b1.n.begin(), it=n.begin(), i=0; i<s; i++){  
      *f=*b1.it; 
n1=atoi(f);  
  *f=*it; 
 n2=atoi(f);
 n1=n1+n2+t;  
t=0;  
if(n1>1){  
t=n1/2;            
n1=n1%2;
}
_itoa(n1, f, 2);
  *b1.it=*f;
 if(i<b1.n.size()){b1.it++;}  
 else{*b1.it='0';}  
 if(i<n.size()){it++;}
         else{*it='0';}  
}  
  if(t>0){
      _itoa(t, f, 2);
      b1.n.push_back(*f); 
    }
    return b1;
}
  
Bin Bin::operator*(Bin& b1){
long n1, n2; 
    Bin b2, b3; 
   int i;
    char a[n.size()]; 
    b2.n=n; 
    n1=b2.transfer(); 
    n2=b1.transfer();
    n1=n1*n2; 
     _itoa(n1, a, 2); 
     for(i=strlen(a)-1; i>=0; i--){ 
       b3.n.push_back(a[i]);
     }
     return b3;
}
long Bin::transfer(){ 
    int n1, i;
    long n2;
    char f[2];
    n2=0; 
    for(it=n.begin(), i=0; i<n.size(); i++, it++){
     
           *f=*it;
           n1=atoi(f);
      
      n2=n1*long(pow(2, i))+n2; 
    }
    return n2;
}
 
Bin Bin::operator/(Bin& b1){ 
    long n1, n2; 
    Bin b2, b3; 
   int i;
    char a[n.size()]; 
    b2.n=n; 
    n1=b2.transfer(); 
    n2=b1.transfer();
    n1=n1/n2; 
     _itoa(n1, a, 2); 
     for(i=strlen(a)-1; i>=0; i--){ 
       b3.n.push_back(a[i]);
     }
     return b3;
}
Bin Bin::operator-(Bin& b1){
    long n1, n2; 
    Bin b2, b3; 
    int i;
    char a[n.size()]; 
    b2.n=n; 
    n1=b2.transfer(); 
    n2=b1.transfer();
    n1=n1-n2; 
     _itoa(n1, a, 2); 
     for(i=strlen(a)-1; i>=0; i--){ 
       b3.n.push_back(a[i]);
     }
     return b3;
}
Bin Bin::operator%(Bin& b1){ 
    long n1, n2; 
    Bin b2, b3; 
    int i;
    char a[n.size()]; 
    b2.n=n; 
    n1=b2.transfer(); 
    n2=b1.transfer();
    n1=n1%n2; 
     _itoa(n1, a, 2); 
     for(i=strlen(a)-1; i>=0; i--){ 
       b3.n.push_back(a[i]);
     }
     return b3;
}
 
 
 
 
 
 
  
int Bin::check(){ 
    int i;
    for(i=0, it=n.begin(); i<n.size(); i++, it++){ 
      if(not(*it=='0' || *it=='1')){break;} 
    }
    if(i==n.size()){return 1;} 
    else{return 0;} 
}
 
istream& operator>>(istream& in, Bin& b1){
         string s1;
         int i;
         in>>s1;
   for(i=s1.size()-1; i>=0; i--){ 
           b1.n.push_back(s1[i]);}
         return in;
}
 
ostream& operator<<(ostream& out, const Bin& b1){
         conclusion(b1);
         cout<<endl;
         return out;};
void conclusion(Bin b1){
     int i;
     b1.it=b1.n.end();
     for(b1.it--, i=b1.n.size()-1; i>=0; b1.it--, i--)
     cout<<*b1.it;
}
int Bin::operator>(Bin b1) {
     if(n>b1.n) {return 1;}
     else {return 0;}
     }
int Bin::operator<(Bin b1) {
    if(n<b1.n) {return 1;}
    else {return 0;}
         }
int Bin::operator!=(Bin b1){
    if(n!=b1.n) {return 1;}
    else {return 0;}
         }
int Bin::operator==(Bin b1){
    if(n==b1.n) {return 1;}
    else {return 0;}
         }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 18:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос проверьте!!! (C++):

Проверьте - C++
Помогите чайнику. Гляньте пожалуйста, правильно сделал #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; ...

Проверьте - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; using namespace std; const int MAX=3; class StrNew { char*...

проверьте условие - C++
привет всем. люди добрые проверьте пж условие, чета у меня (s) не считает. заранее благодарен. #include &quot;stdafx.h&quot; #include &quot;conio.h&quot;...

Проверьте правильность - C++
Создайте условный оператор (if), который присваивал бы x значение x/y, если y не равно 0. #include &lt;iostream&gt; using namespace std; ...

Проверьте код - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; int main() { int a,b,res; char zn; scanf (&quot;%u %u&quot;,&amp;a,&amp;b);...

Проверьте код - C++
# include &lt;stdio.h&gt; void main() { int a; printf(&quot;Vvedit a\n&quot;); scanf(&quot;%d&quot;, &amp;a); int b; printf(&quot;Vvedit b\n&quot;); ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2011, 18:30
Привет! Вот еще темы с ответами:

Проверьте программу - C++
Напишите программу, запрашивающую у пользователя N вещественных чисел и выводящую на экран их среднее арифметическое. int main() { int...

Проверьте программу - C++
Здравствуйте,Написал программу по этой задаче: Но сомневаюсь в её правильности,вот код: #include &lt;stdlib.h&gt; #include &lt;math.h&gt; ...

Проверьте листинг - C++
фукция y=f(x) при x&lt;-3 y=cos(x)/(x+10) при -3&lt;=x&lt;4 y=e^(0,1*x) при 4&lt;=x&lt;6 y=lg(x) при x&gt;=6 y=sin^2(x) ...

Проверьте симметричность - C++
Проверить матрицу на симметричность.Да я знаю такие задачи уже были.Но я хочу именно свой код.Не пойму что не так!Почему не...


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

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

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