Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/162: Рейтинг темы: голосов - 162, средняя оценка - 4.98
-1 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 50
1

Вывести число в обратном порядке

28.03.2014, 13:33. Показов 32677. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
найти число которое образуется при записи цифр заданного натурального числа в обратном порядке
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2014, 13:33
Ответы с готовыми решениями:

Получить и вывести число, получаемое записью в обратном порядке цифр числа n
2. С клавиатуры вводится натуральное число n. Получить и вывести число, получаемое записью в...

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

Считать текст из файла и вывести в обратном порядке слова, содержащие наибольшее число гласных букв
Помогите разобраться, пожалуйста. Написать программу, которая считывает текст из файла и выводит в...

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

13
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
28.03.2014, 16:02 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
main()
{
   char c[10],s[10];
   int i;
   printf("Enter number: ");
   gets(c);
   for(i=0;i<strlen(c);i++)
        s[i]=c[strlen(c)-i-1];
   i=atoi(s);
    printf("%d",i);
}
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
28.03.2014, 22:52 3
Лучший ответ Сообщение было отмечено ValeryS как решение

Решение

kasan, скорее всего имелось ввиду решение без строк.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
main() 
{
    unsigned int a,b=0;
    printf("Number:");
    scanf("%d",&a,b);
    while (a!=0) {
          b=b*10+a%10;
          a=a/10;
          }
    printf("Reversed number:%d\n",b);    
    getch();
    return 0;
}
Добавлено через 1 минуту
И кстати, если в вашей проге ввести например 009, то выдаст 900.

Добавлено через 10 минут
Ой,ток return 0 можно ж убрать.
2
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
29.03.2014, 03:07 4
Блин, ну через стек же. Который(LIFO) можно сотворить через любой malloc();
На асме это звучит так[FASM]:
Assembler
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
    org 100h
    mov ah,9
    mov dx, req
    int 21h
    mov ah, 0Ah
    mov dx, inpbuf
    int 21h
    mov si, dx
    lodsw
    mov di, si
    shr ax, 8
    mov cx, ax
    mov bx, cx
@@: lodsb
    push    ax
    loop    @B
    mov cx,bx
@@: pop ax
    stosb
    int 29h
    loop    @B
    mov ah, 4Ch
    int 21h
req:    db  'Enter string:$'
inpbuf: db  0Ch, 0, 12 dup (?)
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
29.03.2014, 18:19 5
Charles Kludge, зачем здесь стек и тем более ассемблер?!
0
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
29.03.2014, 19:14 6
Да что ж вы так над девочкой издеваетесь?

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
#include <stdbool.h>
#include <stdio.h>
 
unsigned int reverse(unsigned int num)
{
    unsigned int rev = 0;
    while( num != 0 ) {
        rev *= 10;
        rev += num % 10;
        num /= 10;
    }
    return rev;
}
 
int main(int argc, char* argv[])
{
    char buf[10];
    unsigned int num;
 
    while( true ) {
        puts("Enter number");
        fgets(buf, sizeof(buf), stdin);
        if( buf[0] == '\n' ) break;
        num = atoi(buf);
        printf("Reversed number = %d\n", reverse(num));
    }
 
    return 0;
}
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
29.03.2014, 19:18 7
Vtulhu, по-моему я написал нормальный код,у вас функция reverse почти как у меня,только что это
Цитата Сообщение от Vtulhu Посмотреть сообщение
num = atoi(buf);
?Это что строку в число перевели или как?
Ну а зачем в такой задаче еще и ассемблер подключать - не понятно...
0
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
29.03.2014, 19:24 8
Цитата Сообщение от Новичок Посмотреть сообщение
Vtulhu, по-моему я написал нормальный код,у вас функция reverse почти как у меня
Да, действительно, я только сейчас в него вчитался. Формула та же, но вся остальная обвязка хуже.

