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

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

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

Как сложить два char? - C++

24.03.2012, 17:16. Просмотров 5363. Ответов 106
Метки нет (Все метки)

Как сложить два char?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2012, 17:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сложить два char? (C++):

Сложить столбиком два числа char - C++
как сложить столбиком 2 числа записанных в char? Объясните кодом

Как сложить два массива - C++
Как сложить два массива и присвоит ответь третьему массиву int m={5,6,7}; int n={2,3,8}; in p;

Как сложить два числа - C++
как сложить два числа в с++

Как сложить два случайных числа из массива? - C++
Как сложить два случайных числа из массива с++

Как сложить побитно два числа в двоичной с/с - C++
Добрый день форумчане! У меня программа по переводу из 10 с/с в 2 с/с. Она сделана используя битовые поля. (см. код ниже) Вопрос, а...

Как сложить два символьных массива в один? - C++
Извиняюсь если вопрос уже был, но я так и не нашел ответа. Как записать два слова в один массив/указатель, чтобы его потом можно было...

106
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
24.03.2012, 17:17 #2
char c1, c2, c;
c = c1 + c2;
4
Байт
Эксперт C
17661 / 11700 / 1863
Регистрация: 24.12.2010
Сообщений: 23,335
24.03.2012, 18:16 #3
C
1
2
char s[100] = "abcd", *s2 = "efg";
strcat(s, s2);
Добавлено через 53 секунды
slice, юмор понял
0
bugaboo
-1 / 4 / 0
Регистрация: 12.06.2017
Сообщений: 60
18.06.2017, 21:44 #4
Цитата Сообщение от Kalisto Посмотреть сообщение
Как сложить два 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
void sum(char*& c, char*& a, char*& b)
{
    size_t i, la, lb;
    la = strlen(a);
    lb = strlen(b);
    c = new char[la + lb + 1];
    for (i = 0; i < la + lb; i++)
    {
        if (i < la)
        {
            c[i] = a[i];
            if (i < lb) c[la + i] = b[i];
        }
        else if (i >= la * 2) c[i] = b[i - la];
    }
    c[i] = 0;
}
int main()
{
    char* a, b, c;
           ...
    sum(c, a, b);
           ...
    delete[] c;
1
Goffrua
4 / 4 / 0
Регистрация: 30.03.2015
Сообщений: 80
Завершенные тесты: 1
18.06.2017, 22:10 #5
bugaboo, извините, а это случайно ли не длинная арифметика?
0
bugaboo
-1 / 4 / 0
Регистрация: 12.06.2017
Сообщений: 60
18.06.2017, 22:28 #6
Goffrua, результат до 18 446 744 073 709 551 615 символов осилит, дальше не отвечу )))
но с фиксированными размерами проблем как бы нет
0
Goffrua
4 / 4 / 0
Регистрация: 30.03.2015
Сообщений: 80
Завершенные тесты: 1
18.06.2017, 23:29 #7
Цитата Сообщение от bugaboo Посмотреть сообщение
C++
1
char* a, b, c;
Это Вы объявляете все три массива динамическими, или только первый?
Цитата Сообщение от bugaboo Посмотреть сообщение
C++
1
size_t i, la, lb;
А что такое size_t?
Цитата Сообщение от bugaboo Посмотреть сообщение
C++
1
void sum(char*& c, char*& a, char*& b)
Если передавать массив в функцию, обязательно писать &?
0
bugaboo
-1 / 4 / 0
Регистрация: 12.06.2017
Сообщений: 60
19.06.2017, 00:33 #8
Цитата Сообщение от Goffrua Посмотреть сообщение
Это Вы объявляете все три массива динамическими, или только первый?
это просто объявление указателей. На тот момент они как бы ещё не до конца решили, на что указывают. Массивы a и b могут быть как статическими, так и динамическими, но должны быть инициализированы до вызова функции. Массив с как бы становится динамическим внутри функции и в этом суть - не надо заранее создавать массив фиксиованного размера и надеяться, что в него влезет, либо занимать 100 ячеек памяти для хранения 10 символов. Массив c, наоборот, не должен быть инициализирован до вызова функции. И его потом надо не забыть удалить.
Цитата Сообщение от Goffrua Посмотреть сообщение
А что такое size_t?
http://ru.cppreference.com/w/cpp/types/size_t
на самом деле там можно было написать int i, la, lb и для 99.9999% ситуаций этого было бы достаточно. Просто понт перестраховка
Цитата Сообщение от Goffrua Посмотреть сообщение
Если передавать массив в функцию, обязательно писать &?
Обязательно только для c. Для a и b - нет, но я написал, чтобы чуть порезче работало, поскольку при таком раскладе не создаются копии аргументов.
Я вообще то не профи, просто не нашел лучшего способа склеить массивы charов без этого велосипеда и подключения библиотек. И решил его выложить на суд общественности...
1
DevAlone
322 / 274 / 55
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
19.06.2017, 01:21 #9
C++
1
'a' + 'b'
Если вы, вдруг, имеете ввиду конкатенацию, то используйте std::string
0
bugaboo
-1 / 4 / 0
Регистрация: 12.06.2017
Сообщений: 60
19.06.2017, 01:43 #10
Цитата Сообщение от DevAlone Посмотреть сообщение
C++
1
'a' + 'b'
Если вы, вдруг, имеете ввиду конкатенацию, то используйте std::string
А если я хочу конкатенацию, но не хочу string?
0
DevAlone
322 / 274 / 55
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
19.06.2017, 04:03 #11
Цитата Сообщение от bugaboo Посмотреть сообщение
А если я хочу конкатенацию, но не хочу string?
Тогда сам следи за выделением и освобождением памяти, ну или на стеке создавай
0
bugaboo
-1 / 4 / 0
Регистрация: 12.06.2017
Сообщений: 60
19.06.2017, 08:44 #12
Цитата Сообщение от DevAlone Посмотреть сообщение
Тогда сам следи за выделением и освобождением памяти, ну или на стеке создавай
А я разве не слежу?
0
Goffrua
4 / 4 / 0
Регистрация: 30.03.2015
Сообщений: 80
Завершенные тесты: 1
19.06.2017, 10:41 #13
bugaboo, извините пожалуйста, а Вы не могли бы скинуть весь код с объявлением массивов, их вводом, вызовом функции и выводом с?
0
Antikl
с++
253 / 249 / 69
Регистрация: 15.07.2015
Сообщений: 1,322
Завершенные тесты: 6
19.06.2017, 10:52 #14
Цитата Сообщение от Goffrua Посмотреть сообщение
и выводом с
такое не подойдет ?
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
#include <stdio.h>
 
