Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > C/C++ > C/C++
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.07.2013, 17:54
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию Преобразование числа в строку

Существует ли функция, которая преобразовывает число в строку? Если нет, то подскажите, как это сделать?
Ответить с цитированием
  #2  
Старый 07.07.2013, 18:00
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Удалено по причине невнимательности автора

Последний раз редактировалось ChinYan, 09.07.2013 в 21:36.
Ответить с цитированием
  #3  
Старый 07.07.2013, 18:02
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Существует ли гугл? Если да, то подскажите, почему вы его не используете?
Цитата:
Сообщение от ChinYan
IntToStr
и
StrToInt
Это ветка C++.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 07.07.2013, 18:19
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

atoi/itoa
1232321323121
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 09.07.2013, 18:40
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

А можно ли преобразовать каждый символ в отдельности, чтобы можно было сложить все цифры числа?
Ответить с цитированием
  #6  
Старый 09.07.2013, 19:58
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Можно.
____
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 09.07.2013, 20:05
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Что-то у меня не получается. Проблема в такой программе.
Код:
#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  
Старый 09.07.2013, 20:49
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

#0 - конец строки. Подсовывай после каждого числа.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 09.07.2013, 20:56
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Что-то я не понял.
Ответить с цитированием
  #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.
Ответить с цитированием
  #11  
Старый 10.07.2013, 13:51
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Тут есть одна проблема. Допустим, возьмём число 123456789. Получить цифру 9 не будет никакой проблемы, а попробуй найти цифру 8.
Ответить с цитированием
  #12  
Старый 10.07.2013, 16:30
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

-1, или на какую тебе там надо позицию.
Если честно, я нихрена не понял, число 123456789 строкой задано или как?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #13  
Старый 10.07.2013, 17:27
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

В условии сказано, что натуральное число. Здесь можно инициализировать строкой. Учитывая функции atoi и itoa, становится без разницы.
Ответить с цитированием
  #14  
Старый 10.07.2013, 18:13
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Короче чётко сформулируйте, что вам надо.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #15  
Старый 10.07.2013, 18:43
MahovIV MahovIV вне форума
Новичок
 
Регистрация: 30.12.2012
Сообщения: 77
Репутация: 10
По умолчанию

Я ввёл N как натуральное число. Потом преобразовал в строку s. Мне необходимо разбить строку на отдельные символы, преобразовать каждый символ в цифру исложить их между собой.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter