Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 14:49   #1
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
Вопрос Перевернуть число.

Вопрос вроде бы простой, но как это сделать не помню. Надо перевернуть число и вывести на экран. 123 -> 321. Это надо на СИ. Мне хотя бы просто алгоритм напомните! Заранее спс!
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 23.05.2009, 15:05   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Просто вывести? Можно рекурсией:
Код:
#include <stdio.h>
#include <conio.h>

void rec(int N)
{
 if(N<1) return;
 printf("%d",N%10);
 rec(N/10);
}

int main()
{
 int N=123;
 rec(N);

 getch();
return 0;
}
Или преобразовать в строку, пройтись по ней до середины и менять i-й символ с (N-i-1)-м. А потом обратно в число )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.05.2009, 15:20   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот так еще можно
Тут уже переворачивается само число.
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>

int obr(int N, int k)
{
 if(N<1) return 0;
 k /= 10;
 return (N%10)*k + obr(N/10,k);
}

int main()
{
 int N=12367;
 int M = obr(N,(int)pow(10,(int)log10(N)+1));

 printf("%d\n",M);

 getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.04.2017, 15:16   #4
DengerSSL
Новичок
Джуниор
 
Регистрация: 23.04.2017
Сообщений: 1
По умолчанию Answer

Так еще можно

#include <stdio.h>
#include <conio.h>
int sum(int n, int t = 0){
if(n<10) return t+n;
return sum(n/10, (t+n%10)*10);
}

int main(){
int val = 123567;
printf("result %5d", sum(val));
getch();
// system("pause");
return 1;
}
DengerSSL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевернуть строку заданную интервалом Gongled Паскаль, Turbo Pascal, PascalABC.NET 0 08.05.2009 17:26
Перевернуть значения цикла SwiP PHP 14 01.04.2009 17:36
Перевернуть строку Манжосов Денис :) Общие вопросы Delphi 13 03.12.2008 04:37
Удвоить каждый символ строки, потом перевернуть строку Didi Помощь студентам 6 20.05.2008 15:33
Как перевернуть изображение по часовой стрелке John_chek Мультимедиа в Delphi 7 09.07.2007 00:24