|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.05.2010, 23:04 | #1 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
Переопределить оперцаю сложения
Добрый вечер.
Вообщем надо написать программу сложения двух строк, причём так, что бы 1 буква 1 строки складывалась с 1 буквой 2 строки, а именно мама+папа=мпаампаа и вот столкнулся с проблемой вывода формулы =((( не подскажете? вот мой код, если вы заметите ошибки, то пожалуйста укажите мне на них! буду оч благодарен! #include "iostream" #include "string.h" using namespace std; class string { public: char _string[100]; void SetS() { cout << "Введите слово" << endl; cin >> _string; } void summa { } }; void main() { char a; setlocale(0, "Rus"); string s1, s2; s1.Set_S(); s2.Set_S(); cout << "Результат сложения: "; cout << " \n"; system("Pause"); } |
05.05.2010, 23:30 | #2 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
Перегрузил оператор + для твоего класса
Код:
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
05.05.2010, 23:30 | #3 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 56
|
а зачем делать формулу сложения, просто сделайте вывод букв поочередно из двух строк, зачем делать 3й массив если можо сделать так:
Код:
сout<<"Изучаю программирование" точка с запятой
|
06.05.2010, 02:06 | #4 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
еслия всё вернов стаивл то получается так, но ошибок выдаёт уйму! в Windiws Visual Studio
#include "iostream" #include "string.h" using namespace std; class string { public: char _string[100]; void SetS() { cout << "Введите слово" << endl; cin >> _string; } void summa (char s1, char s2) { int l=strlen(s1); int m=strlen(s2); if(s1==s2) { for(int i=0;i<l;i++) { cout<<s1[i]; cout<<s2[i]; } } if(s1<s2) { for(int i=0;i<l;i++) { if(i<m) { cout<<s1[i]; cout<<s2[i]; } else cout<<s2[i]; } if(s1>s2) { for(int i=0;i<m;i++) { if(i<l) { cout<<s1[i]; cout<<s2[i]; } else cout<<s1[i]; } } } } }; void main() { char a; setlocale(0, "Rus"); string s1, s2; s1.SetS(); s2.SetS(); cout << "Результат сложения: "; cout << " \n"; system("Pause"); } |
06.05.2010, 02:09 | #5 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
LuBuMaster, мой способ и лучше и работает правильно! Используй его
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
06.05.2010, 02:10 | #6 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
Ozerich
cпасибо за код! работает! правда немного сложный))) а вы не могли бы под мою прогу сделать этот оператор сложения если не сложно? просто вы используете сложные команды) я таких не знаю и при сдаче могу завалиться =( |
06.05.2010, 02:17 | #7 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
LuBuMaster, ничего тут сложного нету. Используется перегрузка оператора сложения, т.е ты сейчас можешь складывать классы типа string обычным оператором +.
Например у тебя в примере создаются s1 и s2. Ты их можешь сложить как (s1+s2) и записать результат в третью переменную. Как с интами Код:
Код:
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
06.05.2010, 02:25 | #8 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
ооо)) спасибо!)))))
но это в принципе понятно, меня больше пугает оператор сам const String operator + (const String &right) { String res; int ai = 0, bi = 0, shag = 1, ind = 0; while(ai < strlen(_string) || bi < strlen(right._string)) { if(ai == strlen(_string)) res._string[ind++] = right._string[bi++]; else if(bi == strlen(right._string)) res._string[ind++] = _string[ai++]; else { if(shag % 2 == 0) res._string[ind++] = right._string[bi++]; else res._string[ind++] = _string[ai++]; shag++; } } вотв самом начале ещё я тут не воткнул (const String &right) и что означем res. и right. ? остальное в принципе понятно) Последний раз редактировалось LuBuMaster; 06.05.2010 в 02:28. |
06.05.2010, 02:38 | #9 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
res это переменная результата, а right это второе слагаемое
res = this(cам класс) + right Тег [code] не забывай
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
06.05.2010, 02:41 | #10 |
Пользователь
Регистрация: 05.04.2010
Сообщений: 56
|
и правда накрутил, во всех if перепутал переменные, нужно было сравнивать l и m везде, но думаю что код Ozerich и действительно лучше и работает)
сout<<"Изучаю программирование" точка с запятой
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему inc работает быстрее обычного сложения | Rusl92 | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 26.04.2010 11:58 |
програма для умножения и сложения таблицы | NoVeto | Общие вопросы C/C++ | 6 | 09.02.2010 12:52 |
Переопределить функцию | DirtyBASS | Помощь студентам | 0 | 07.11.2009 15:46 |
Помогите! не могу переопределить Click | 4kir | Общие вопросы C/C++ | 2 | 12.01.2008 22:09 |