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

char s[100] or string s = int a[100] - C++

Восстановить пароль Регистрация
 
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
23.09.2010, 16:17     char s[100] or string s = int a[100] #1
Сопсна нужна помощь, и буду очень благодарен если кто-то поможет.
Дается строка(string s или char s[100], в требованиях не указано, но лучше строка(предпочтения препода известны)), строка состоит из цифр (123456789987654321, какие - неважно, единственное требование: целые, >0), данные цифры надо преобразовать и впихнуть в вектор (int a[100]), для дальнейшей обработки.

Дальнейшую обработку описывать не буду, т.к. уже сделал, единственное что ни в какую не могу ни вспомнить ни найти, как это преобразовать...

очень большая просьба, если есть возможность, дать функцию которая делает преобразование(и написать библиотеки которые она использует..)
Буду признателен если поможете (:
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16830 / 5251 / 322
Регистрация: 30.03.2009
Сообщений: 14,144
Записей в блоге: 26
23.09.2010, 16:26     char s[100] or string s = int a[100] #2
Цитата Сообщение от iApple Посмотреть сообщение
строка состоит из цифр (123456789987654321, какие - неважно, единственное требование: целые, >0), данные цифры надо преобразовать и впихнуть в вектор (int a[100])
Более подробно опиши, что это значит. Есть строка "12976" и на выходе должны получить массив { a[0]=1, a[1]=2, a[2]=9, a[3]=7, a[4]=6 }? Или чего?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.09.2010, 16:29     char s[100] or string s = int a[100] #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void (char *str, int *num, int n)
{
    for (int i = 0; i < n; i++)
    {
        switch (str[i])
        {
            case '0':
                num[i] = 0;
                break;
            case '1':
                num[i] = 1;
                break;
            case '2':
                num[i] = 2;
                break;
            case '3':
                num[i] = 3;
                break;
            case '4':
                num[i] = 4;
                break;
            case '5':
                num[i] = 5;
                break;
            case '6':
                num[i] = 6;
                break;
            case '7':
                num[i] = 7;
                break;
            case '8':
                num[i] = 8;
                break;
            case '9':
                num[i] = 9;
                break;
            default:
                num[i] = -1;
                break;
        }
    }
}
Не компилировал, но суть, думаю, ясна... На вход подаётся чаровский массив, интовый и количество элементов. При левом символе (не цифре) в результирующий массив пишется -1, потом при обработке можно на это ориентироваться.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.09.2010, 16:29     char s[100] or string s = int a[100] #4
atoi, если я правильно понял.
Хотя нет. Для больших чисел будет плохо.
C++
1
2
3
4
5
6
7
8
for(int i=0, j=0; i<strlen(str); ++i)
{
    if(isdigit(str[i]))
    {
        num[j]=str[i]-'0';
        ++j;
    }
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 17:27     char s[100] or string s = int a[100] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
 
int main()
{
    std::string text="1234510459";
    std::vector<int> vec;
 
    for (int i = 0; i < text.size(); ++i){
        for (int j = 48; j < 58; ++j)
           if (j == text[i]){
             vec.push_back(j-48);
             break;
           }
    }
 
 
    for (int i = 0; i < vec.size(); ++i)
        std::cout<<vec[i]<<" ";
 
 
    return 0;
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
23.09.2010, 17:33     char s[100] or string s = int a[100] #6
PointsEqual,
C++
1
2
3
4
    for(int i = 0; i < text.size(); ++i) {
        if(text[i] >= '0' && text[i] <= '9')
            vec.push_back(text[i] - '0');
    }
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
23.09.2010, 17:52  [ТС]     char s[100] or string s = int a[100] #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void transformation(char *ch, int *in){
        for (i=0; i<=n; i++){
                switch (ch[i]){
                        case '0':in[i] = 0; break;
                        case '1':in[i] = 1; break;
                        case '2':in[i] = 2; break;
                        case '3':in[i] = 3; break;
                        case '4':in[i] = 4; break;
                        case '5':in[i] = 5; break;
                        case '6':in[i] = 6; break;
                        case '7':in[i] = 7; break;
                        case '8':in[i] = 8; break;
                        case '9':in[i] = 9; break;
                        default:in[i]=0; break;
                }
        }
}
сделал так. Всё пошло просто супер. Да и понятнее чем остальное. просто тут такая тема что надо чтобы поддерживались числа длиной до 100 цифр... так вроде бы пашет. (:
А когда всё работает, менять ничего не надо.


Всем участникам огромное спасибо!!! знаю что спасибо в карман не положишь, но думаю что за такое будет достаточно просто человеческого спасибо. Спасли прям. (:


Модераторы, можете закрыть тему.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 17:53     char s[100] or string s = int a[100] #8
iApple, хорошо что мы пользуемся десятичной сс, да ?
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
23.09.2010, 17:55  [ТС]     char s[100] or string s = int a[100] #9
PointsEqual, Вот именно (:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
23.09.2010, 18:05     char s[100] or string s = int a[100] #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
На счет switch кстати можно еще вот так делать
C++
1
2
3
4
5
6
7
8
    for(int i = 0; i < text.size(); ++i){
        switch(text[i])
        {
            case '0'...'9':
                vec.push_back(text[i] - '0');
                break;
        }
    }
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 18:06     char s[100] or string s = int a[100] #11
Цитата Сообщение от fasked Посмотреть сообщение
case '0'...'9':
не знал
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.09.2010, 18:16     char s[100] or string s = int a[100] #12
Тоже. И в Си тоже? Или только в плюсах?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 18:32     char s[100] or string s = int a[100]
Еще ссылки по теме:

Вывести на экран таблицу стоимости яблок в диапозоне от 100 г. до 1 кг. с шагом 100 г C++
Генерировать и вывести на экран массив с целого числа n случайных чисел от -100 до 100 C++
C++ Чем отличаются выражения (const int[]){value} от (const int[]){100}

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
23.09.2010, 18:32     char s[100] or string s = int a[100] #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
И в Си тоже? Или только в плюсах?
И в Си тоже
Yandex
Объявления
23.09.2010, 18:32     char s[100] or string s = int a[100]
Ответ Создать тему
Опции темы

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