Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
#1

Обратный порядок цифр в числе - C++

16.09.2011, 22:52. Просмотров 2571. Ответов 11
Метки нет (Все метки)

После ввода числа (in) не выводится выходное число (out).

Код:
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
#include <iostream>
#define STEP 10
 
using namespace std;
 
int main() {
int in;
 
do cin >> in;
while (in <= 0);
    
int out = 0;
int temp = in;
    
do {
out *= STEP;
out += temp % STEP;
temp /= STEP;
} while (in != 0);
    
cout << '\n' << out << endl;
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2011, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обратный порядок цифр в числе (C++):

Поменять порядок следования цифр в числе на обратный - C++
Данное натуральное число n. Поменять порядок следования цифр в том числе на обратный или сообщить, что это невозможно в силу переполнения

Дано целое число K. Поменять порядок цифр в числе на обратный. - C++
Дано целое число K. Поменять порядок цифр в числе на обратный.

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

Поменять порядок цифр на обратный - C++
Дано целое число X. Поменять порядок цифр числа на обратный. в c++ не бум бум Х__х

Поменять порядок цифр числа n на обратный.Си - C++
Вести число n.Поменять порядок цифр числа n на обратный.То есть число 12345 перевести в 54321. Таких прог море, но мне нужно именно на Си....

Поменять порядок цифр заданного числа на обратный - C++
I. Дано натуральное число n. Поменять порядок цифр числа n на обратный. Проанализировать постановку задачи. Обосновать используемые...

11
iama
1251 / 976 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.09.2011, 22:59 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#define base 10
 
using namespace std;
 
int main() 
{
  int in, out = 0;
 
  cin >> in;
        
  while (in)
  {
    out = out * base + in % base;
    in /= base;
  }
        
  cout << out << endl;
 
  return 0;
}
0
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
16.09.2011, 23:01  [ТС] #3
iama, благодарю конечно, но какова ошибка именно в моем коде?
0
iama
1251 / 976 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.09.2011, 23:03 #4
Sahon, попробуйте построчно прокомментировать код, сами все увидите, я просто там вообще никакой логики не вижу.
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.09.2011, 19:03 #5
Цитата Сообщение от Sahon Посмотреть сообщение
Oбратный порядок цифр в числе
После ввода числа (in) не выводится выходное число (out).
Вот код и результат работы
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
28
29
30
31
32
33
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
int main()
{
    char str[1024];//int не содержит 1024 разряда, так что можно и меньше
    int i,num,buf;
    do
    {
        std::cout<<"Enter num : ";
        std::cin>>num;buf = num;
        std::cout<<"\tVariant #1 use dividing\r\n";
        i = 0;
        while(0 < num)
        {
            str[i] = '0' + (num % 10);
            num /= 10;
            i++;
        }
        str[i] = '\0';
        std::cout<<str<<"\r\n";
        std::cout<<"\tVariant #2 use direct string reversing\r\n";
        sprintf(str,"%d",buf);
        std::cout<<strrev(str)<<"\r\n";
        std::cout<<"Press Y - new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
В программе использую два алгоритма - поразрядный разбор числа с записью в строку и её выводом, перевод числа в строку и вывод её наоборот (мне этот вариант более по душе)
0
Миниатюры
Обратный порядок цифр в числе  
iama
1251 / 976 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
17.09.2011, 19:11 #6
-=ЮрА=-, коль на плюсах пишете, вместо сишной strrev использовали бы reverse из algorithm, а то смешивание стилей, нехорошо.
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.09.2011, 19:29 #7
Цитата Сообщение от iama Посмотреть сообщение
вместо сишной strrev использовали бы reverse из algorithm, а то смешивание стилей, нехорошо.
- Спасибо за замечание, но Я больше хотел показать два способа: разбор по разрядам и поврот строки, а векторами мало пользуюсь поэтому и заюзал strrev
0
iama
1251 / 976 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
17.09.2011, 19:32 #8
-=ЮрА=-, да там и векторы-то не нужны, функции из algorithm работают и с обычными массивами.
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.09.2011, 20:18 #9
Цитата Сообщение от iama Посмотреть сообщение
-=ЮрА=-, да там и векторы-то не нужны, функции из algorithm работают и с обычными массивами.
- да точно я забыл об STL
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
28
29
30
31
32
33
34
#include <iostream>
#include <algorithm>
#include <cstring>
#include <conio.h>
 
using namespace std;
 
int main()
{
    char str[1024];//int не содержит 1024 разряда, так что можно и меньше
    int i,num,buf;
    do
    {
        std::cout<<"Enter num : ";
        std::cin>>num;buf = num;
        std::cout<<"\tVariant #1 use dividing\r\n";
        i = 0;
        while(0 < num)
        {
            str[i] = '0' + (num % 10);
            num /= 10;
            i++;
        }
        str[i] = '\0';
        std::cout<<str<<"\r\n";
        std::cout<<"\tVariant #2 use direct string reversing\r\n";
        sprintf(str,"%d",buf);
        reverse(str,str + strlen(str));
        std::cout<<str<<"\r\n";
        std::cout<<"Press Y - new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Sahon, результат работы тотже

PS:Всё же мне кажеться strrev проще конструкции
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
reverse(str,str + strlen(str));
1
iama
1251 / 976 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
17.09.2011, 21:15 #10
-=ЮрА=-, зато более сиплюсплюсово стало
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.09.2011, 21:19 #11
Цитата Сообщение от iama Посмотреть сообщение
-=ЮрА=-, зато более сиплюсплюсово стало
и переносимее, в никсах нету strrev
1
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.09.2011, 21:23 #12
strrev в стандарте нет, она только на мелкомягких компиляторах есть

Добавлено через 43 секунды
Опаздал.
0
17.09.2011, 21:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2011, 21:23
Привет! Вот еще темы с ответами:

Поменять порядок следования десятичных цифр числа на обратный - C++
Описать процедуру InvDigits(K), меняющую порядок следования цифр целого положительного числа K на обратный (K — параметр целого типа,...

Изменить порядок следования цифр на обратный между 1-й и последней цифрой - C++
Здравствуйте! На начале обучения ломаю голову как решить следующие задачи с маленькими знаниями в С++ : 2. Изменить порядок следования...

Поменять порядок цифр на обратный и сравнить полученное число с исходным - C++
Привет всем!!!! 1.задание Дано натуральное число n. Определить, кратна ли числу k сумма первой и последней цифры этого числа. ...

Дано натуральное число n<100. Поменять порядок цифр числа на обратный. - C++
Дано натуральное число n&lt;100. Поменять порядок цифр числа на обратный. Буду очень благодарен)


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

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

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