|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Преобразование числа в строку
Существует ли функция, которая преобразовывает число в строку? Если нет, то подскажите, как это сделать?
|
#2
|
|||
|
|||
Удалено по причине невнимательности автора
Последний раз редактировалось ChinYan, 09.07.2013 в 21:36. |
#3
|
||||
|
||||
Существует ли гугл? Если да, то подскажите, почему вы его не используете?
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
atoi/itoa
1232321323121 — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
А можно ли преобразовать каждый символ в отдельности, чтобы можно было сложить все цифры числа?
|
#6
|
||||
|
||||
Можно.
____ — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
Что-то у меня не получается. Проблема в такой программе.
Код:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> int main() { int T, N, pr = 0, i; char s[2000000000], b[2000000000]; scanf("%d", &T); while(T > 0) { scanf("%d", &N); while(N > 0) { itoa(N, s, 10); N = 0; for(i = 0; i < strlen(s); i++) { b[i] = s[i]; N = N + atoi(b); pr++; } } printf("%d\n", pr); pr = 0; T--; } getch(); return 0; } |
#8
|
||||
|
||||
#0 - конец строки. Подсовывай после каждого числа.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
|||
|
|||
Что-то я не понял.
|
#10
|
||||
|
||||
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. |
#11
|
|||
|
|||
Тут есть одна проблема. Допустим, возьмём число 123456789. Получить цифру 9 не будет никакой проблемы, а попробуй найти цифру 8.
|
#12
|
||||
|
||||
-1, или на какую тебе там надо позицию.
Если честно, я нихрена не понял, число 123456789 строкой задано или как? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#13
|
|||
|
|||
В условии сказано, что натуральное число. Здесь можно инициализировать строкой. Учитывая функции atoi и itoa, становится без разницы.
|
#14
|
||||
|
||||
Короче чётко сформулируйте, что вам надо.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#15
|
|||
|
|||
Я ввёл N как натуральное число. Потом преобразовал в строку s. Мне необходимо разбить строку на отдельные символы, преобразовать каждый символ в цифру исложить их между собой.
|