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

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

Войти
Регистрация
Восстановить пароль
 
dmitriu098
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 17
#1

Разработка двоичного калькулятора (небольшие недочеты) - C++

26.04.2014, 02:59. Просмотров 698. Ответов 1
Метки нет (Все метки)

Добрый вечер форумчане! Прошу помощи в описании некоторой части кода. Исходное задание: Необходимо создать двоичный калькулятор, выполняющий ("+","-", "*", "/"). Калькулятор в рабочем состоянии. (в поля вводим изначальные значения (в двоичном виде)
C++ (Qt)
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
int dvh1();
int dvh02();
int dvh2(int d);
 
int main(int argc, char** argv) {
int elem1, elem2;
int c, d, dd, a, b;
while (c != 0)
{
cout<<"Dobro pogalovat!\n";
cout<<"1 - Slogenie\n";
cout<<"2 - Vichetanie\n";
cout<<"3 - Delenie\n";
cout<<"4 - Ymnogenie\n";
cout<<"0 - Vihod\n";
cin >> c;
switch (c)//выбор действия
{
case 1://сложение
{
elem1 = dvh1();
elem2 = dvh02();
d=elem1+elem2 ;
dvh2(d);
cout << endl;
}
break;
case 2://вычитание
{
elem1 = dvh1();
elem2 = dvh02();
d=elem1-elem2;
dvh2(d);
cout << endl;
}
break;
case 3://деление
{
elem1 = dvh1();
elem2 = dvh02();
d=elem1/elem2;
dvh2(d);
cout << endl;
}
break;
case 4://умножение
{
elem1 = dvh1();
elem2 = dvh02();
 
d=elem1*elem2;
dvh2(d);
cout << endl;
}
break;
}
}
return 0;
}
int dvh1()//описание первого двоичного числа
{
int y=0, a=0,i,count=0,j,as,sa;
char str[50];//максимальная разрядность числа
cout<<"Vvedite pervoe dvoichnoe chislo:\n";
cin>>str;//вводим первое число
for (i=0; str[i]!='\0'; i++)
{
if (str[i]!=' ')
{
count++;//значение увеличивается
}
}
int mas[count];//позиции разрядов в числе
char popo;
for (i=0; i<count; i++)//счетчик увеличивается, пока не достигнет последнего элемента в числе
{
popo=str[i];
switch (popo)//цифры из множества (0;1)
{
case '0': {mas[i]=0;} break; 
case '1': {mas[i]=1;} break;
}
}
for (i=0; i<count; i++)
{
sa=((count-i)-1);
a=a+(mas[i]*(pow(2,sa)));
}
return a;
}
int dvh02()//описание второго двоичного числа
{
int y=0, b=0,i,count=0,j,as,sa;
char str[50];
cout<<"Vvedite vtoroe dvoichnoe chislo:\n";
cin>>str;
for (i=0; str[i]!='\0'; i++)
{
if (str[i]!=' ')
{
count++;
}
}
int mas[count];//позиции разрядов в числе(порядковый номер)
char popo;
for (i=0; i<count; i++)//счетчик увеличивается, пока не достигнет последнего элемента в числе
{
popo=str[i];
switch (popo)//цифры из множества (0;1)
{
case '0': {mas[i]=0;} break;
case '1': {mas[i]=1;} break;
}
}
for (i=0; i<count; i++)//счетчик увеличивается, пока не достигнет последнего элемента в числе
{
sa=((count-i)-1);
b=b+(mas[i]*(pow(2,sa)));
}
return b;
}
int dvh2(int d)//выполнение преобразований над вводимыми значениями
{
int i=0, b=0, dd=0,bb=0;
dd = d;
bb = d;
for (i=0; ; i++)
{
b++;
d=d/2;
if (d<2)
{
break;
}
}
b=b+1;//количество разрядов двоичного числа
int cel[b],ost[b],dvoich[b];
int trans = 0;
for (i=0; i<b; i++)
{
cel[i]=bb/2;
ost[i]=cel[i];
bb=bb/2;
cel[i]=dd-(cel[i]*2);
dd=ost[i];
dvoich[(b-1)-i]=cel[i];
}
for (i=0; i<b; i++)
{
cout<< dvoich[i];
}
return dvoich[i];
}
Буду благодарен за описание, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 02:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработка двоичного калькулятора (небольшие недочеты) (C++):

Составить программу для двоичного калькулятора на реальном железе - C++
Помогите пожалуйста,ребята программисты(ничего не выходит,не знаю как написать программу по заданной схеме.Если даром не хотите/не можете...

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

Исправить недочеты в программе (лаба №4) - C++
Вот прога работы с деком. Там есть меню с некоторыми операциями над деком. Она работает. Но есть кое-какие баги. Например, когда удаляешь...

Проверьте решение на ошибки и недочеты - C++
Сейчас просто без Студии сижу, а на завтра нужно сдать всё. Вот написал по примерам код. Суть задания: Описать структуру с именем...

Открытие файла, найти недочеты в коде - C++
Добрый вечер. Не получается запустить одну программу, думаю проблемы с файлами. буду очень благодраен за любую помощь #include...

Разность множеств: найти недочеты в коде - C++
Помогите разобраться с ошибкой в коде. Требуется сделать разность двух множеств: множество1 - множество2. Придумала два алгоритма,но не...

1
Komi
6 / 6 / 2
Регистрация: 10.08.2012
Сообщений: 82
26.04.2014, 04:29 #2
Времени сейчас нет на чтение всей этой саги, но могу направить на идею:

создай конвертер из бинарного в десятиричную, выполняй функции на десятиричной, и конвертируй опять в бинарное.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2014, 04:29
Привет! Вот еще темы с ответами:

Замена слов в цикле. Найти недочеты в коде - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; using namespace std; int main(){ char temp; cout &lt;&lt; &quot;vvedite...

Конструктор копирования, найти недочеты в программном коде - C++
Здравствуйте, посмотрите пожалуйста, тут у меня конструктор копирования. Я нашел какой-то пример, попробовал все переделать под свою...

Программа из учебника Прата. Структуры в многофайловом приложении. Исправить недочеты в коде - C++
Посмотрите, пожалуйста, что где исправить. int fill()-для заполнения массива all-для вывода суммы продаж за 4 квартала первый: ...

Небольшие вопросы - C++
Одномерный массив 1. Передвинуть элементы равные 0 в конец массива 2. Поменять местами массив, т.е. был 3 5 -9 0 1, стал 1 0 -9 5 3 ...


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

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

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