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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Licwin
2 / 3 / 0
Регистрация: 18.11.2010
Сообщений: 126
#1

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

10.02.2012, 01:15. Просмотров 1825. Ответов 6
Метки нет (Все метки)

подскажите как заменить число в обратном порядке в С?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2012, 01:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Целое четырехзначное число заменить числом, получающимся при записи его цифр в обратном порядке (C++):

Найти число, которое образуется из данного натурального числа при записи его цифр в обратном порядке - C++
Составить программу для нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке....

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке - C++
1) Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число...

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число 156, нужно получ - C++
Вобщем,если не сложно,именно саму функцию помочь написать,ибо я просто не могу понять:) Добавлено через 22 минуты вот так...

Найти число, которое образуется при записи цифр заданного натурального числа в обратном порядке - C++
Найти число, которое образуется при записи цифр заданногонатурального числа в обратном порядке. Например: для заданногочисла 1234 — это...

Целое положительное число m записывается в 16-ой системе счисления и разряды в этой записи переставляются в обратном порядке. Получившиеся число прини - C++
ребят помогите!!!!Препод задал 20 задач по программированию,и во не могу сделать эту:"Целое положительное число m записывается в 16-ой...

Заменить данное число на число, которое получается из исходного записью цифр в обратном порядке - C++
Заменить данное натурально число на число, которое получается из исходного записью цифр в обратном порядке(например, дано число 156, нужно...

6
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
10.02.2012, 02:15 #2
Было уже 100500 раз, но искать тоже лень
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void){
    int n;
    
    while ( printf("Number: ") && scanf("%d", &n) == 1 && n > 999 && n < 10000 )
        printf("Result: %04d\n", n % 10 * 1000 + n / 10 % 10 * 100 + n / 100 % 10 * 10 + n / 1000);
    
    return 0;
}
0
Сtrl
139 / 129 / 3
Регистрация: 19.07.2011
Сообщений: 184
10.02.2012, 02:18 #3
Ха-ха, easybudda, а если там будет не 4, а 100 цифр?
На C++ я сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
template <class T>
T numeric_reverse(T number, const T base = 10)
{
    if (number < base && number >= 0)
        return number;
    T rnumber = number;
    T mbase = 1;
    do {
        mbase *= base;
    } while (rnumber /= base);
    do {
        rnumber += (number % base) * (mbase /= base);
    } while (number /= base);
    return rnumber;
}
 
int main() 
{ 
    std::cout << numeric_reverse(1234);
    std::cin.get();
}
В обычном Си я не силен, но после адаптации получилось вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int numeric_reverse(int number, const int base)
{
    int rnumber = number;
    int mbase = 1;
    if (number < base && number >= 0)
        return number;
    do {
        mbase *= base;
    } while (rnumber /= base);
    do {
        rnumber += (number % base) * (mbase /= base);
    } while (number /= base);
    return rnumber;
}
 
int main() 
{ 
    printf("%d", numeric_reverse(1234, 10));
    getchar();
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
10.02.2012, 02:25 #4
Цитата Сообщение от Сtrl Посмотреть сообщение
Ха-ха, easybudda, а если там будет не 4, а 100 цифр?
А если цифры будут не только арабские, но так же римские, племени майа и марсианские? Читаем задание и голову себе не забиваем. Было бы неопределённое количество цифр - было бы другое решение.
И кстати... А какой стандартный тип данных способен хранить число с точностью в 100 цифр? При таком подходе это уже реверс строки будет...
0
Сtrl
139 / 129 / 3
Регистрация: 19.07.2011
Сообщений: 184
10.02.2012, 02:29 #5
Цитата Сообщение от easybudda Посмотреть сообщение
А если цифры будут не только арабские, но так же римские, племени майа и марсианские?
В идеале неплохо бы и эти случаи рассмотреть.
Цитата Сообщение от easybudda Посмотреть сообщение
И кстати... А какой стандартный тип данных способен хранить число с точностью в 100 цифр? При таком подходе это уже реверс строки будет...
Нет такого типа, но задача не сводится к обращению строки. Надеюсь, мне не придется рассказывать про длинную арифметику, чтобы это доказать.
0
easybudda
Модератор
Эксперт CЭксперт С++
9694 / 5644 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
10.02.2012, 03:31 #6
Цитата Сообщение от Сtrl Посмотреть сообщение
Нет такого типа, но задача не сводится к обращению строки.
Не сводится, но так проще.
Цитата Сообщение от Сtrl Посмотреть сообщение
Надеюсь, мне не придется рассказывать про длинную арифметику, чтобы это доказать.
Ну я когда-то краем уха слышал, а вот топикстартеру, думаю, интересно будет узнать. Так, что, если не затруднит...

Варварский способ перевернуть от 1 до 9 цифр, ТС, никогда так не делайте! Ну раз уж решили повыпендриваться...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <math.h>
#include <limits.h>
 
#define digitscount(num) ((int)log10(num) + 1)
#define MAX_DIGITS digitscount(UINT_MAX)
 
unsigned swap_digits(unsigned num, int left, int right){
    return ( left < right ) ? 0 : ( left == right ) ? num / (int)pow(10.0, right - 1) % 10 * (int)pow(10.0, right - 1) :
        num / (int)pow(10.0, left - 1) % 10 * (int)pow(10.0, right - 1) + num / (int)pow(10.0, right - 1) % 10 * (int)pow(10.0, left - 1) + swap_digits(num, left - 1, right + 1);
}
 
int main(void){
    unsigned n;
    int digits;
    
    while ( printf("Number: ") && scanf("%u", &n) == 1 && n > 0 && ( digits = digitscount(n) ) < MAX_DIGITS )
        printf("Result: %0*u\n", digits, swap_digits(n, digits, 1));
    
    return 0;
}
0
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
10.02.2012, 03:50 #7
Вот мой простой вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
#define base 10
 
unsigned revers_value( unsigned );
 
int main( void ) {
 
    unsigned res = revers_value( 8476 );
    printf( "%u", res );
    return EXIT_SUCCESS;
}
 
unsigned revers_value( unsigned val ) {
    unsigned res = 0;
    while ( val ) {
        res = res * base + val % base;
        val /= base;
    }
    return res;
}

Не по теме:

Цитата Сообщение от Сtrl Посмотреть сообщение
В идеале неплохо бы и эти случаи рассмотреть.
Представляю себе преподавателя , которому студент, не разбирающийся в программировании принесет решение :-)

1
10.02.2012, 03:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2012, 03:50
Привет! Вот еще темы с ответами:

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

найти число, которое получено из N перестановкой его цифр в обратном порядке - C++
Помогите пожалуйста, сессия скоро.. а я дуб дубом в си...... спасибо заранее!! Дано целое число N (N &gt; 0). Используя операции деления...

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

В заданном массиве натуральных чисел заменить все числа на такие числа, которые получаться из исходного записью его цифр в обратном порядке - C++
Ребят выручайте не могу зачет сдать из-за этой лабы =( не могу сделать. надо сделать через тип данных вектор. &quot; В заданном массиве...


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

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

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