Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1025 / 657 / 109
Регистрация: 12.10.2013
Сообщений: 4,275
1

Из числа int прочитать раздельно сотни, десятки, единицы

08.09.2019, 21:57. Просмотров 3100. Ответов 21
Метки нет (Все метки)

int number=315
int n1=0 //сохранить единицы
int n2=0 //сохранить десятки
int n3=0 //сохранить сотни

как из number прочитать сотни десятки единицы n3=3 n2=1 n1=5

n3=целые (number/100)
number=number-n2
n2=целые (number/10)
number=number-n1
n1=целые (number/1)

Вроде так? Проще возможно?
n3=trunc(number/100)
number=number-n3
n2=trunc(number/10)
number=number-n2
n1=trunc(number/1)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2019, 21:57
Ответы с готовыми решениями:

Разделение двузначного числа на десятки и единицы
доброго времени суток! Помогите справиться с проблемой которая возникла на моем пути. не заню как...

как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c;
как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы...

Как выделить из числа единицы, десятки, сотни?
как из числа , на пример 261 выделить сотни "2" десятки "6" и единицы "1" ? Гуглил, не нашел.

Определить порядок старшей цифры числа (единицы, десятки, сотни т.д.)
Задано натуральное число, диапазон значений - слово. Определить порядок старшей цифры числа...

21
4219 / 2887 / 1780
Регистрация: 18.12.2017
Сообщений: 9,022
08.09.2019, 22:07 2
Лучший ответ Сообщение было отмечено Excalibur921 как решение

Решение

если число трёхзначное
n1=n%10;
n2=n/10%10;
n3=n/100;
1
1025 / 657 / 109
Регистрация: 12.10.2013
Сообщений: 4,275
08.09.2019, 22:30  [ТС] 3
Пашет. Немного подправил. А как метод называется?
А если число 20 значное?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
number++;
printf("---------------------------- %.f\n",0);
printf( "%d\n",number); 
/*
n1=number%10;
n2=number/10%10;
n3=number/100;
*/
n3=number%10;
n2=number/10%10;
n1=number/100;
printf( "sotn %d\n",n1); 
printf( "des %d\n",n2); 
printf( "ed %d\n",n3); 
printf("---------------------------- %.f\n",0);
Название: ScreenShot00057.jpg
Просмотров: 77

Размер: 5.1 Кб
0
4219 / 2887 / 1780
Регистрация: 18.12.2017
Сообщений: 9,022
08.09.2019, 23:08 4
Цитата Сообщение от Excalibur921 Посмотреть сообщение
А как метод называется?
пока никак. можете придумать название. обычные операции деления и взятия остатка от деления.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
А если число 20 значное?
любое число можно разбить на цифры. куда их нужно выводить (например просто распечатать или занести в массив) ?
0
1025 / 657 / 109
Регистрация: 12.10.2013
Сообщений: 4,275
08.09.2019, 23:18  [ТС] 5
Аналогичная задача только число из пусть 10 знаков. Пригодиться.
0
4219 / 2887 / 1780
Регистрация: 18.12.2017
Сообщений: 9,022
09.09.2019, 00:29 6
Цитата Сообщение от Excalibur921 Посмотреть сообщение
число из пусть 10 знаков
да сколько угодно знаков. Вы на вопрос можете ответить:
Цитата Сообщение от Yetty Посмотреть сообщение
куда их (цифры) нужно выводить (например просто распечатать или занести в массив) ?
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
09.09.2019, 01:04 7
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Аналогичная задача только число из пусть 10 знаков.
Знание С и примитивнейшей алгоритмики на нуле?
Заводите строковый буфер, гоните sprintf'ом в него число, strlen'ом определяете длину полученной строки, затем в цикле от последнего символа до начала строки вычитаете из каждого символа '0' и печатаете/сохраняете получившийся символ-результат (его при необходимости можно кастануть к целочисленному типу) так, как нужно.
0
1025 / 657 / 109
Регистрация: 12.10.2013
Сообщений: 4,275
09.09.2019, 06:50  [ТС] 8
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Знание С и примитивнейшей алгоритмики на нуле?
Это раздел для новичков С++ а не место для троллинга. Тут нужны работающие коды а не примерные идеи алгоритмов на профессиональном сленге для экспертов.
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
09.09.2019, 10:03 9
Цитата Сообщение от Excalibur921 Посмотреть сообщение
С++
C++ для решения этой задачи не нужен. На 100500% хватает и унаследованных плюсами сишных возможностей/функций.
Но если для 2+2 и аналогичного примитива хотите городить классы - вперёд, мне будет весело смотреть на забивание гвоздей микроскопом.

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Тут нужны работающие коды
Для сферического коня в вакууме?
Вас же 2 раза спросили - куда/как выводить результат.
Но если не можете понять, что символьное (строковое) представление числа УЖЕ решает все или почти все вопросы (можно символы начиная с последнего брать и печатать) - наверное, надо вернуться к букварям? Или, например, к вдумчивому взгляду на таблицу ascii - чтобы понять мои слова про вычитание '0' (это надо будет для превращения символа в целочисленное значение 0-9, если нужны именно целочисленные - а не в виде готовых символов - результаты).
0
2560 / 1536 / 334
Регистрация: 09.09.2017
Сообщений: 6,086
09.09.2019, 10:09 10
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Тут нужны работающие коды а не примерные идеи алгоритмов
Наоборот, именно тут нужны идеи, а не готовые решения. Доведением идеи до решения и должны заниматься новички, иначе как они перестанут быть новичками?
Цитата Сообщение от Excalibur921 Посмотреть сообщение
на профессиональном сленге для экспертов.
Терминология из любого учебника по основам языка - ни разу не "сленг для экспертов".
При общении на форуме мы оптимистично предполагаем, что общаемся с новичком, а не халявщиком. Что новичок на то и новичок, чтобы учиться.
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Заводите строковый буфер, гоните sprintf'ом в него число, strlen'ом определяете длину полученной строки
ужас какой. То, что по эффективности это намного хуже делений-остатков очевидно. А преимущества у вашего метода есть?
0
1025 / 657 / 109
Регистрация: 12.10.2013
Сообщений: 4,275
09.09.2019, 10:18  [ТС] 11
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Наоборот, именно тут нужны идеи, а не готовые решения.

