![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Существует ли функция, которая преобразовывает число в строку? Если нет, то подскажите, как это сделать?
|
|
#2
|
|||
|
|||
|
Удалено по причине невнимательности автора
Последний раз редактировалось ChinYan, 09.07.2013 в 21:36. |
|
#3
|
||||
|
||||
|
Существует ли гугл? Если да, то подскажите, почему вы его не используете?
Цитата:
|
|
#4
|
||||
|
||||
|
atoi/itoa
1232321323121 |
|
#5
|
|||
|
|||
|
А можно ли преобразовать каждый символ в отдельности, чтобы можно было сложить все цифры числа?
|
|
#6
|
||||
|
||||
|
Можно.
____ |
|
#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 - конец строки. Подсовывай после каждого числа.
|
|
#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 мусора" |
|
#11
|
|||
|
|||
|
Тут есть одна проблема. Допустим, возьмём число 123456789. Получить цифру 9 не будет никакой проблемы, а попробуй найти цифру 8.
|
|
#12
|
||||
|
||||
|
-1, или на какую тебе там надо позицию.
Если честно, я нихрена не понял, число 123456789 строкой задано или как? |
|
#13
|
|||
|
|||
|
В условии сказано, что натуральное число. Здесь можно инициализировать строкой. Учитывая функции atoi и itoa, становится без разницы.
|
|
#14
|
||||
|
||||
|
Короче чётко сформулируйте, что вам надо.
|
|
#15
|
|||
|
|||
|
Я ввёл N как натуральное число. Потом преобразовал в строку s. Мне необходимо разбить строку на отдельные символы, преобразовать каждый символ в цифру исложить их между собой.
|