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

Изменить порядок следования цифр на обратный между 1-й и последней цифрой - C++

Восстановить пароль Регистрация
 
TRIPTIXX
0 / 0 / 0
Регистрация: 01.04.2014
Сообщений: 18
01.04.2014, 00:04     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #1
Здравствуйте!
На начале обучения ломаю голову как решить следующие задачи с маленькими знаниями в С++ :
2. Изменить порядок следования цифр на обратный между 1-й и последней его цифрой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 00:04     Изменить порядок следования цифр на обратный между 1-й и последней цифрой
Посмотрите здесь:

Изменить порядок следования слов в строке на обратный C++
C++ Составить программу, которая меняет порядок следования элементов на обратный
C++ Описать процедуру InvertDigits(K), меняющую порядок следования цифр числа на обратный
Изменить порядок следования элементов в массиве на обратный, используя массив указателей C++
C++ Задана строка. Изменить порядок следования символов в 1 и 2 половине строки на обратный
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 07:49     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #2
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
#include <iostream>
 
using namespace std;
 
void swap(int& n1, int& n2);
 
int main(int argc, char* argv[])
{
    long n = 1234567890;
 
    cout << "n = " << n << endl;
 
    //int* digits = new int[10];
    int digits[10]; int r = 0;
    for (long val = n; val >= 1; val/=10)
        digits[r++] = val % 10;
    
    int j = r-2;
    for (int i = 1; j >= r/2; i++, j--)
        swap(digits[i],digits[j]);
 
    int out = 0, t = r-1;
    for (int q = t; q >= 0; q--, t--)
        out+=digits[q] * (int)pow((float)10.,t);
 
    cout << "result = " << out << endl;
 
    _getch();
 
    return 0;
}
 
void swap(int& n1, int& n2)
 { int _tn = n1; n1 = n2; n2 = _tn; }
http://codepad.org/BhDaWj6h
Миниатюры
Изменить порядок следования цифр на обратный между 1-й и последней цифрой  
rrrFer
Заблокирован
01.04.2014, 07:54     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #3
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
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator> 
#include <ctype.h>
 
int main() {
    std::string str;
    
    std::getline (std::cin, str);
    
    typedef std::string::iterator iter_type;
    
    auto itf = std::find_if (str.begin(), str.end(), isdigit);
    if (str.end() == itf) {
        std::cout << "no digits\n";
        return 1;
    }
    
    auto itl = std::find_if (std::reverse_iterator<iter_type>(str.end()), 
                                                     std::reverse_iterator<iter_type>(str.begin()), isdigit);
    
    std::reverse(itf, itl.base());
    
    std::cout << str;
}
TRIPTIXX
0 / 0 / 0
Регистрация: 01.04.2014
Сообщений: 18
01.04.2014, 07:54  [ТС]     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #4
Спасибо большое!
Но я забыл сказать, что работаем в borlande (наидревнейшем) и мне к сожалению многие операторы не знакомы.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 07:55     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #5
[cut]

 Комментарий модератора 
Пункт 5.10 Правил: Запрещено склонять (агитировать) других пользователей к ее изменению.
rrrFer
Заблокирован
01.04.2014, 08:02     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #6
Посмотрел на адовый вариант zitxbit, и заметил, что недочитал задание:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator> 
#include <ctype.h>
 
int main() {
    std::string str;
    
    std::getline (std::cin, str);
    
    typedef std::string::iterator iter_type;
    
    auto itf = std::find_if (str.begin(), str.end(), isdigit);
    if (str.end() != itf) {
        auto itl = std::find_if (std::reverse_iterator<iter_type>(str.end()), std::reverse_iterator<iter_type>(str.begin()), isdigit);
    
        if (itl.base() != itf) 
            std::reverse(itf + 1, itl.base() - 1);
    }
    std::cout << str;
}
Добавлено через 1 минуту
Цитата Сообщение от zitxbit Посмотреть сообщение
нажмите "спасибо" на странице с ответом.
Правило 5.10 прочитай:
5.10 Запрещено накручивать репутацию и другую статистику пользователя любым способом, включая создание пользователей-клонов, а также склонять (агитировать) других пользователей к ее изменению.
TRIPTIXX
0 / 0 / 0
Регистрация: 01.04.2014
Сообщений: 18
01.04.2014, 08:51  [ТС]     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #7
Мы работаем в borlande DOSBox 0.73
и знаем очень мало операторов. по сути мы только циклы прошли

Добавлено через 36 минут
zitxbit, rrrFer,
можно ли эту задачу сделать более простым способом, точнее с использованием более простых операторов. Так как большинство ваших мне даже неизвестно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 09:16     Изменить порядок следования цифр на обратный между 1-й и последней цифрой
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
01.04.2014, 09:16     Изменить порядок следования цифр на обратный между 1-й и последней цифрой #8
Тогда так:

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
#include <stdio.h>
#include <string.h>     //для strlen
#include <stdlib.h>     //для atoi
 
int main()
{   int N, i, j;
    char num[12], temp;
    
    //вводим число
    printf("N =\t");
    scanf ("%d", &N);
    //очищаем буфер ввода от '\n'
    fflush (stdin); 
    
    //превращаем число в строку
    sprintf(num, "%d", N);
    
    //переставляем цифры (символы в строке)
    i = 0;
    j = strlen(num) - 1;
    while (++i < --j)
    {   temp = num[i];
        num[i] = num[j];
        num[j] = temp;
    }
 
    //выводим результат в виде строки
    printf("Res =\t%s\n", num);
 
    //строку также можно обратно превратить в число
    N = atoi(num);
    printf("N = \t%d\n", N);
 
    getchar ();
    return 0;
}

Почитать о функциях можно здесь
Yandex
Объявления
01.04.2014, 09:16     Изменить порядок следования цифр на обратный между 1-й и последней цифрой
Ответ Создать тему
Опции темы

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