Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.85
smisha
Сообщений: n/a
#1

Перевернуть число - C++

20.08.2011, 23:12. Просмотров 7585. Ответов 7
Метки нет (Все метки)

Задача:
Перевернуть введенное пользователем число и вывести на екран.
Сначала я подсчитал количество цифр в числе:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <math.h>
using namespace std;
void main()
{
        int number, i;
        float ostatok;
        cout<<"Vvedite chyslo\n";
        cin>>number;
        ostatok=number;
        for (i=0;ostatok>=1;i++)
        {
        ostatok/=10;
        }
        // i - содержит количество цифр в числе
Здесь все правильно.
Алгоритм следующего блока такой:
- в цикле поделить число на 10 в степени от 0 до i (до количества цифр), округлить результат до меньшего целого (функция floor) - так мы должны получить переменную chast;
- в цикле переменную chast целочисельно (%) делим на 10, і остаток от этого деления умножаем на 10 в степене от і-1 до 1 .

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int perevernut=0;
int chast;
float n=0;
 
 for (;i==1;--i)
        {
         chast=floor(number/pow((float)10,n));
        perevernut+=(chast%10)*pow((float)10,(float)i-1);
        n++;
        }
        
        cout<<perevernut;
        cout<<"\n";
        system("pause");
}
Я вижу, что результат функции pow((float)10,n)) - полная белиберда. Но не могу понять почему? Может быть проблема в самрм алгоритме?

Помогите разобраться с этим.
Спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2011, 23:12     Перевернуть число
Посмотрите здесь:

Перевернуть число (перевернутое число выводится на экран) - C++
Помогите написать программу с комментариями (Рекурсия) Перевернуть число (перевернутое число выводится на экран)

Перевернуть число - C++
Задача Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое выйдет после...

Перевернуть число - C++
Здравствуйте, Ув. Форумчане Очень интересен алгоритм построения этой программы Буду особо благодарен Смею заметить что в...

Перевернуть число - C++
Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке по сравнению с введенным числом.

Перевернуть число - C++
Пользователь вводит с клавиатуры число, необходимо перевернуть его (число) и вывести на экран. Примечание: Например, пользователь ввел...

Перевернуть четырехзначное число - C++
переворачивающую 4-хзначное число, и чтобы была проверка условия если число не 4-х значное то программа выключается, так необходимо делать...

перевернуть двоичное число - C++
Нужно ввести число от 1 до 32 бит, указать количество бит, а затем перевернуть требуемое количество бит и вывести результат т.е. ввели...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
20.08.2011, 23:21     Перевернуть число #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Можно проще. Функция возвращает перевернутое число:
C++
1
2
3
4
5
6
7
8
9
10
long Perevert(long x)
{
   long y = 0;
   while(x)
   {
       y = y*10 + x%10;
       x /= 10;
   }
   return y;
}
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
20.08.2011, 23:37     Перевернуть число #3
Цитата Сообщение от Olga_ Посмотреть сообщение
Можно проще. Функция возвращает перевернутое число:
Или совсем проще:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
 
int RotateNumber(int number) {
   std::ostringstream output_stream;
   int result;
   
   output_stream << number;
   std::string str_number = output_stream.str();
   
   std::reverse(str_number.begin(),str_number.end());
   
   std::istringstream input_stream(str_number, std::istringstream::in);
   input_stream >> result;
   
   return result;
}
 
int main() {
   int number = 99019023;
   
   std::cout << RotateNumber(number) << std::endl;
 
   return 0;
}
germeticus
27 / 27 / 1
Регистрация: 21.06.2011
Сообщений: 82
20.08.2011, 23:42     Перевернуть число #4
Ну и наверное один из возможных коротких кодов:

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
int main()
{
       std::string cBuf;
       std::cin >> cBuf;
       int k = cBuf.length();
       while(k-- > 0)  std::cout << cBuf[k];
       std::cout << std :: endl;
       system("pause");
}
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.08.2011, 23:45     Перевернуть число #5
germeticus, Ну в таком случае проще так.

C++
1
2
3
std::string str;
std::cin >> str;
std::cout << std::string(str.rbegin(), str.rend()) << '\n';
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.08.2011, 09:01     Перевернуть число #6
Или так
C
1
2
3
4
5
6
#include <stdio.h>
int reverse_print(int x){ return x ? printf("%d ", x % 10), reverse_print(x / 10) + 1 : 0; }
int main(){
    int n;
    while ( scanf("%d", &n) && printf("\ndigits - %d\n", reverse_print(n) ) );
}
Правда если вбить нуль, то будет считать, что введено 0 цифр...
smisha
Сообщений: n/a
21.08.2011, 13:28     Перевернуть число #7
Спасибо всем за советы!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2011, 17:31     Перевернуть число
Еще ссылки по теме:

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

Перевернуть шестнадцатеричное число oxА28Е - C++
Помогите решить задачу: дано шестнадцатеричное число oxА28Е надо перевернуть его так, чтобы последний бит стал первым и так далее, и...

Перевернуть введенное пользователем число - C++
Ввести с клавиатуры число и перевернуть его «физически» (например, число 2356 станет числом 6532). Диалог с пользователем реализовать при...

Перевернуть каждое число в строке - C++
пытался написать программу которая каждые 4 цифры в вводимой строке переворачивает, то есть выражение 1234 5678 было бы 4321 8765 вот...

необходимо перевернуть его (число) и вывести на экран. - C++
1. Пользователь вводит с клавиатуры число - программа должна показать сколько в данном числе цифр. Число вводится целиком в одну...


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

Или воспользуйтесь поиском по форуму:
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 17:31     Перевернуть число #8
А если требуется перевернуть число и результат записать в дробную часть, например из 12345 получить 0,54321, то можно так:
C++
1
2
3
4
double Inverse(long x)
{
   return x ? Inverse((double)x/10)/10 + (double)(x%10)/10 : 0;
}
Yandex
Объявления
21.08.2011, 17:31     Перевернуть число
Ответ Создать тему
Опции темы

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