void my_strcat (char *s, char *s_);
 
int main(void) 
{
char str [255]="";
char s1 [] = "Hello";
char s2 [] = ", world";
char s3 [] = "!";
char s4 [] = "(c)";
 
my_strcat(str,s1);
my_strcat(str,s2);
my_strcat(str,s3);
my_strcat(str,s4);
 
printf(str);
 
    return 0;
}
 
void my_strcat (char *s, char *s_)
{
while(*s) 
s++;
 
while(*s_)
{
    *s = *s_;
    s++;
    s_++;
}
}
1
Goffrua
4 / 4 / 0
Регистрация: 30.03.2015
Сообщений: 80
Завершенные тесты: 1
19.06.2017, 11:20 #15
Antikl, спасибо, но мне нужна именно длинная арифметика)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2017, 11:20
Привет! Вот еще темы с ответами:

Как правильно сложить два больших (64 бита) числа? - C++
Допустим есть два двоичных числа A и B. Размер каждого из них = 64 бита. Вопрос такой: 1) 64 бита = 64\8 = 8 цифр, так? 2) Как их...

Как максимально быстро сложить два динамических одномерных массива? SSE? - C++
Всем привет! Нужно максимально быстро сложить поэлементно два байтовых массива. Есть: unsigned char *buf1; unsigned char *buf2; ...

Как сложить два float-а, имея их представление в виде массива байт? - C++
Здравствуйте. Нужна помощь. Я храню float числа в виде массива 4-х байтов. Подскажите как не переводя массив обратно во float,...

сложить char* c char - C++
подскажите пожалуйста как сложить строку типа char* с символом типа char (например 12 сложить с 3 чтобы получилось 123)


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

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

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