С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
#1

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

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

Как перевернуть цыфри долгого целого числа задом на перед тоесть если есть 123456789, то сделать с него 987654321?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2009, 22:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция переворота чисел (C++):

Вопрос по поводу переворота строки и перегрузки << и >> - C++
помогите пожалуйста с моими ошибками. Задание создать ф-цию переворота строки и переопределение &gt;&gt; и &lt;&lt; #pragma once #include...

Ошибка динамической памяти на примере переворота строки - C++
Подскажите, пожалуйста, почему при одном и том же алгоритме, переворот строки не работает если использовать динамическое выделение памяти ...

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел - C++
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих функций с различными параметрами. Для...

Разработать программу «переворота» строки. Способ: последовательная перестановка элементов - первый с последним, второй с предпоследним и т.д. - C++
Разработать программу «переворота» строки. Способ: последовательная перестановка элементов - первый с последним, второй с предпоследним...

Функция генерации чисел - C++
помогите пожалуйста ! нужно написать функцию которая будет генирировать числа от 1 до 60 и записовать их в массив при условии того чтоб...

Функция округления чисел - C++
Здравствуйте, подскажите пожалуйста. Написала функцию округления цифр void RoundingFunction(double RoundingVariable, int&amp;...

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

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

Цитата Сообщение от DEM90 Посмотреть сообщение
извращённым способом
это не извращенный способ, а арифметический.
0
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; }
0
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:42  [ТС] #11
но перевертает, только максимум 4х значное число.
0
DEM90
17 / 17 / 1
Регистрация: 06.05.2009
Сообщений: 115
20.05.2009, 23:46 #12
мой способ переворачивает... (проверил)
0
Monte-Cristo
2791 / 1377 / 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;
}
0
NAG
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
20.05.2009, 23:54  [ТС] #14
а у меня больше 4х не переварачивает. Выводит или "0" или минусовое число!
0
Monte-Cristo
2791 / 1377 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 23:57 #15
какой компилятор?
0
20.05.2009, 23:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2009, 23:57
Привет! Вот еще темы с ответами:

Перестановка чисел(функция) - C++
Даны 4 числа. Организуйте перестановку данных чисел в обратном порядке. Перестановку двух чисел организуйте в виде отдельной функции....

Функция вычисления суммы n чисел - C++
Доброго времени суток. Хочу попросить помощи в составлении программы. Условие:нужно подсчитать сумму n чисел через функцию. Было...

Функция для простых чисел - C++
Найти все трехзначные простые числа, определив функцию, позволяющую распознавать простые числа.

Функция подсчета введенных чисел - C++
Функции.Вводятся целые числа, пока не будет введен 0. Подсчитать, сколько всего будет введено чисел, а также получить сумму тех чисел,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.