Как вывести последнюю цифру числа в c
Перейти к содержимому

Как вывести последнюю цифру числа в c

  • автор:

Как вывести последнюю цифру числа в c

Профиль
Группа: Участник
Сообщений: 94
Регистрация: 2.11.2007

Репутация: нет
Всего: нет

Определить последнюю цифру вещественного числа
например 23.333 не определяет поскольку выполняется бесконечный цикл. (
интересно почему (через отладчик показано что число записывается с дробной частью которое заканчиватся на период 9 )
каким же образом идти по цифрам, и почему такие чудеса?

Код
#include
using namespace std;

Дата 19.5.2008, 14:57 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250

можно и думаю легче перевести число в строку и с ней проводить нужные операции

Дата 19.5.2008, 15:11 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 94
Регистрация: 2.11.2007

Репутация: нет
Всего: нет

в массив то понятно. интересно как же такие числа складываются..

Дата 19.5.2008, 15:27 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250

Цитата(Podarochek @ 19.5.2008, 15:11 )
интересно как же такие числа складываются..

так нужно сложить числа или разобрать на составляющие??

Дата 19.5.2008, 15:41 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: нет
Всего: 3

Цитата(Podarochek @ 19.5.2008, 15:11)
в массив то понятно. интересно как же такие числа складываются..

Можно написать свою арифметику из которой можно выбирать отдельные цифры

Или тебе интересно как в памяти представляются числа с плавающей точкой?

иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче — ведь она может скрывать открытый люк (с) mes

Дата 19.5.2008, 15:42 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 94
Регистрация: 2.11.2007

Репутация: нет
Всего: нет

такая проблема возникла при поиске последней цифры. т.е. это «природа» приказала, что ничего не поделаешь с вещ. числом, нужно смирится и применять массивы.

Дата 19.5.2008, 20:31 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.5.2008

Репутация: нет
Всего: нет

А что такое последняя цифра вещественного числа? Если дадите определение, то можно будет подумать.
А я из курса математики вынес информацию, что у вещественного числа последняя цифра не определена. Например число 1 имеет две записи:
1.0000.
0.9999.
И в каком из них искать последнюю цифру? Тем более, что ни там, ни там последней цифры нет.

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ 🙂
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе — для этого существует «Центр Помощи».
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »

[ Время генерации скрипта: 0.1299 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Программа на C++ для перестановки цифр числа в обратном порядке

В этой программе будем получать от пользователя число и переставлять цифры этого числа в обратном порядке.

  • Начнем программу с заголовочного файла.

#include непрерывный поток байтов данных ввода-вывода.

using namespace std; → используется для хранения имени переменной.

int main() → возвращает функцию типа данных.

int n, reverse = 0, rem;
cout cin >> n;
  • Объявим переменную в целочисленной форме ( n, reverse = 0, rem ), ведь вводить мы будем числа (в cout statement у нас задано enter a number («ввести число»)).
while (n > 0) rem = n % 10; 
reverse = reverse * 10 + rem;
n /= 10;
>

Логика кода

Шаг 1. Выделение последней цифры в числе

lastDigit = number % 10

Оператор модуля (%) возвращает остаток от деления. В этом случае мы делим число на 10 и возвращаем остаток. Рассмотрим число 1234. Разряд десятков (30) делится на 10 без остатка, разряд сотен (200) и разряд тысяч (1000) — тоже. Остаток от деления будет равен 4, а это разряд единиц, который на 10 не делится. Теперь у нас есть способ выделения последней цифры любого целого числа. Сохраняем это в переменной last digit.

Шаг 2. Добавление «last digit» к «reverse»

reverse = (reverse * 10) + lastDigit

Теперь начинаем составлять число в обратном порядке, добавляя last digit в конец reverse. Не забывайте, что обе эти переменные целочисленные, поэтому их нельзя просто конкатенировать. Умножаем reverse на 10, так что разряд единиц становится разрядом десятков, разряд десятков становится разрядом сотен и т. д. И у нас остается новый разряд единиц, куда мы добавляем последнюю цифру (в нашем примере это 4).

Мы успешно скопировали последнюю цифру числа и добавили ее в reverse.

Шаг 3. Удаление последней цифры из числа

number = number / 10

Обратите внимание, что число все еще 1234, хотя цифра 4 нами уже использована. Чтобы удалить эту последнюю цифру из числа, просто делим ее на 10. Она будет удалена, потому что здесь выполняется целочисленное деление, при котором результаты округляются до ближайшего целого числа (например, 244 / 10 = 24).

Шаг 4. Повторение этого процесса

while (number > 0)

Повторяем этот процесс, пока число не уменьшится до нуля и не завершится reverse.

cout return 0;

В выводе цифры числа будут переставлены в обратном порядке, потому что в cout statement у нас задано reverse number («переставить цифры числа в обратном порядке»).

endl → очищает буфер и продолжает отображение в новой строке.

return 0 → означает, что программа выполнена успешно (цифры числа переставлены в обратном порядке).

Исходный код

#include 
using namespace std;

int main() <
int n, reverse = 0, rem;
cout cin >> n;
while (n > 0) <
rem = n % 10;
reverse = reverse * 10 + rem;
n /= 10;
>
cout return 0;
>

Вывод

  • 8 полезных приемов программирования на C++
  • 4 совета по работе с потоками и мьютексами в C++
  • Распознаём 50 видов текста на C++ с Plywood

Как найти последнюю цифру возведения в степень ряда чисел?

Какой самый оптимальный способ найти последнюю цифру выражения x1 ^ (x2 ^ (x3 ^ (x4 ^ ( . ^xn)))) при условии, что значения x могут быть очень большими (больше шести цифр)?

В теории, нам достаточно знать только последнюю цифру x1 и две последние цифры внешней скобки, но какой алгоритм сведения остальных членов?

  • Вопрос задан более трёх лет назад
  • 953 просмотра

8 комментариев

Простой 8 комментариев

WizardNG

Я бы не стал зарываться глубоко в теорию, но посидел с ручкой и бумажкой.
Определяющей является последняя цифра первого числа.
1 всегда даст 1
5 -> 5
6 -> 6
4 -> 6 ->4
9 -> 1 -> 9
2- 4 — 8 — 6 -2
7 — 9 — 3 — 1 — 7
8 — 4 — 2 — 6 — 8

Следовательно, при 1,5,6 на конце остальные числа не важны.
При 4,9 — важно только четная или нечетная степень, а следовательно, четное или нет второе число.
С остальными сложнее, там надо поиграться с остатком от желания второго числа на 4, и, как следствие — со значением х3, возможно х4.
Простите, дальше развивать идею не буду, попробуйте сами.

Snelsi @Snelsi Автор вопроса

YURIY KOZLOV, Забываете, что степень ноль может дать единицу. А так код нахождения последней цифры от известной степени есть, вопрос заключался немного в другом.

WizardNG

Snelsi, про нулевую степень действительно забыл, сорри.
А в чем тогда заключался вопрос? Что я не так понял?

Snelsi @Snelsi Автор вопроса

YURIY KOZLOV, Числа xn могуть быть больше шести цифр, что делает невозможным простое возведение в степень. Вопрос был в самом оптимальном алгоритме упрощения этих значений для работы только со значущей частью, как например, урезание всей первой скобки до двух последних цифр (ведь всё что выше обнулится остачей на четыре), только в масштабе всех степеней.

WizardNG

Snelsi, прошу прощения, но кажется я нигде не предлагал ПРОСТО возводить в степень. Я предлагал посидеть с карандашом и проанализировать задачу, выявить закономерности , которые помогут максимально просто получить ответ на поставленный вопрос.

WizardNG

Snelsi, раз получилось непонятно, поясню свою мысль.
При х2=0 — ответ единица.
При х3=0 — ответ совпадает с последней цифрой х1.
Если ноль встречается выше, это роли не не играет.
Если эти два условия не выполняются :
Последняя цифра
х1= 0, 1, 5, 6 -> ответ совпадает с этой последней цифрой.
При последней цифре
х1 = 4 или 9 — значение имеет только четность х2, при нечетном — ответ совпадает с последней цифрой. При четном — 6 и 1, соответственно.
Для цифр 2,3,7,8 — проверять нужно на самом деле только числа х2 и х3, числа выше (если я нигде не ошибся) значения не имеют. И возводить в степень вообще нет необходимости.

Snelsi @Snelsi Автор вопроса

YURIY KOZLOV, Действительно! Вы были правы, извините. Повозился с алгоритмом, всё работает. Просто не знал, что цифры после x3 ничего не значат (кроме нулей). Скину код ниже, тему можно закрывать.

5175. Последняя цифра

Вход. Одно натуральное число n (1 ≤ n ≤ 10 9 ).

Выход. Выведите последнюю цифру числа n.

Пример входа 1

Пример выхода 1

Пример входа 2

Пример выхода 2

РЕШЕНИЕ

элементарная задача

Анализ алгоритма

Последняя цифра натурального числа n равна n % 10.

Реализация алгоритма

Читаем натуральное число n и выводим его последнюю цифру n % 10.

printf( «%d\n» ,n % 10);

Java Реализация

import java.util.*;

public class Main

public static void main(String[] args )

Scanner con = new Scanner(System. in );

int n = con .nextInt();

int res = n % 10;

System. out .print( res );

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *