Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176

Как выделить числа из символьного массива?

13.11.2014, 18:50. Показов 3689. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каким образом можно из массива симвалов выделить числа?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2014, 18:50
Ответы с готовыми решениями:

Как выделить кусок от символьного поля?
Здравствуйте, помогите, пожалуйста с проблемой: в ячейке А1 есть надпись , например "поле 411" Как выделить отсюда номер...

Выбрать все числа из символьного массива
Допустим есть лист с символами. (List<char> x = new List<char>()) Среди символов могут быть цифры, буквы и т.д. Можно ли с помощью LINQ или...

Поместить числа из символьного массива в целочисленный массив
Подскажите как можно поместить числа из символьного массива в целочисленный массив? При присвоении int1 = str1; в массив int1 помещается...

14
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 18:51
пробегаясь посимвольно по массиву можно пользоваться функцией isdigit(), которая возвращает true. если символ - цифра.
1
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176
13.11.2014, 18:51  [ТС]
причем их нужно будет засунутьв масив типа инт после этого..
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 18:59
это тоже без проблем. есть функция atoi(), которая из char* делает int.

Добавлено через 6 минут
вот очень простой и топорный вариант:
C++
1
2
3
4
5
6
7
8
9
    char    mas[] = "sss7sss8ssss9sss0";
    for(int i = 0; i < strlen(mas); ++i)
    {
        if(isdigit(mas[i]))
        {
            char tmp[2] = {mas[i]};
            std::cout << atoi(tmp) << " ";
        }
    }
1
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,646
Записей в блоге: 6
13.11.2014, 19:02
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
int main() {
    const int SIZE = 80;
    char a[SIZE] = "as54dsa546";
    int b[SIZE];
    int c = -1;
    for(int idx = 0; idx < SIZE; ++idx)
        if(::isdigit(a[idx])) {
            b[++c] = a[idx] - '0';
            std::cout << b[c] << ' ';
        }
    return 0;
}
1
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176
13.11.2014, 19:03  [ТС]
Подскажи плиз,делаю вот так:

C++
1
2
3
4
5
if (isdigit(m[i])){
            cout << m[i];
            in[k] = atoi(m);
            k++;
        }
И выбивает ошибку,хотя вроде как все верно(

Добавлено через 23 секунды
ща ваши варианты опробую
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 19:10
Цитата Сообщение от NUBAS Посмотреть сообщение
И выбивает ошибку,хотя вроде как все верно(
потому что atoi(m) пытается преобразовать весь массив в число, хотя ты проверил только один символ. т.к. там не только цифры, то он и ругается.

а может и еще из-за чего. текст ошибки желательно прилагать, по фрагменту кода иногда сложно определить.

Добавлено через 4 минуты
Цитата Сообщение от Ilot Посмотреть сообщение
b[++c] = a[idx] - '0';
а вот это лучше использования atoi(), здесь просто вычитается разница между кодами символов.
1
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176
13.11.2014, 19:11  [ТС]
http://savepic.org/6428731.png
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 19:15
к сожалению, этого мало) желательно дебаггером определить на каком шаге прога вываливается
1
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176
13.11.2014, 19:19  [ТС]
Я не умею)
вот код..еслиесть время можеш посмотреть
Кликните здесь для просмотра всего текста
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
43
// ConsoleApplication42.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    
    const int n = 700;
    char s[n], *st,m[n];
    int i = 0, a,in[n],k=0, x;
    int c = -1;
    cout << "Введите строку" << endl;
    cin.getline(s, n);    //ввод методом гетлайн   
 
    cout << endl;
 
    st = strtok(s, ".:;!?"); //выделение 1-ой лексемы (слова)
    st = strtok(NULL, ".:;!?");
    for (i = 0; st[i] != NULL; i++){ m[i] = st[i]; }
 
    for (i = 0; st[i] != NULL; i++){
 
        if (::isdigit(m[i])) {
            in[++c] = m[i] - '0';
            std::cout << in[c] << ' ';
        }
 
 
    }
//  for (i = 0; i < 5; i++){ cout << in[i] << endl; }
 
    _getch();
    return 0;
}


это я уже пытался переделать.

Добавлено через 1 минуту
ну а в целом может я вообще не то делаю?

находит во втором предложении все числа, не превосходящие заданного натурального числа N, двоичная запись которых представляет собой симметричную последовательность нулей и единиц (начинающуюся единицей!).

У меня такое вот задание.Я думал сначала все числа запихать в архив типа инт,а потом сверать их с тем условием.что ты мне помог ))
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 19:22
у меня вот это выполнилось
Миниатюры
Как выделить числа из символьного массива?  
1
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176
13.11.2014, 19:24  [ТС]
Тобиш дело не в коде?
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 19:29
NUBAS, по идее в коде, если на твоем конкретном вводе рухнуло. где-то что-то не учли, не обработали потенциально ошибочную ситуацию. надо проходиться дебаггером при том вводе, который убил прогу.
прости, я убежал, удачи!
1
8 / 8 / 7
Регистрация: 28.10.2014
Сообщений: 176
13.11.2014, 19:35  [ТС]
Довай,и так спасибо)очень помог!
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
13.11.2014, 19:40
Цитата Сообщение от NUBAS Посмотреть сообщение
находит во втором предложении все числа, не превосходящие заданного натурального числа N, двоичная запись которых представляет собой симметричную последовательность нулей и единиц (начинающуюся единицей!).
кстати, это немного отличается от того, что я тебе подсказал. здесь незначащие 0(старшие), похоже, надо отбрасывать до первой единицы (я же этого не делал). завтра в личку мне с утра напиши, я немного переделаю тот пример.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.11.2014, 19:40
Помогаю со студенческими работами здесь

Как удалить элемент символьного массива?
Собственно,в этом весь вопрос.:) Например,находимся мы в массиве из строк (char str) .Неважно в каком месте(допустим,на 5...

Как добраться до элемента символьного массива?
Доброго времени суток всем! Помогите, пожалуйста! Как можно получить доступ к элементу символьного массива? Фактически надо просмотреть...

Как получить строку из символьного массива
Необходимо получить строку из символьного массива размером n (каждый элемент массива - отдельная строка). Объявить можно только одну...

Как скопировать символ из символьного массива в другой массив
Есть массив s и r в обоих по 8 символов + \0 (окончание строки). В s есть символ &quot;т&quot;, как его скопировать, например, в r? Проблема в...

Как вывести на экран именно адрес символьного массива?
Добрый день! Есть два кода с указателями: в одном указатель типа int, во втором типа char. #include &lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru