8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
1

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

20.05.2009, 22:32. Показов 5881. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как перевернуть цыфри долгого целого числа задом на перед тоесть если есть 123456789, то сделать с него 987654321?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2009, 22:32
Ответы с готовыми решениями:

Функция переворота строки
Пытаюсь написать функцию, переворачивающую строку, но что-то не получается.. куча ошибок, я не...

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

Функция переворота односвязного списка. Перевод с С++ на С
Есть функция переворота(был последним-стал первым) односвязного списка на C++, очень нужно...

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

20
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 22:35 2
смотря в каком типе хранятся числа. если char* то очень просто. а если в типе int, как бы посложнее будет) в каком типе?
0
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 22:39  [ТС] 3
Ну для начала можно и в char*

Добавлено через 1 минуту 10 секунд
и сразу в int )))
0
2816 / 1407 / 107
Регистрация: 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: конечно можно инвертировать используя стек, но я думаю его вам не надо реализовывать, хотя можно создать простенький класс-стек.
0
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 22:51  [ТС] 5
а что дает вот это:
C
1
using namespace std;
***
я просто Си начал изучать где-то месяц назад...и интересуют все подробности))
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:05 6
это вообщем-то с++
Цитата Сообщение от NAG Посмотреть сообщение
using namespace std;
это использование пространства имен std; короче чтоб не писать std::cout и std::cin
0
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:13  [ТС] 7
а понял...
а для int не можете еще написать?
0
17 / 17 / 7
Регистрация: 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");
}
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:21 9
Цитата Сообщение от NAG Посмотреть сообщение
а для int не можете еще написать?
думаю уже нестоит писать. DEM90 написал... причем неплохо!

Цитата Сообщение от DEM90 Посмотреть сообщение
извращённым способом
это не извращенный способ, а арифметический.
0
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; }
0
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:42  [ТС] 11
но перевертает, только максимум 4х значное число.
0
17 / 17 / 7
Регистрация: 06.05.2009
Сообщений: 115
20.05.2009, 23:46 12
мой способ переворачивает... (проверил)
0
2816 / 1407 / 107
Регистрация: 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;
}
0
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:54  [ТС] 14
а у меня больше 4х не переварачивает. Выводит или "0" или минусовое число!
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:57 15
какой компилятор?
0
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;
}
а это не одно и тоже с тем что я написал?
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
21.05.2009, 00:02 17
попробуйте поставить строчку после
C++
1
2
using namespace std;
#define int long
Добавлено через 3 минуты 21 секунду
Цитата Сообщение от Rumata Посмотреть сообщение
а это не одно и тоже с тем что я написал?
но DEM90, просто запостил раньше.
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
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;
   }
}
0
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
21.05.2009, 16:34  [ТС] 19
kazak, а не мог бы рассказать как работает твоя программа?
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
21.05.2009, 17:29 20
Да все то же самое, о чем тебе выше писалось, только написано на С.
0
21.05.2009, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2009, 17:29
Помогаю со студенческими работами здесь

Анимация переворота кнопки
Господа - не подскажите как сделать анимацию переворота кнопки. Т.е. при нажатии на кнопку или на...

Написать функцию переворота строки
не пайму, чего-то. вот есть страка, хачу перевирнуть, а ана не перевараичвается. остоётся старай....

Кнопка переворота строки PHP
Всем привет, люди подскажите кто может. Есть функция strrev, которая переворачивает строку...

Расшифровать число путем его переворота
создать приложение в c# WF, используя textBox,Label,Button.Имеется зашифрованное число. Чтобы его...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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