Наоборот.
Раздел С++ подразумевает именно коды, для алгоритмов есть раздел Алгоритмы. Поэтому пост Yetty, из 3 строчек кода в 100500 раз практически полезней пустых разговоров. Поэтому он получает Спасибо и Лучший Ответ. Дальше начнутся копания что за проценты что это как…при желании.
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
09.09.2019, 10:24 12
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То, что по эффективности это намного хуже делений-остатков очевидно.
А я никогда не выдаю макс.эффективный рецепт.
Например, в проге чисто под Винды sprintf не нужен (т.е. функцию не нужно будет прилинковывать к проге, если она в других местах проги не используется - и размер екзешника не распухнет) - можно встроенным в винду wsprintf'ом обойтись.
В общем, халявщикам/нубам - околоплинтусный уровень, он и для них откровением будет.
0
2560 / 1536 / 334
Регистрация: 09.09.2017
Сообщений: 6,086
09.09.2019, 12:32 13
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Раздел С++ подразумевает именно коды, для алгоритмов есть раздел Алгоритмы. Поэтому пост Yetty, из 3 строчек кода в 100500 раз практически полезней пустых разговоров.
Пустых - полезнее. Подсказок - вреднее.
Раздел "С++" это не "фриланс" и не "халява", это помощь.
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
А я никогда не выдаю макс.эффективный рецепт.
Здесь слушая ТСа это оправдано: сойдет и индусня. Но хотя бы адекватным вопрошающим уточняйте, что метод неоптимален.
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
в проге чисто под Винды sprintf не нужен <...> - можно встроенным в винду wsprintf'ом обойтись
А можно поподробнее?
Вы хотите сказать, что стандартный sprintf не идет с stdlib или какой-то другой стандартной библиотекой, что его нужно из-под палки линковать? А wsprintf при этом входит в стандартные?
Как-то это странно...
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
10.09.2019, 15:37 14
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Вы хотите сказать, что стандартный sprintf не идет с stdlib или какой-то другой стандартной библиотекой, что его нужно из-под палки линковать?
Нет, я хочу сказать, что нормальный=умный линкер не цепляет к екзешнику абсолютно все функции, присутствующие в либ-файле/файлах. А цепляет только реально используемые (т.е. не прицепит функций, к которым в проге не будет обращения).
А у части стандартных сишных библиотечных функций есть аналоги (пусть и под другими именами, и, возможно, с другим набором/порядком аргументов) в ОС. И при отсутствии задачи обеспечения максимальной портируемости кода - можно вместо вызовов некоторых стандартных сишных библиотечных функций в коде прописывать вызовы их аналогов из потрохов ОС. Правда, взамен исключения из екзешника тушек функций, которым в ОС нашлась замена - в екзешнике появятся записи в таблице импорта.
0
2560 / 1536 / 334
Регистрация: 09.09.2017
Сообщений: 6,086
10.09.2019, 16:57 15
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Нет, я хочу сказать, что нормальный=умный линкер не цепляет к екзешнику абсолютно все функции, присутствующие в либ-файле/файлах
Но ведь libc - динамическая библиотека, ее не линковать надо, а обращаться в рантайме.
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
И при отсутствии задачи обеспечения максимальной портируемости кода - можно вместо вызовов некоторых стандартных сишных библиотечных функций в коде прописывать вызовы их аналогов из потрохов ОС.
А оно надо? Я так понял, вы предлагаете незначительно снизить размер бинарника путем выкидывания части функций.
Сейчас попробовал собрать свою программку с флагами -static-libgcc -static-libstdc++ и без них. Если не ошибаюсь, это статическая линковка libc в бинарник. Размеры получились 612К против 700К. ИМХО - не тот размер, за который стоит бороться.
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
10.09.2019, 17:54 16
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Но ведь libc - динамическая библиотека, ее не линковать надо, а обращаться в рантайме.
А потом и в разделе ВижуалС++, и в разделе С++Билдера в числе пришитых сверху тем - темы про то, как заставить прогу работать на другом компутере
Ибо дефолтно стоящая галка динамической линковки и лежащая ХЗ где специфическая для среды разработки динамическая библиотека, о которой начинающий кодер ничего не знает - это источник регулярных проблем у многих начинающих.
В никсах, может, такой проблемы и нет (если стандартная библиотека будет всегда на любом компе) - но я не линуксоид.


Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я так понял, вы предлагаете незначительно снизить размер бинарника путем выкидывания части функций
Да не, это во многом трёп чисто ради развлечения, ну и влияние памяти/привычек конца прошлого века (с деревянными игрушками модемами и отсутствием дешёвого безлимитного исходящего трафика у веб-сайтов - когда любая раздача тяжеловесных прог превращалась в гемор как для выкладывающего прогу на свой сайт, так и для кучи желающих скачать, поэтому многие тогда всё-таки старались ужимать екзешники/дистрибутивы).
Т.е. я совершенно не настаиваю - только лишь указываю на возможность, а дальше у каждого свобода воли/действий.
0
2560 / 1536 / 334
Регистрация: 09.09.2017
Сообщений: 6,086
11.09.2019, 09:36 17
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
А потом и в разделе ВижуалС++, и в разделе С++Билдера в числе пришитых сверху тем - темы про то, как заставить прогу работать на другом компутере
Не смешивайте стандартную библиотеку языка, на которую полагаются все компоненты системы, со стандартной библиотекой IDE, на которую полагается только она. Скажем, для CBulder'а нужно тащить только его, борландовские библиотеки.
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
11.09.2019, 21:48 18
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Не смешивайте стандартную библиотеку языка, на которую полагаются все компоненты системы
ОК, покажите мне в Винде стандартную библиотеку языка С.
Ну и для С++ аналогично - dll'ка с cin/cout, STL и прочей плюсовой шнягой где лежит в Винде?
0
2560 / 1536 / 334
Регистрация: 09.09.2017
Сообщений: 6,086
12.09.2019, 10:32 19
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
где лежит в Винде?
Откуда ж мне знать?
У себя в линуксе находил. Да и по логике: динамические библиотеки для того и придумали, чтобы не таскать стандартный функционал с каждым экземпляром программы
0
923 / 865 / 129
Регистрация: 19.02.2010
Сообщений: 2,748
12.09.2019, 19:09 20
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Да и по логике: динамические библиотеки для того и придумали, чтобы не таскать стандартный функционал с каждым экземпляром программы
Ой, только не отнимайте у разработчиков компиляторов/IDE возможностей померяться пиписьками на тестах, достаточно сильно опирающихся, например, на стандартные функции работы с памятью/строками (malloc/free-new/delete, или всякие там memset/memcpy, strlen и т.д.). Т.е. на идущие в поставках компиляторов библиотечные реализации таких функций - а не на что-то общее для всех.