Это что строку в число перевели или как?
Да. Вот, почитайте - http://ru.wikipedia.org/wiki/Atoi
И вот это уж заодно - http://ru.wikipedia.org/wiki/Gets
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
29.03.2014, 22:37 9
Цитата Сообщение от Новичок Посмотреть сообщение
зачем здесь стек и тем более ассемблер
- к тому же ДОСовый...
0
Charles Kludge
29.03.2014, 22:42
  #10

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
- к тому же ДОСовый...
Дык, под вынь писать проще. Могу слепить на Си или асме хоть под неТварь или OS/2 вспомнить.

0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
29.03.2014, 22:49 11
C
1
2
3
4
int revNum(int n,int p=0)
{
    return (n==0) ? p : revNum(n/10,p*10+n%10);
}
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
29.03.2014, 23:08 12
поставил Новичок, лучший ответ , как самому первому
хотя код можно прилизать, более красивый будет
Цитата Сообщение от Новичок Посмотреть сообщение
C++
1
2
3
4
while (a!=0) {
          b=b*10+a%10;
          a=a/10;
          }
C++
1
2
3
4
5
6
int b=0;
while (a) {
          b*=10;
          b+=a%10;
          a=a/10;
          }
интересное решение у Catstail,
любит он рекурсию

Добавлено через 3 минуты
Цитата Сообщение от kasan Посмотреть сообщение
for(i=0;i<strlen(c);i++)
s[i]=c[strlen(c)-i-1];
i=atoi(s);
и что думаешь сработает?
конец строки то где?
да и что будет если введем 12 значное число?
Цитата Сообщение от Новичок Посмотреть сообщение
И кстати, если в вашей проге ввести например 009, то выдаст 900.
не выдаст там для этого atoi есть

Добавлено через 5 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
не выдаст там для этого atoi есть
хотя как он себя поведет
в Си числа начинающиеся с 0 это восьмеричные
следовательно 009 это не может быть восьмеричной
а 011 превратится в 9
надо поэкспериментировать
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
29.03.2014, 23:17 13
ValeryS, еще раз запустил прогу kasan, действительно на 009 выводит 900,это он переводит уже когда перевернул строку.
Цитата Сообщение от ValeryS Посмотреть сообщение
более красивый будет
А я наоборот думал что умножить на 10 и прибавить остаток лучше в одной строке, ну кому как(просто в Паскале нет таких операторов,привык).

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
хотя код можно прилизать,
Недавно слышал в этом разделе,что улучшать код в Си можно постоянно, до бесконечности.


P.S Так вот кто может лучшие ответы добавлять...
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
29.03.2014, 23:27 14
Цитата Сообщение от Новичок Посмотреть сообщение
А я наоборот думал что умножить на 10 и прибавить остаток лучше в одной строке,
для машины это без разницы
а человек читая код может запутаться
да и если пойдешь отладчиком то удобней когда каждое действие на одной строке
в общем универсального решения нет
простой пример
C++
1
if(a && b)
это тоже самое что
C++
1
2
if(a)
  if(b)
и если a и b это одна сущность,например, проверить число на диапазон то лучше в одной строе
а если разные, например открылся ли файл и количество запусков то разные
хотя я не претендую на истину в последней инстанции
Цитата Сообщение от Новичок Посмотреть сообщение
Недавно слышал в этом разделе,что улучшать код в Си можно постоянно, до бесконечности.
как и в любой профессии
"нет предела совершенству"
0
29.03.2014, 23:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2014, 23:27
Помогаю со студенческими работами здесь

Вывести строку на экран по словам, причем каждое слово вывести в обратном порядке
Ввести строку, вывести на экран пословно, причем каждое слово вывести в обратном порядке.

Ввести строку, вывести на экран пословно, причем каждое слово вывести в обратном порядке
Задание: Ввести строку, вывести на экран пословно, причем каждое слово вывести в обратном порядке....

Записать число в обратном порядке
записать число в обратном порядке например 12345 - 54321(СИ)

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru