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

преобразование символов в числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Nikita9413
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 49
09.04.2013, 18:10     преобразование символов в числа #1
Ребят помогите решить задачу плииз!! дан текст, содержащий цифры.Заменить все нечетные цифры наименьшей цифрой,содержащейся в данном тексте.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 20:06     преобразование символов в числа #2
Nikita9413,

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 <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
bool pred_min(char elem1, char elem2)
{
    return elem1 - '0' < elem2 - '0';
}
 
bool predikat(char elem){
    return (((elem - '0') % 2) != 0);
}
 
int main()
{
    string str("123456789");
 
    char min = *min_element(str.begin(), str.end(), pred_min);
 
    replace_if(str.begin(), str.end(), predikat, min);
 
    cout << str << endl;
    cout << "\n\n";
    return 0;
}
Nikita9413
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 49
09.04.2013, 20:30  [ТС]     преобразование символов в числа #3
не совсем понятно, а можно сделать чтобы строку с клавиатуры можно было вводить?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 20:34     преобразование символов в числа #4
Nikita9413,

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
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
bool pred_min(char elem1, char elem2)
{
    return elem1 - '0' < elem2 - '0';
}
 
bool predikat(char elem){
    return (((elem - '0') % 2) != 0);
}
 
int main()
{
    string str;
    cout << "Enter the string: ";
        getline(cin, str, '\n');
 
    char min = *min_element(str.begin(), str.end(), pred_min);
 
    replace_if(str.begin(), str.end(), predikat, min);
 
    cout << "New string: " << str << endl;
    cout << "\n\n";
    return 0;
}
Nikita9413
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 49
09.04.2013, 20:39  [ТС]     преобразование символов в числа #5
я извиняюсь за наглость, но можно сделать так чтобы было понятно первокурснику)) просто в этом коде очень трудно разобраться, я и половины функций не знаю
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 20:48     преобразование символов в числа #6
Nikita9413, так понятней?

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
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int main()
{
    string str;
    cout << "Enter the string: ";
        getline(cin, str, '\n');
 
    char min = str[0];
 
    /*ищем минимум*/
    for(unsigned i = 0; i < str.length(); ++i){
        if((str[i] - '0') < (min - '0')){           //str[i] - '0' дает число вместо символа
            min = str[i];
        }
    }
 
    /*заменяем нечетные минимумом*/
    for(unsigned i = 0; i < str.length(); ++i){
        if(((str[i] - '0') % 2) != 0){
            str[i] = min;
        }
    }
 
    cout << "New string: " << str << endl;
    cout << "\n\n";
    return 0;
}
Nikita9413
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 49
09.04.2013, 21:43  [ТС]     преобразование символов в числа #7
да, спасибо

Добавлено через 34 минуты
еще вопрос, если в тексте содержаться еще и слова то код работает не корректно, как это исправить?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 21:49     преобразование символов в числа #8
Nikita9413, сделать проверку, является символ числом или нет, есть функция стандартная isalpha
Nikita9413
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 49
09.04.2013, 21:57  [ТС]     преобразование символов в числа #9
не совсем понятно, а можно пример использования этой функции?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 22:01     преобразование символов в числа #10
http://www.cplusplus.com/reference/locale/isalpha/
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2013, 22:06     преобразование символов в числа #11
Цитата Сообщение от yoghurt92 Посмотреть сообщение
elem1 - '0' < elem2 - '0'
elem1 < elem2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 22:11     преобразование символов в числа
Еще ссылки по теме:

C++ Преобразование символов в числа и вычисление их суммы
Преобразование символов в числа C++
C++ Преобразование символов в строке

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

Или воспользуйтесь поиском по форуму:
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 22:11     преобразование символов в числа #12
Nikita9413, вот, она тут только для латинских букв

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
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int main()
{
    string str;
    cout << "Enter the string: ";
        getline(cin, str, '\n');
 
    char min = str[0];
 
    /*ищем минимум*/
    for(unsigned i = 0; i < str.length(); ++i){
        if(isdigit(str[i])){
            if((str[i] - '0') < (min - '0')){           //str[i] - '0' дает число вместо символа
                min = str[i];
            }
        }
    }
 
    /*заменяем нечетные минимумом*/
    for(unsigned i = 0; i < str.length(); ++i){
        if(isdigit(str[i])){
            if(((str[i] - '0') % 2) != 0){
                str[i] = min;
            }
        }
    }
 
    cout << "New string: " << str << endl;
    cout << "\n\n";
    return 0;
}
Добавлено через 1 минуту
Jupiter, да конечно, можно и так
Yandex
Объявления
09.04.2013, 22:11     преобразование символов в числа
Ответ Создать тему
Опции темы

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