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

символы (с++) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 19:53     символы (с++) #1
Здравствуйте!!! Напишите пожалуйста простенькую программу которая суммирует два числа но с помощья char или string!!!!!!!!!

Добавлено через 2 минуты
но без функции atoi или atoll =)))))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 19:53     символы (с++)
Посмотрите здесь:

C++ Дан файл, компонентами которого являются символы. Переписать все символы в новый файл в обратном порядке.
C++ Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены и переписать новый текст в файл D
C++ Сформировать строку S таким образом, чтобы в нее попеременно вошли четные символы строки S1 и нечетные символы строки S2.
Алфавит. Символы операций. Специальные символы C++
C++ Написать функцию которая в строке заменяет все символы верхнего регистра в символы нижнего регистра
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.11.2010, 20:10     символы (с++) #2
Просто складываем и вычитаем из суммы 96

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
char ch1 = ' ', ch2 = ' ';
while(1){
cin >> ch1; cin >> ch2;
cout << (ch1 + ch2)-96;
}
 
    system("pause");
}
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:14  [ТС]     символы (с++) #3
Хм, я идею твою понял))) но если усложнить задачу!!!! примерно что бы он высчитывал такой тест!!!
ввод:
111111111111111111111 222222222222222222222
вывод:
333333333333333333333
а?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.11.2010, 20:15     символы (с++) #4
точно так же, только через массивы.
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:16  [ТС]     символы (с++) #5
не покажешь???
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.11.2010, 20:25     символы (с++) #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
char ch1[10] ={0}, ch2[10] ={0};
while(1){
cin >> ch1; cin >> ch2;
for(int i=0;i<strlen(ch1);i++)
cout << (ch1[i] + ch2[i])-96;
}
}
самое простое, тут нет обработки ситуации, если ch1[i] + ch2[i] больше 9 (всмысле 8+7=15, т.е. пишем 5, а 1 уходит на следующий разряд)
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:30  [ТС]     символы (с++) #7
Kastaneda, у тебя классная идея на счет перехода на следующий разряд!!!! Но он же ведь не берет мой тест(((
ввод:
111111111111111111111 222222222222222222222
вывод:
333333333333333333333

Добавлено через 1 минуту
ой я блиииииииииииииин!!! я понял свою ошибку!!!!!! огромное спасибо!!!!!!
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:35  [ТС]     символы (с++) #8
Аааа!!!! на этом проблемы не все. А если так?!
ввод:
123456788888 222222222
вывод:
123679011110
что нужно изменить????
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.11.2010, 20:40     символы (с++) #9
Я ж говорю, тот код, это самое простое, так для примера, как с массивами работать. Он даже числа разной длины не понимает.
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:41  [ТС]     символы (с++) #10
а что нужно сделать что бы понимал???))))
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.11.2010, 20:44     символы (с++) #11
Цитата Сообщение от jambas92 Посмотреть сообщение
что нужно изменить????
Написать нормальную ф-цию, с учетом разной длины чисел, переходом 1 в следующий разряд, так же учесть унарный минус. (вроде ничего не пропустил))

Добавлено через 1 минуту
jambas92, попробуй сам, если что - ошибки исправим)
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:50  [ТС]     символы (с++) #12
хорошо!!!!!!!!!!

Добавлено через 4 минуты
а как вам так???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
 
    char a[100];
    char b[100];
 
    cin >> a >> b;
 
    int x=atoi(a);
    int y=atoi(b);
 
    cout << x+y;
 
    return 0;
}
но эта программа не высчитывает выше 10^10 степени((( как это обойти????
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.11.2010, 20:57     символы (с++) #13
Цитата Сообщение от jambas92 Посмотреть сообщение
не высчитывает выше 10^10 степени(((
не может быть! Она не считает числа больше 2147483647 (максимальное значение int при int - 4 байта)
как это обойти????
массивы!
P.S.есть специальные библиотеки для работы с большеми числами, но думаю вам это не надо.

Добавлено через 1 минуту
Цитата Сообщение от jambas92 Посмотреть сообщение
а как вам так???
а как же <<"но без функции atoi или atoll =">>
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 20:58  [ТС]     символы (с++) #14
массивы??? а я как??? а специальной библиотекой я сегодня весь день парился... ничего там интересного. Дучше самому решить! А как это до делать??? Подтолкните!

Добавлено через 56 секунд
без фуекции atoi или atoll потому что я из начально знал что он не пренимает большие числа))))
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
27.11.2010, 21:01     символы (с++) #15
Цитата Сообщение от jambas92 Посмотреть сообщение
массивы??? а я как???
а какой смысл в этих массивах, если в итоге все делается через atoi() ?

Цитата Сообщение от jambas92 Посмотреть сообщение
специальной библиотекой я сегодня весь день парился... ничего там интересного
несомневаюсь)))

