Показать сообщение отдельно
  #10  
Старый 10.07.2013, 00:18
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

char s[2 МИЛЛИАРДА] - это еще что такое? Почему не 17 триллионов? Или не 93 дециллиона? Больше, больше бери!
А если серьезно - подумай сам, у тебя программе выделяется 4 гб вирутальной оперативки, из которых некоторое количество занимает винда. А ты делаешь два массива по 2 гигабайта размером в стеке.
Во-вторых - ну ни разу не понимаю, зачем тут вообще преобразование в строку и назад. Можно же просто делить число на 10 пока оно не занулится. А очередную цифру брать как остаток деления на 10.
В-третьих, b[i] = s[i]; N = N + atoi(b); даст не тот результат, который видимо планировался: для числа 12345 будут суммироваться числа 1, 12, 123, 1234, 12345.
Ну и наконец, b не инициализировано. Оно выделяется в стеке, значит в нем мусор, а значит изначально там не пустая строка. То есть на самом деле будут суммироваться числа:
"1куча мусора"
"12уча мусора"
"123ча мусора"
"1234а мусора"
"12345 мусора"
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием