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

Функция перевёртыш - C++

Восстановить пароль Регистрация
 
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
04.10.2011, 18:44     Функция перевёртыш #1
Напишите функцию, которая принимает целое значение и возвращает число с обратным порядком чисел.
Например ввели: 123, на выходе будет 321
Нашёл в интернете решение: нужно использовать функцию reverse из algorithm
Код:
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
// reverse algorithm example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
int main () {
  vector<int> myvector;
  vector<int>::iterator it;
 
  // set some values:
  for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9
 
  reverse(myvector.begin(),myvector.end());       // 9 8 7 6 5 4 3 2 1
 
  // print out content:
  cout << "myvector contains:";
  for (it=myvector.begin(); it!=myvector.end(); ++it)
    cout << " " << *it;
 
  cout << endl;
 
  return 0;
}
Но ибо я до векторов ещё не доходил и прошел только управляющие конструкции и функции
Переделайте пожалуйста под простую функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 18:46     Функция перевёртыш #2
C++
1
2
3
4
5
6
7
8
9
10
long Inverse(long a)
{
   long b = 0;
   while(a)
   {
      b = b*10 + a%10;
      a /= 10;
   }
   return b;
}
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
04.10.2011, 18:48  [ТС]     Функция перевёртыш #3
Прокомментируйте цикл пожалуйста каждую строчку, а то что-что мутно как то
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 18:51     Функция перевёртыш #4
Цитата Сообщение от TBIKC Посмотреть сообщение
Прокомментируйте цикл пожалуйста каждую строчку, а то что-что мутно как то
Например, a=245; b=0.
b = 0*10+5=5; a=24;
b=5*10+4=54; a=2;
b=54*10+2+542; a=0
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
04.10.2011, 18:56  [ТС]     Функция перевёртыш #5
Честно говоря я не понимаю что такое сдесь a%10 и как это тут работает )

a /= 10; Эквивалентно а = а / 10 как я понял
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 19:05     Функция перевёртыш #6
Цитата Сообщение от TBIKC Посмотреть сообщение
Честно говоря я не понимаю что такое сдесь a%10 и как это тут работает )
a%10 - остаток от деления на 10, то есть последняя цифра числа
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
04.10.2011, 19:28  [ТС]     Функция перевёртыш #7
Всё разобрался, только вот 1 вопросик
Когда мы вычисляем а мы делим его на 10 например 245, остаёться 24 а остаток не приписываеться разве к этому значению ?
И условие какое то странное реализовал на компьютере и ничего не выводит
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 19:40     Функция перевёртыш #8
Цитата Сообщение от TBIKC Посмотреть сообщение
Всё разобрался, только вот 1 вопросик
Когда мы вычисляем а мы делим его на 10 например 245, остаёться 24 а остаток не приписываеться разве к этому значению ?
И условие какое то странное реализовал на компьютере и ничего не выводит
245/10 = 24
245%10 = 5

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
long Inverse(long a)
{
   long b = 0;
   while(a)
   {
      b = b*10 + a%10;
      a /= 10;
   }
   return b;
}
int main()
{
   printf("%d\n", Inverse(245));
   return 0;
}
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
04.10.2011, 19:46  [ТС]     Функция перевёртыш #9
А как на С++ написать чтобы int inverse(123); выводила ? с помощью cout
Хотя в функции return же есть

Ах ну да невнимательно видать читал про деление
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 20:02     Функция перевёртыш #10
Цитата Сообщение от TBIKC Посмотреть сообщение
А как на С++ написать чтобы int inverse(123); выводила ? с помощью cout
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
long Inverse(long a)
{
   long b = 0;
   while(a)
   {
      b = b*10 + a%10;
      a /= 10;
   }
   return b;
}
int main()
{
   std::cout << Inverse(245);
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2011, 20:11     Функция перевёртыш
Еще ссылки по теме:

есть функция которая размещает 2 числа в порядке возрастания, значения в эту функцию передаю по указателю, но по указателям функция их не сортирует C++
оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ C++
C++ Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел

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

Или воспользуйтесь поиском по форуму:
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
04.10.2011, 20:11  [ТС]     Функция перевёртыш #11
ТАк то я попробовал писать так
У меня ошибка пишет не определённый идентификатор на функции

Добавлено через 13 секунд
Разобрался, писал с маленькой буквы ))
Yandex
Объявления
04.10.2011, 20:11     Функция перевёртыш
Ответ Создать тему
Опции темы

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