Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 09:30   #1
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию подскажите плиз

помогите пожалуйста, я токо начал самостоятельно изучать с++ и у меня такой вопрос. как в С++ можно разбить число на цифры. к примеру число 123 разбить на 1,2,3 чтоб потом посчитать их сумму. заранее благодарю
Alex26RusLink вне форума Ответить с цитированием
Старый 12.07.2009, 09:36   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Также как и в Паскале div и mod, только / и % соответственно.
Или более изящный способ:
Код:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

int main()
{
	char *str;
	int i = 65536;
	sprintf(str,"%d",i);
	for(i=0; i<strlen(str); i++)
	{
		printf("%c ",str[i]);
	}
	system("pause");
}
Правда все это на Си.

Последний раз редактировалось Kostia; 12.07.2009 в 09:54.
Kostia вне форума Ответить с цитированием
Старый 12.07.2009, 10:49   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Kostia Посмотреть сообщение
Или более изящный способ:
Это называется удалять гланды через задний проход.
Сначала sprintf разберет число на циферки как раз через операции / и %, потом переведет их в символы, потом эти символы снова в числа..

Какой-то идиот придумал "изящный" способ, теперь он кочует из примера в пример. На месте преподов двойки ставил бы. Типично индийский подход к программированию.
Black Fregat вне форума Ответить с цитированием
Старый 12.07.2009, 11:56   #4
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию

скажите, а sprintf и printf также используются в С++ или им есть какая либо замена? и еще что значит %d и %c если ни d и не с в программе никак не объявлены?
Да и ещё, представленная программа число переводит в символы, а не в цифры. А если необходимо сложить цифры то она складывает их коды. Какой функцией в С++ можно можно перевести код числа в число?

Последний раз редактировалось Alex26RusLink; 12.07.2009 в 12:09.
Alex26RusLink вне форума Ответить с цитированием
Старый 12.07.2009, 12:16   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
что значит %d и %c
Это значит: %d - десятичное число
%c - один символ.
Например:
Код:
int main()
{
  char chr = 'h';
  int id = 1;
  printf("ch=%c, id=%d", chr, id);
  return 0;
}
Результат
Код:
ch=h, id=1
Смотрите справку по printf, scanf.
psycho-coder вне форума Ответить с цитированием
Старый 12.07.2009, 17:34   #6
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию

Вот ещё такой вопрос. Как по коду числа, в С++, можно возвратить само число и, наоборот, как по числу можно получить его код. Чтоб вы меня правильно поняли в Паскале за это отвечают chr и ord. И есть ли в С++ такое вообще?
Alex26RusLink вне форума Ответить с цитированием
Старый 12.07.2009, 18:13   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от Alex26RusLink Посмотреть сообщение
как в С++ можно разбить число на цифры.
Код:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
void main ()

{
	int n;
	float *mas;
	cout<<"N : ";
	cin>>n;
	
	float c=0,k=1;
	float s=0;
	while(k>=1)
	{
		k=n/pow(10,(float)(c+1));;
		c++;		
    }
	mas=new float[c];
	for(int i=0;i<c;i++)
	{
	  mas[i]=(n%(int)(pow((float)10,(i+1))))/pow((float)10,i); // в массиве цифры числа
	  s+=(n%(int)(pow((float)10,(i+1))))/pow((float)10,i); // сумма цифр
           }	
	cout<<"\nCifr - "<<c<<"\n"<<"summa - "<<s<<"\n";
	_getch();
}
counter вне форума Ответить с цитированием
Старый 12.07.2009, 18:17   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от Alex26RusLink Посмотреть сообщение
Как по коду числа, в С++, можно возвратить само число и, наоборот, как по числу можно получить его код. Чтоб вы меня правильно поняли в Паскале за это отвечают chr и ord. И есть ли в С++ такое вообще?
Во первых: чисел всего 10 (их коды 48-57).
Во вторых: аналоги Chr и Ord нет.
Но можно так
Код:
int i;
char *s = "hello world!";
char o;
i = (int)s[2]; // в i будет код "l"
o = (char)i; // в o будет символ с кодом i
psycho-coder вне форума Ответить с цитированием
Старый 12.07.2009, 19:15   #9
Alex26RusLink
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 34
По умолчанию

всё спасибо большое я понял
Alex26RusLink вне форума Ответить с цитированием
Старый 21.07.2009, 18:38   #10
ASME0010
Новичок
Джуниор
 
Регистрация: 21.07.2009
Сообщений: 3
По умолчанию

еще есть вармант методом вертикальной и горизонтальной табуляции
ASME0010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите плиз Panik666 Общие вопросы Delphi 1 22.04.2009 23:19
подскажите плиз! Lestrini Общие вопросы Delphi 6 03.10.2008 17:23
Как при запросе открыть таблицу Repair и добавить в неё новые данные, согласно этого листинга. TitAn БД в Delphi 2 11.06.2007 10:07