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

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

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

Сложение двух строк - C++

10.06.2013, 23:08. Просмотров 1092. Ответов 16
Метки нет (Все метки)

Добрый вечер. Написал программу, которая переводит два числа из десятичной в двоичную систему.
Необходимо теперь эти два двоичных числа как бы склеить.
т.е. склеить нужно два числа, которые получатся - outA и outB.
например выходит outA = 1100, outB = 1111. Должно получиться при склеивании 11001111.
Не могу понять, как это сделать. В выводе, два числа типа integer...а посимвольно склеиваются, только типа char.
Заранее благодарю.

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
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL , "Russian");
    int A, outA=0, j;
    int B, outB=0, i;
    cout << "Введите часы: ";
    cin >> A;
    cout << "Введите минуты: ";
    cin >> B;
    for(j=0; A>0; j++)
    {
        outA+=(A%2)*pow(10.0,j);
        A/=2;
    }
    for (i=0; B>0; i++)
    {
         outB+=(B%2)*pow(10.0,i);
        B/=2;
    }
    cout <<outA<< endl;
    cout <<outB<< endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 23:08     Сложение двух строк
Посмотрите здесь:

Сложение двух строк - C++
вот написал что то вроде так... но не получается... что дополнить или изменить? int _tmain(int argc, _TCHAR* argv) { char a =...

Сложение двух строк - C++
Проблема: не могу получть результат. Что у меня не так? class base { private: char* str; int size; public: base(...

Сделать сложение двух строк - C++
Всем привет. Бьюсь об задачу. Есть два символьных массива с литералами. На выходе необходимо получить ответ. Часть кода //Применить...

Сложение двух строк, ошибки - C++
Подскажите пожалуйста где я допустил ошибки, всё никак программа не заработает. Код: #include &lt;iostream&gt; #include &lt;clocale&gt; ...

Конкатенация двух нибблов (сложение двух полубайт в байт) - C++
Как из этих двух полубайт получить полноценный байт со значение &quot;0x3e&quot;? unsigned char first_nibbl = 0x03 unsigned char last_nibbl =...

Сложение строк - C++
смысл программы: вводим с клавиатуры строки....они запихиваются в вектор, когда мы прекращаем ввод они суммируются алгоритмом accumulate()...

Сложение строк - C++
Как сложить 2 строки по символьно ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doctor_
234 / 234 / 71
Регистрация: 03.02.2011
Сообщений: 1,431
10.06.2013, 23:13     Сложение двух строк #2
Сделай так
C++
1
2
cout <<outA;
    cout <<outB<< endl;
evgman
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
10.06.2013, 23:14  [ТС]     Сложение двух строк #3
Дело в том, что получившееся число, нужно потом еще преобразовывать, поэтому так не выйдет.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
10.06.2013, 23:17     Сложение двух строк #4
Цитата Сообщение от evgman Посмотреть сообщение
outA = 1100, outB = 1111.
C++
1
outA * 10000 + outB
Это если они всегда по 4 разряда и в десятичной системе
evgman
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
10.06.2013, 23:20  [ТС]     Сложение двух строк #5
Цитата Сообщение от Мимино Посмотреть сообщение
C++
1
outA * 10000 + outB
Это если они всегда по 4 разряда и в десятичной системе
Нет, не всегда 4 разряда(
Я так понимаю, должна быть какая-то третья переменная, которая и склеит все это воедино.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
10.06.2013, 23:23     Сложение двух строк #6
Цитата Сообщение от evgman Посмотреть сообщение
Нет, не всегда 4 разряда(
Я так понимаю, должна быть какая-то третья переменная, которая и склеит все это воедино.
Тогда просто в цикле дополнительно посчитать число разрядов outB
C++
1
2
3
int count = 0
for (i = 10; i <= outB; i *= 10)
count++
только в конце проверьте на всякий случай, может быть завышение степени 10-ки на 1.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 23:25     Сложение двух строк #7
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
#include <iostream>
#include <string.h> // strcat
#include <math.h>
 
using namespace std;
 
int paste_together(int first, int two);
 
int main()
{
    setlocale (LC_ALL , "Russian");
    int A, outA=0, j;
    int B, outB=0, i;
    cout << "Введите часы: ";
    cin >> A;
    cout << "Введите минуты: ";
    cin >> B;
    for(j=0; A>0; j++)
    {
        outA+=(A%2)*pow(10.0,j);
        A/=2;
    }
    for (i=0; B>0; i++)
    {
         outB+=(B%2)*pow(10.0,i);
        B/=2;
    }
 
    /*DEBUG*/
    outA = 1100;
    outB = 1111;
    /******/
 
    cout << paste_together(outA, outB) << endl;
    system("pause");
}
 
int paste_together(int first, int two)
{
    char first_char[33], two_char[33];
 
    itoa(first, first_char, 10);
 
    itoa(two, two_char, 10);
 
    strcat(first_char, two_char);
 
    return atof(first_char);
}
evgman
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
10.06.2013, 23:42  [ТС]     Сложение двух строк #8
Цитата Сообщение от GetVariable Посмотреть сообщение
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
#include <iostream>
#include <string.h> // strcat
#include <math.h>
 
using namespace std;
 
int paste_together(int first, int two);
 
int main()
{
    setlocale (LC_ALL , "Russian");
    int A, outA=0, j;
    int B, outB=0, i;
    cout << "Введите часы: ";
    cin >> A;
    cout << "Введите минуты: ";
    cin >> B;
    for(j=0; A>0; j++)
    {
        outA+=(A%2)*pow(10.0,j);
        A/=2;
    }
    for (i=0; B>0; i++)
    {
         outB+=(B%2)*pow(10.0,i);
        B/=2;
    }
 
    /*DEBUG*/
    outA = 1100;
    outB = 1111;
    /******/
 
    cout << paste_together(outA, outB) << endl;
    system("pause");
}
 
int paste_together(int first, int two)
{
    char first_char[33], two_char[33];
 
    itoa(first, first_char, 10);
 
    itoa(two, two_char, 10);
 
    strcat(first_char, two_char);
 
    return atof(first_char);
}

Насчет 11001111 - это был просто пример.
outA и outB - переменные, зависящие от введенных чисел.
Соответственно
outA = 1100;
outB = 1111;
не выход. Не нужно outA и outB привязывать к определенным числам.
+ потом это получившееся число, перевести обратно в десятичную систему.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 23:46     Сложение двух строк #9
Значения 1100 и 1111 были вставлены для проверки работоспособности подпрограммы, она также работает и с другими числами.
evgman
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
10.06.2013, 23:47  [ТС]     Сложение двух строк #10
Цитата Сообщение от Мимино Посмотреть сообщение
Тогда просто в цикле дополнительно посчитать число разрядов outB
C++
1
2
3
int count = 0
for (i = 10; i <= outB; i *= 10)
count++
только в конце проверьте на всякий случай, может быть завышение степени 10-ки на 1.

А вот тут не понял(
Почему именно outB?
Когда нужно и А и В.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 23:47     Сложение двух строк #11
насчёт перевода можете глянуть Перевод чисел из двоичной в десятичную систему счисления
evgman
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
10.06.2013, 23:55  [ТС]     Сложение двух строк #12
Цитата Сообщение от GetVariable Посмотреть сообщение
Спасибо, это я переведу.
Только попробуйте ввести в минутах например число больше 40..результат не получается правильный, там что-то с типом данных не то, integer слишком маленький видимо, а вставляя longint или unsigned, выдает ошибку.
И еще...финальной переменной получается "paste_together", т.е. ее мне в десятичный вид переводить?
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 23:57     Сложение двух строк #13
long double попробуйте

Добавлено через 25 секунд
да её.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
10.06.2013, 23:58     Сложение двух строк #14
Цитата Сообщение от evgman Посмотреть сообщение
А вот тут не понял(
Почему именно outB?
Когда нужно и А и В.
Идея в том, чтобы посчитать количество разрядов в outB. (подправил немного)
C++
1
2
3
int count = 0
for (i = outB; i > 0; i /= 10)
count++
Например, если outB = 101, то count будет равен 3.
Далее
C++
1
outA * pow(10.0, count) + outB
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 00:00     Сложение двух строк
Еще ссылки по теме:

Сложение строк - C++
Правильно ли я выполнил сложение строк? выдаёт ошибку что-то #include &lt;stdio.h&gt; #include &lt;string.h&gt; void main() { char...

Сложение двух матриц - C++
Доброго времени суток Помогите пожалуйста в написании программы. Пользователь вводит Матрицу А(размер 2х2) и Матрицу В(размер 2х2). ...

Сложение двух массивов. - C++
Что то я не как не пойму если я пишу вот такой код #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; int aaa = {2,3,4}, bbb = {5,6,7}, ...

Сложение двух массивов - C++
Вот условие задачи: Your friend is the person who does not like any limitations in the life. And when you said to him that it is totally...

Сложение двух матриц - C++
Даны две матрицы 2х2: а и е, которые нужно сложить. У меня при сложении в результате выводит только первый столбец, помогите найти ошибку)...


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

Или воспользуйтесь поиском по форуму:
evgman
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 23
11.06.2013, 00:00  [ТС]     Сложение двух строк #15
Цитата Сообщение от GetVariable Посмотреть сообщение
long double попробуйте

Добавлено через 25 секунд
да её.
long double не помогает(
Yandex
Объявления
11.06.2013, 00:00     Сложение двух строк
Ответ Создать тему
Опции темы

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