Цитата Сообщение от jambas92 Посмотреть сообщение
Подтолкните!
написали же пример, как работать с массивами. Что еще непонятно?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
27.11.2010, 22:01     символы (с++) #16
Цитата Сообщение от Kastaneda
несомневаюсь)))
А я вот сомневаюсь)))
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
27.11.2010, 22:16  [ТС]     символы (с++) #17
silent_1991, тогда докажи обратное!!! попробуй ее реши!!!
P/s: пытаюсь типа на слабо ее решить, интересно получится...
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 01:06  [ТС]     символы (с++) #18
ну вот я почти решил!!! идея такая!!! сравниваю два символьных массива, если одна из них больше (длиннее), то я меньшии массив до его содержимого забиваю нулями, что бы два массива были одинаковы по велечине, а дальше как показал Kastaneda, но не получается, исправьте...

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
#include <iostream>
 
using namespace std;
 
int main()
{
    char a[100]={0};
    char b[100]={0};
    char c[100]={0};
    char d[100]={0};
 
    int h, g;
 
    cin >> a >> b;
 
    int x=strlen(a);
    int y=strlen(b);
 
    if (x-y>0)
    {
        for (int i=x-y; i<x; i++)
        {
            for (int j=0; j<y; j++)
            {
                d[i]=b[j];
            }
        }
        for (int i=0; i<x; i++)
        {
            cout << (a[i]+d[i]) - 96;
        }
    }
    if (y-x>0)
    {
        for (int i=y-x; i<y; i++)
        {
            for (int j=0; j<x; j++)
            {
                c[i]=a[j];
            }
        }
        for (int i=0; i<y; i++)
        {
            cout << (c[i]+b[i]) - 96;
        }
    }
 
    if (x-y==0)
    {
        for (int i=0; i<x; i++)
        {
            cout << (a[i]+b[i])-96;
        }
    }
 
    return 0;
}
Добавлено через 36 минут
кстати вот этот код работает не правильно... проверь так.
ввод: 66 66
выход должен быть:132, а выводит 1212 ((((

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
char ch1[10] ={0}, ch2[10] ={0};
while(1){
cin >> ch1; cin >> ch2;
for(int i=0;i<strlen(ch1);i++)
cout << (ch1[i] + ch2[i])-96;
}
}
VASSUV
MiThEoN
 Аватар для VASSUV
412 / 278 / 15
Регистрация: 31.10.2009
Сообщений: 403
Записей в блоге: 2
28.11.2010, 04:04     символы (с++) #19
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#define k 10
using namespace std;
 
int main()
{
    char ch1[k] ={0}, ch2[k] ={0}, ch3[k+1] ={0};
    int chlen1,chlen2;
    int i=0;
    while(1)
    {
        cin >> ch1; cin >> ch2;
        chlen1=strlen(ch1);
        chlen2=strlen(ch2);
        for(i=0;i<k-1;i++)
        {
            (i<chlen1)?ch1[k-2-i]=ch1[chlen1-1-i]:ch1[k-2-i]='0';
            (i<chlen2)?ch2[k-2-i]=ch2[chlen2-1-i]:ch2[k-2-i]='0';
        }
        int n=0;
        i=0;
        while(n==0)
        {
            n=(ch1[i] + ch2[i])-96;
            i++;
        }
        if((int(n/10))!=0)
            cout<<(int(n/10));
        (n-10>0)?n-=10:n=n;
        for(i=i;i<strlen(ch1);i++)
        {
            n*=10;
            n+=(int((ch1[i] + ch2[i])-96));
            cout<<(int(n/10));
            n-=(int((n/10)*10));
        }
        cout<<(n-(int(n/10))*10);
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2010, 08:16     символы (с++)
Еще ссылки по теме:

C++ не могу понять задачку. Даны натуральное число n и символы s1, s2,., sn. Получить символы, принадлежащие последовательности s1, s2,., sn, которые
C++ Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном
Задана строка, символы которой могут повторяться. Нужно удалить все символы строки с помощью наименьшего количества вычеркиваний C++

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

Или воспользуйтесь поиском по форуму:
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 08:16  [ТС]     символы (с++) #20
VASSUV, твоя программа считывает хорошо, но на таком тесте он не проходит(((
ввод:123456788888 222222222
должен выводить: 123679011110, а у тебя выводит 1236781011110!!!!
он у тебя вместо 9 его расписывает как 8 и 1...
и я поменял
C++
1
#define k 101
Добавлено через 3 минуты
сам не пойму в чем ошибка... как будта бы все правильно...
Yandex
Объявления
28.11.2010, 08:16     символы (с++)
Ответ Создать тему

Метки
сумма строк(чисел)
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru