Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: С++ : как перевернуть число 21 ???  (Прочитано 16269 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ : как перевернуть число 21 ???
« Ответ #15 : 10 Сентября 2009, 03:05:40 »
Задача, которую я привел, несложная. Суть ее -- поиск алгоритма. Так что, надо найти алгоритм, с помощью которого можно будет найти это число и поэтому не важно, какой длины (или в каком диапозоне) оно будет. Также могу сказать, что компьютер или калькулятор здесь не обязателен, так как хватит и ручки с бумагой.

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: С++ : как перевернуть число 21 ???
« Ответ #16 : 10 Сентября 2009, 13:58:24 »
105263157894736842
« Последнее редактирование: 10 Сентября 2009, 22:33:03 от Sova777 »
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ : как перевернуть число 21 ???
« Ответ #17 : 12 Сентября 2009, 11:14:36 »
Компьютер бы искал ответ достаточно долго. Учитывая то, каким методом получается искать ответ можно увидеть некоторое свойство этого числа: из него получаются несколько таких чисел.

105263157894736842
210526315789473684
421052631578947368
368421052631578947
473684210526315789
157894736842105263
315789473684210526
263157894736842105

052631578947368421

Впрочем, последнее -- спорное.

g-z0mb1e

  • Гость
Re: С++ : как перевернуть число 21 ???
« Ответ #18 : 12 Сентября 2009, 12:29:25 »
спасиба, посмеялся.  :2funny:
нужно всего-то поделить число на разряды, а потом умножить на цифры разрядов в обратном порядке.
если 123 то 1*100 + 2*10 + 3*1, а если наоборот, то 3*100 + 2*10 + 1*1. находятся целочисленным делением, ну а дальше уже кто-как умеет.

а написали-то...

Вот пример:
#include <iostream>
using namespace std;

int main ()
{
int number, r_number, temp, temp0, temp1, temp2;
std::cout << "Введите число: ";
std::cin >> number;
temp0 = number / 100;
temp = number - temp0*100;
temp1 = temp / 10;
temp2 = temp - temp1 * 10;
r_number = temp2 * 100 + temp1 * 10 + temp0;
std::cout << "Перевернутое число: " << r_number << endl;
return 0;
}

ну и как бонус:
$:~/Coding/CPP/Labs$ ./reverse
Введите число: 123
Перевернутое число: 321

соответственно кол-во переменных и операций будет расти, тем больше кол-во разрядов и наоборот.

« Последнее редактирование: 11 Октября 2009, 15:15:14 от g-z0mb1e »

Оффлайн aya

  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: С++ : как перевернуть число 21 ???
« Ответ #19 : 12 Сентября 2009, 13:34:16 »
Не лаконично, лучше инвертировать строку, а после, если нужно преобразовать в число.

g-z0mb1e

  • Гость
Re: С++ : как перевернуть число 21 ???
« Ответ #20 : 12 Сентября 2009, 13:43:47 »
мсье, Вы извращенец?

зачем числовое значение загонять в строковое, а потом еще и конвертить если можно просто все посчитать ?

Оффлайн Alex2000

  • Активист
  • *
  • Сообщений: 317
    • Просмотр профиля
Re: С++ : как перевернуть число 21 ???
« Ответ #21 : 12 Сентября 2009, 14:39:40 »
Keep it simple, stupid. В задаче указано конкретное число, а не любое. Очевидно, что правильный ответ такой:
cout << 12;
:)

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.