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

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

Войти
Регистрация
Восстановить пароль
 
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
#1

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

23.09.2010, 16:17. Просмотров 1118. Ответов 12
Метки нет (Все метки)

Сопсна нужна помощь, и буду очень благодарен если кто-то поможет.
Дается строка(string s или char s[100], в требованиях не указано, но лучше строка(предпочтения препода известны)), строка состоит из цифр (123456789987654321, какие - неважно, единственное требование: целые, >0), данные цифры надо преобразовать и впихнуть в вектор (int a[100]), для дальнейшей обработки.

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

очень большая просьба, если есть возможность, дать функцию которая делает преобразование(и написать библиотеки которые она использует..)
Буду признателен если поможете (:
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2010, 16:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос char s[100] or string s = int a[100] (C++):

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

выдаёт error C2440: =: невозможно преобразовать 'int' в 'int [100] - C++
Ввести информацию об абонентах телефонной станции: фамилия, телефон, улица. Распечатать список абонентов 65-й АТС, проживающих на улице...

Считываю из char d в char ar[100] - выводятся кракозябры - C++
Здравствуйте, уважаемые знатоки программирования. Подскажите, пожалуйста, что делать. Я считываю из моего списка выражение в...

Как перейти от char[100] к *char? - C++
Подскажите, как переделать 6 строчку? char str1; cin.getline(str1, 100); // Some text char *str2; // strcpy(*str2,...

Как int конвертировать в string или char? - C++
например как сделать это: int x=5; string y="Hello"+x;

Переменные записать в массив int A[100][2] - C++
Подскажите пожалуйста как это for (int j = 2; j < N; j++) { for (int i = 0; i < 100; i++) { if (fun(i, j)) cout <<...

12
Evg
Эксперт CАвтор FAQ
18264 / 6389 / 440
Регистрация: 30.03.2009
Сообщений: 17,674
Записей в блоге: 28
23.09.2010, 16:26 #2
Цитата Сообщение от iApple Посмотреть сообщение
строка состоит из цифр (123456789987654321, какие - неважно, единственное требование: целые, >0), данные цифры надо преобразовать и впихнуть в вектор (int a[100])
Более подробно опиши, что это значит. Есть строка "12976" и на выходе должны получить массив { a[0]=1, a[1]=2, a[2]=9, a[3]=7, a[4]=6 }? Или чего?
1
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
23.09.2010, 16:29 #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, потом при обработке можно на это ориентироваться.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
23.09.2010, 16:29 #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;
    }
}
1
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 17:27 #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;
}
1
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.09.2010, 17:33 #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');
    }
2
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
23.09.2010, 17:52  [ТС] #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 цифр... так вроде бы пашет. (:
А когда всё работает, менять ничего не надо.


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


Модераторы, можете закрыть тему.
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 17:53 #8
iApple, хорошо что мы пользуемся десятичной сс, да ?
1
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
23.09.2010, 17:55  [ТС] #9
PointsEqual, Вот именно (:
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.09.2010, 18:05 #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;
        }
    }
3
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 18:06 #11
Цитата Сообщение от fasked Посмотреть сообщение
case '0'...'9':
не знал
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
23.09.2010, 18:16 #12
Тоже. И в Си тоже? Или только в плюсах?
1
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.09.2010, 18:32 #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
И в Си тоже? Или только в плюсах?
И в Си тоже
2
23.09.2010, 18:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 18:32
Привет! Вот еще темы с ответами:

Чем отличаются выражения (const int[]){value} от (const int[]){100} - C++
(const int){22} //Приведение к массиву и инициализация его значениями 22 от (const int){i} //Приведение к массиву и инициализация его...

Можно ли определить типа вида int[100] - C++
интересует, есть ли возможность через typedef определить тип массива или только как то так struct array { int elements } ...

8-и значное число типа int преобразовать в строчку char\string - C++
Подскажите, есть ли какая-нибудь функция, которая загоняет число в строчку. Например есть 8-и значное число (тип int) и мне нужно его...

Вывести на экран таблицу стоимости яблок в диапозоне от 100 г. до 1 кг. с шагом 100 г - C++
Написать программу, которая выводит на экран таблицу стоимости, например, яблок в диапозоне от 100 г. до 1 кг. с шагом 100 г. Ниже приведён...


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

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

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