Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Строка.не присваивается по-симавольно / 12 сообщений из 12, страница 1 из 1
29.12.2014, 12:49
    #38845452
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
Значит есть задача по длиной арифметике сложить два числа.все бы хорошо но к строке сумма не присваиваються символы.Кто может помочь?Пишу в xcode.
c++ code :
Код: plaintext
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 <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;
}
...
Рейтинг: 0 / 0
29.12.2014, 13:48
    #38845570
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
ванмомас намбаван, у sum размер равен 0, поэтому sum[l]=char(k) не работает. Нельзя изменить то, чего нет.

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


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
while(a.length()>b.length())
    {
        b='0'+b;
    }
    
    while(a.length()<b.length())
    {
        a='0'+a;
    }
...
Рейтинг: 0 / 0
29.12.2014, 16:53
    #38845873
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
ванмомас намбаван
Код: plaintext
1.
2.
3.
                     for (unsigned long i=(a.length()-1);i>=0;--i)
                          {
                          }



А у тебя программа не зацикливается ?
...
Рейтинг: 0 / 0
29.12.2014, 17:58
    #38845932
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
так мне нужно именно в определенное место с конкретным индексом вставлять символ ,а не в конец.
...
Рейтинг: 0 / 0
29.12.2014, 18:00
    #38845934
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
MasterZiv,кстати да там инт дожен быть.
...
Рейтинг: 0 / 0
29.12.2014, 18:46
    #38845972
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
ванмомас намбаванMasterZiv,кстати да там инт дожен быть.

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

P.S. у меня, кстати, получилось...
...
Рейтинг: 0 / 0
29.12.2014, 18:51
    #38845976
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
а там больше и нет причин что бы оно зацикливалось
...
Рейтинг: 0 / 0
29.12.2014, 18:51
    #38845978
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
ванмомас намбавантак мне нужно именно в определенное место с конкретным индексом вставлять символ ,а не в конец.или не нужно)))

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

И так и так будет работать, нужно немножко доработать напильником.
...
Рейтинг: 0 / 0
29.12.2014, 18:54
    #38845980
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
MasterZivванмомас намбаванMasterZiv,кстати да там инт дожен быть.

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

P.S. у меня, кстати, получилось... и вывод у него не работает
копипаст зло
...
Рейтинг: 0 / 0
29.12.2014, 18:59
    #38845985
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
ванмомас намбавана там больше и нет причин что бы оно зацикливалось

Да, чтобы зацикливалось больше нет причин.
Зато дофига причин, чтобы оно не работало
...
Рейтинг: 0 / 0
29.12.2014, 19:57
    #38846037
ванмомас намбаван
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Строка.не присваивается по-симавольно
m_Sla,1.Спасибо большое)2.Какой копипаст?Я ее сам пилил,найди мне таку же в инете...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Строка.не присваивается по-симавольно / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]