Плюс если при билде проги стоит галка статической линковки - то IDE может линкеру указывать библиотеку, предварительно откомпилированную под ВЫБРАННЫЙ процессор среди набора процессоров некоторой платформы. Т.е. если написанный кодером код будет (по высказанному явно желанию кодера) компилироваться под целевой процессор - то и библиотеку можно статически пришить именно под него.
При динамической же линковке - прога ВСЕГДА вынуждена опираться на dll, собранную под НАИБОЛЕЕ СТАРЫЙ из поддерживаемых осью процессоров. Потери производительности на пустом месте, для ВСЕХ прог на С/С++.
Так что нафиг стандартные для языков либы пихать в дистрибутив осей, идущих не в виде исходников. Чтобы была как возможность скомпилировать статически прогу под современный проц, так и притащить с прогой динамические библиотеки из более свежей, чем ось, версии IDE/компилятора.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2019, 19:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Циклы и условия: определить порядок старший цифры числа (единицы, десятки, сотни и т.д.)
Помогите пожалуйста, задали задание, а ассемблера не знаю, только С++ и С# Задано натуральное...

Разложение числе на сотни десятки и единицы
Добрый день. Подскажите пожалуйста как разложить число 359 на отедельные числа 3, 5 и 9.

Вывести из двухзначного числа единицы и десятки
нужно вывести из двухназного числа единицы и десятки Десятки работают а вот единицы не работают...

Дано трехзначное число. Составить число, в котором десятки и сотни поменяются местами
Дано трехзначное число. Составить число, в котором десятки и сотни поменяются местами. Входные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.