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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ про мост http://www.cyberforum.ru/cpp-beginners/thread292531.html
#pragma hdrstop #include <stdio.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv) { int rub,cop,t,k=0,n,max,nn=0,kmax=0; printf("Vvedite rub i cop:"); scanf("%d%d",&rub,&cop); max=nn=n=rub*100+cop;
C++ Работа с файлом, найти, изменить. Добрый день. Задание по файлам, любая помощь приветствуется (справка, написание куска кода) Задача: Есть исходный файл input.txt(прикреплен). В нем 3 колонки разделенные ";" - 1 колонка с названием банков, строковый тип ну и две колонки с цифрами вещественного типа. эти две колонки соответственно за 2000 и 2001 год. И так суть задания: Создать новый файл Output.txt в котором. 1) Получить... http://www.cyberforum.ru/cpp-beginners/thread292530.html
Переопределение ввода / вывода C++
Структура «абонент телефонной сети» содержит следующие поля: 1) фамилия (строка), 2) ули-ца, 3) дом, 4) квартира, 5) тел. номер. Переопределить операции << и >> для файлового ввода-вывода такого типа данных.
C++ Матрица, тупой вопрос
Нужно найти сумму строки, где находится максимальный элемент. Элемент-то с лёгкостью нашёл. А вот сумму имеенно ЭТОЙ строки не могу =(Почему-то суммирует весь массив. Подскажите пожалуйста.
C++ Действия с матрицией http://www.cyberforum.ru/cpp-beginners/thread292518.html
Куплю решение задачи. Предложения в личку. Разработать алгоритм и по нему составить два варианта программы для обработки двумерного массива. Первый вариант программы – работа со статическим массивом, второй – с динамическим. Задание:Упорядочить по возрастанию элементы каждой строки матрицы размером n x m. Примеры решения (сделанные коды программ должны быть написаны на подобии, так сказать...
C++ Ошибки при компиляции #include <vcl.h> #pragma hdrstop #include "CDPlayer_.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) подробнее

Показать сообщение отдельно
2008kedr2008
3 / 3 / 0
Регистрация: 16.11.2010
Сообщений: 165

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

10.05.2011, 18:30. Просмотров 275. Ответов 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;}
         }
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru