Строка.не присваивается по-симавольно

ванмомас намбаван
Дата: 29.12.2014 12:49:44
Значит есть задача по длиной арифметике сложить два числа.все бы хорошо но к строке сумма не присваиваються символы.Кто может помочь?Пишу в xcode.
c++ code :
#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;

int main(int argc, const char * argv[])
{
    // insert code here...
    string a,b,sum;
    
    cin>>a;
    cin>>b;
    
    while(a.length()>b.length())
    {
        b='0'+b;
    }
    
    while(a.length()<b.length())
    {
        a='0'+a;
    }
    
    int k=0;
    int l=0;
                     for (unsigned long i=(a.length()-1);i>=0;--i)
                          {
                              if (i==(a.length()-1))
                              {
                                  
                              k=int(sum[l])+int(a[i])+int(b[i])-2*48;
                                  
                              }else k=int(sum[l])+int(a[i])+int(b[i])-2*48;
                              
                              if (k>10)
                              {
                                  sum[l-1]='1';
                                  sum[l]=char(k-10);
                              }else sum[l]=char(k);
                              ++l;
                          }
    
    for (int i=l;i>=0;--i)
    {
        cout<<sum[l];
    }
    return 0;
}
m_Sla
Дата: 29.12.2014 13:48:21
ванмомас намбаван, у sum размер равен 0, поэтому sum[l]=char(k) не работает. Нельзя изменить то, чего нет.

Либо меняй размер sum.resize(), либо добавляй символы с помощью sum.push_back().
http://www.cplusplus.com/reference/string/string/
mayton
Дата: 29.12.2014 15:50:50
Тут как-то некрасиво идёт форматирование ведущих нулей. Может как-то компактнее?
Или вообще игнорировать пустое место. Просто не учитывать его в алгоритме сложения.


while(a.length()>b.length())
    {
        b='0'+b;
    }
    
    while(a.length()<b.length())
    {
        a='0'+a;
    }
MasterZiv
Дата: 29.12.2014 16:53:02
ванмомас намбаван

                     for (unsigned long i=(a.length()-1);i>=0;--i)
                          {
                          }


А у тебя программа не зацикливается ?
ванмомас намбаван
Дата: 29.12.2014 17:58:25
так мне нужно именно в определенное место с конкретным индексом вставлять символ ,а не в конец.
ванмомас намбаван
Дата: 29.12.2014 18:00:55
MasterZiv,кстати да там инт дожен быть.
MasterZiv
Дата: 29.12.2014 18:46:39
ванмомас намбаван
MasterZiv,кстати да там инт дожен быть.


Да не только...

P.S. у меня, кстати, получилось...
ванмомас намбаван
Дата: 29.12.2014 18:51:45
а там больше и нет причин что бы оно зацикливалось
m_Sla
Дата: 29.12.2014 18:51:53
ванмомас намбаван
так мне нужно именно в определенное место с конкретным индексом вставлять символ ,а не в конец.
или не нужно)))

(Вариант 1) sum.resize(некая величина), после этого sum[l]=char(k) будет корректно работать
(Вариант 2) убрать sum[l]=char(k) и использовать sum.push_back(k)

И так и так будет работать, нужно немножко доработать напильником.
m_Sla
Дата: 29.12.2014 18:54:01
MasterZiv
ванмомас намбаван
MasterZiv,кстати да там инт дожен быть.


Да не только...

P.S. у меня, кстати, получилось...
и вывод у него не работает
копипаст зло