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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
16.09.2011, 22:52     Обратный порядок цифр в числе #1
После ввода числа (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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 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;
}
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
16.09.2011, 23:01  [ТС]     Обратный порядок цифр в числе #3
iama, благодарю конечно, но какова ошибка именно в моем коде?
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
16.09.2011, 23:03     Обратный порядок цифр в числе #4
Sahon, попробуйте построчно прокомментировать код, сами все увидите, я просто там вообще никакой логики не вижу.
-=ЮрА=-
Заблокирован
Автор 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;
}
В программе использую два алгоритма - поразрядный разбор числа с записью в строку и её выводом, перевод числа в строку и вывод её наоборот (мне этот вариант более по душе)
Миниатюры
Обратный порядок цифр в числе  
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
17.09.2011, 19:11     Обратный порядок цифр в числе #6
-=ЮрА=-, коль на плюсах пишете, вместо сишной strrev использовали бы reverse из algorithm, а то смешивание стилей, нехорошо.
-=ЮрА=-
Заблокирован
Автор FAQ
17.09.2011, 19:29     Обратный порядок цифр в числе #7
Цитата Сообщение от iama Посмотреть сообщение
вместо сишной strrev использовали бы reverse из algorithm, а то смешивание стилей, нехорошо.
- Спасибо за замечание, но Я больше хотел показать два способа: разбор по разрядам и поврот строки, а векторами мало пользуюсь поэтому и заюзал strrev
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
17.09.2011, 19:32     Обратный порядок цифр в числе #8
-=ЮрА=-, да там и векторы-то не нужны, функции из algorithm работают и с обычными массивами.
-=ЮрА=-
Заблокирован
Автор 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));
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
17.09.2011, 21:15     Обратный порядок цифр в числе #10
-=ЮрА=-, зато более сиплюсплюсово стало
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.09.2011, 21:19     Обратный порядок цифр в числе #11
Цитата Сообщение от iama Посмотреть сообщение
-=ЮрА=-, зато более сиплюсплюсово стало
и переносимее, в никсах нету strrev
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2011, 21:23     Обратный порядок цифр в числе
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.09.2011, 21:23     Обратный порядок цифр в числе #12
strrev в стандарте нет, она только на мелкомягких компиляторах есть

Добавлено через 43 секунды
Опаздал.
Yandex
Объявления
17.09.2011, 21:23     Обратный порядок цифр в числе
Ответ Создать тему
Опции темы

Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru