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

Функция переворота чисел - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 22:32     Функция переворота чисел #1
Как перевернуть цыфри долгого целого числа задом на перед тоесть если есть 123456789, то сделать с него 987654321?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 22:35     Функция переворота чисел #2
смотря в каком типе хранятся числа. если char* то очень просто. а если в типе int, как бы посложнее будет) в каком типе?
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 22:39  [ТС]     Функция переворота чисел #3
Ну для начала можно и в char*

Добавлено через 1 минуту 10 секунд
и сразу в int )))
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 22:45     Функция переворота чисел #4
вот для char*

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    char str[255];
    cin >> str;
 
    int len = strlen(str);
    for (int i=0; i<(len-1)/2; i++)
    {
        char c = str[i];
        str[i] = str[len-1-i];
        str[len-1-i] = c;
    }
 
    cout << str << endl;
 
    return 0;
}
Добавлено через 1 минуту 42 секунды
для int, необходимо сначало привести его к char*, проделать тоже самое и обратно привести к int.

p.s: конечно можно инвертировать используя стек, но я думаю его вам не надо реализовывать, хотя можно создать простенький класс-стек.
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 22:51  [ТС]     Функция переворота чисел #5
а что дает вот это:
C
1
using namespace std;
***
я просто Си начал изучать где-то месяц назад...и интересуют все подробности))
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:05     Функция переворота чисел #6
это вообщем-то с++
Цитата Сообщение от NAG Посмотреть сообщение
using namespace std;
это использование пространства имен std; короче чтоб не писать std::cout и std::cin
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:13  [ТС]     Функция переворота чисел #7
а понял...
а для int не можете еще написать?
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
20.05.2009, 23:15     Функция переворота чисел #8
Перевернуть int можно вот таким извращённым способом (только что придума, может и не работает):
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
30
31
32
33
34
35
36
37
38
39
#include <conio.h>
#include <iostream>
using namespace std;
int per_rek(int n, int i)
{
  for(int j=i;j>1;j--)
    {
        n*=10;
    }
    return n;
}
 
int per(int n)
{
  int a;
    int b = 0;
    int i=0;
    int n2=n;
    while(n2>0)
    {
        n2/=10;
        i++;
    }
    for(int j=i;j>0;j--)
    {
        a = n%10;
        n/=10;
        b += per_rek(a,i);
        i--;
    }
    return b;
}
 
int main()
{
    int q=1223;
    cout << "\n"<< per(q) << "\n";
    system("PAUSE");
}
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:21     Функция переворота чисел #9
Цитата Сообщение от NAG Посмотреть сообщение
а для int не можете еще написать?
думаю уже нестоит писать. DEM90 написал... причем неплохо!

Цитата Сообщение от DEM90 Посмотреть сообщение
извращённым способом
это не извращенный способ, а арифметический.
Rumata
4 / 4 / 0
Регистрация: 10.04.2009
Сообщений: 23
20.05.2009, 23:25     Функция переворота чисел #10
можно так:
C++
1
2
while(x)
{ y = y*10 + x%10; x/=10; }
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:42  [ТС]     Функция переворота чисел #11
но перевертает, только максимум 4х значное число.
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
20.05.2009, 23:46     Функция переворота чисел #12
мой способ переворачивает... (проверил)
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:46     Функция переворота чисел #13
почему?
вот код DEM90 только с вводом числа:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
using namespace std;
 
int per_rek(int n, int i)
{
    for(int j=i;j>1;j--)
    {
        n*=10;
    }
    return n;
}
 
int per(int n)
{
    int a;
    int b = 0;
    int i=0;
    int n2=n;
 
    while(n2>0)
    {
        n2/=10;
        i++;
    }
    for(int j=i;j>0;j--)
    {
        a = n%10;
        n/=10;
        b += per_rek(a,i);
        i--;
    }
    return b;
}
 
int main()
{
    int q;    
    cin >> q;
    cout << "\n"<< per(q) << "\n";
    system("PAUSE");
    return 0;
}
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:54  [ТС]     Функция переворота чисел #14
а у меня больше 4х не переварачивает. Выводит или "0" или минусовое число!
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:57     Функция переворота чисел #15
какой компилятор?
Rumata
4 / 4 / 0
Регистрация: 10.04.2009
Сообщений: 23
20.05.2009, 23:58     Функция переворота чисел #16
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
почему?
вот код DEM90 только с вводом числа:

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
30
int per_rek(int n, int i)
{
    for(int j=i;j>1;j--)
    {
        n*=10;
    }
    return n;
}
 
int per(int n)
{
    int a;
    int b = 0;
    int i=0;
    int n2=n;
 
    while(n2>0)
    {
        n2/=10;
        i++;
    }
    for(int j=i;j>0;j--)
    {
        a = n%10;
        n/=10;
        b += per_rek(a,i);
        i--;
    }
    return b;
}
а это не одно и тоже с тем что я написал?
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
21.05.2009, 00:02     Функция переворота чисел #17
попробуйте поставить строчку после
C++
1
2
using namespace std;
#define int long
Добавлено через 3 минуты 21 секунду
Цитата Сообщение от Rumata Посмотреть сообщение
а это не одно и тоже с тем что я написал?
но DEM90, просто запостил раньше.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.05.2009, 04:59     Функция переворота чисел #18
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//---------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <string.h>
//---------------------------------------------------------------------------
int ConvertInt(int);
void ConvertChar(char[]);
int main(int argc, char* argv[])
{
   int in = 0;
   char num[256] = {'\0'};
 
   printf("Pervyi variant, ispo'suya int.\n");
   printf("Vvtdite chislo: ");
   scanf("%d", &in);
   printf("Poluchilos': %d\n", ConvertInt(in));
 
   printf("Vtoroi variant, ispo'suya char.\n");
   printf("Vvedite chislo: ");
   scanf("%s", num);
   ConvertChar(num);
   printf("Poluchilos': %s\n", num);
 
   getch();
   return 0;
}
//---------------------------------------------------------------------------
int ConvertInt(int in)
{
   int out = 0;
 
   while (in > 0)
   {
      out = out*10 + in % 10;
      in /= 10;
   }
 
   return out;
}
 
void ConvertChar(char num[])
{
   char tmp;
   int len = 0;
   int i = 0;
 
   len = strlen(num);
   for (i = 0; i < len / 2; i++)
   {
      tmp = num[i];
      num[i] = num[len - i - 1];
      num[len - i - 1] = tmp;
   }
}
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
21.05.2009, 16:34  [ТС]     Функция переворота чисел #19
kazak, а не мог бы рассказать как работает твоя программа?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2009, 17:29     Функция переворота чисел
Еще ссылки по теме:

C++ Функция сложения двух чисел
C++ Перестановка чисел(функция)
Ошибка динамической памяти на примере переворота строки C++

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

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.05.2009, 17:29     Функция переворота чисел #20
Да все то же самое, о чем тебе выше писалось, только написано на С.
Yandex
Объявления
21.05.2009, 17:29     Функция переворота чисел
Ответ Создать тему
Опции темы

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