Извлечь целые числа из строки
Выяснить, есть ли в данной символьной строке фрагменты из подряд идущих цифр, изображающие целые числа без знака. Найти значение наибольшего из этих чисел.Если в этой последовательности нет ни одной цифры, то считать, что это значение равно нулю.
Проблема в том, что у меня получается извлечь только цифры, а нужно числа. Вот что смог сделать.
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 #include #include void main() { setlocale (LC_ALL, "Russian"); char *str = "fdsklj8264 as12382d klj49356df"; int a=0, i, n=0; int mas[100]; for (i=0; str[i]!='\0'; i++) { if ((str[i]>='0') && (str[i]'9')) { mas[n]=str[i]-'0'; n++; } } for (i=0; in; i++) printf ("%d ", mas[i]); for (i=0; in; i++) if (mas[i]>a) a=mas[i]; if (n==0) { a=0; printf ("Наибольшее число в строке: %d", a); } else printf ("Наибольшее число в строке: %d", a); }
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Записать в массив numbers целые числа из строки
Здравствуйте, подскажите пожалуйста как исправить сей конфуз. Есть 2 функции (одна вызывается.

Выделить отдельные целые числа из введенной пользователем строки
Составить программу, которая выделяет отдельные целые числа из введенной пользователем строки.
Если обе строки хранят целые числа со знаком, то на экран вывести сумму чисел
Разработать программу, осуществляющую ввод двух строк, введенных пользователем. Далее, если обе.
Извлечь из строки числа
Нужно извлечь из строки числа. "12/12/12" результат! day = 12; mounth = 12; year = 12; .
101 / 92 / 53
Регистрация: 22.03.2011
Сообщений: 226
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
#include #include #include #include //isdigit() void main() { char *str= "fdsklj8264 as12382d klj49356df"; int max; int flag=0; setlocale (LC_ALL, "Russian"); do { while(!isdigit(*str) && *str!='\0')str++; //sscanf(str,"%d",&buf); if (atoi(str)>0) { if(flag==0) { max=atoi(str); flag++; } if (atoi(str)>max) max=atoi(str); } while(isdigit(*str) && *str!='\0')str++; }while(*str!='\0'); printf ("\nНаибольшее число в строке: %d\n", max); }
Регистрация: 11.12.2012
Сообщений: 14
1 2 3 4 5
#include { . setlocale (LC_ALL, "Russian"); .
За это спасибо.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Извлечь числа из строки
На вход подается строка вида "*####?*##*", где # — цифра, * — последовательность символов (в т.ч.

Как извлечь числа из строки
Предположим что есть такое выражение и оно записано в блокноте (100;200) , Как извлечь из.
Извлечь числа из строки в одну переменную
Допустим, дана строка ( string ), в которую пользователь ввел 3+5=. В данном коде, видит только.
Как из строки получить число c
Нередко в программах встречается ситуация, когда надо преобразовать число в строку или строку в число. Для этой цели в стандартной библиотеке языка С определены функции strtol() и snprintf() .
Из строки в число. strtol
Функция strtol() преобразует строку в число типа long int . Функция определена в заголовочном файле stdlib.h и имеет следующий прототип:
long strtol(const char *restrict str, char **restrict str_end, int base);
- str — строка с числом, которое надо преобразовать в числовой тип. Ключевое слово restrict указывает компилятору оптимизировать код и что никакой другой параметр не будет указывать на адрес данного параметра.
- str_end — указатель на последний символ строки. Данный параметр можно игнорировать, передавая ему значение NULL
- base — основание, система исчисления, в которую надо преобразовать данные (значение от 2 до 36).
Результатом функции является преобразованное число типа long .
Например, преобразуем строку в число в десятичной системе:
#include #include int main(void) < const char * str = "24 flowers"; long result = strtol(str, NULL, 10); printf("Result: %ld\n", result); // Result: 24 return 0; >
В примере выше второй параметр функции никак не использовался — мы ему передавали значение NULL , и функция нормально работала. Однако он может быть полезен, если нам надо получить остаток строки, которая идет после числа:
#include #include int main(void) < const char * str = "24 flowers"; char* str_end; long result = strtol(str, &str_end, 10); printf("Result: %ld\n", result); // Result: 24 printf("Rest of the string:%s\n", str_end); // Rest of the string: flowers return 0; >
Из числа в строку. snprintf
Функция snprintf() преобразует число в отформатированную строку. Функция определена в заголовочном файле stdio.h и имеет следующий прототип:
int snprintf(char *restrict str_buffer, size_t buffer_size, const char *restrict format, . );
- str_buffer — строка, в которую помещается преобразованное число.
- buffer_size — максимальное количество символов строки. Функция записывает в строку buffer-size — 1 байт и добавляет концевой нулевой байт
- format — задает формат преобразования в строку.
При успешном преобразовании функция возвращает количество символов, записанных в строку (исключая концевой нулевой байт). При неудачном преобразовании возвращается отрицательное число.
#include int main(void) < int number = 354; char str [10]; snprintf(str, sizeof str, "%d", number); printf("Result: %s\n", str); // Result: 354 return 0; >
При этом строка форматирования может содержать множество параметров:
#include int main(void) < int count = 3; double price = 79.99; char str [50]; snprintf(str, sizeof str, "Count: %d \tPrice: %.2f", count, price); printf("%s\n", str); // Count: 3 Price: 79.99 return 0; >
Как изьять из строки числа? С++
Дано натуральное число n. От данного числа вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр образованного числа и т. Д. Данную операцию над числом будем выполнять, пока образовано число положительное. Сколько раз будем выполнять данную операцию.
Так вот, я хочу сделать строку (а не число) и потом из неё тягать цифры..Можете подсказать как это воплотить в коде?
Отслеживать
задан 31 июл 2016 в 9:33
468 2 2 золотых знака 11 11 серебряных знаков 25 25 бронзовых знаков
А можно задание перевести на русский или хотя бы на английский:)?
31 июл 2016 в 9:36
@yrHeTaTeJlb, Дано натуральное число n. От данного числа вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр образованного числа и т. Д. Данную операцию над числом будем выполнять, пока образовано число положительное. Сколько раз будем выполнять данную операцию.
31 июл 2016 в 9:37
@goodalien1125: Вот этот текст и положите в вопрос.
31 июл 2016 в 9:45
@goodalien1125, Это можно сделать без использования строк. Получится проще и эффективнее
31 июл 2016 в 9:49
@yrHeTaTeJlb, Да я знаю..но хотел попробовать так..
31 июл 2016 в 9:55
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
перевести число в строку:
std::string s = std::to_string(number); // требует C++11
Если Вам нужна с-строка, то
const char buffer[80]; sprintf(buffer, "%d", number);
Получить числовое выражение символа цифры из символа:
int numeric_digit_value = char_digit_value - '0'; // гарантируется стандартом
Наоборот, из строки в число:
std::string string_value("42"); int numeric_value = std::stoi(string_value); // требует С++11
А вообще, чтобы получить сумму цифр, переводить число в строку не нужно
unsigned sum_of_digits(unsigned value) < unsigned sum = 0; while (value >0) < sum += value % 10; value /= 10; >>
Отслеживать
ответ дан 31 июл 2016 в 9:40
7,461 13 13 серебряных знаков 31 31 бронзовый знак
Не могу понять, как написать..подскажите. И к тому же, мне надо из строки в инт
31 июл 2016 в 9:46
Условно задачу можно разделить на несколько частей.
Преобразование числа в строку
В этом нам поможет std::stringstream
#include #include #include int main() < int value = 123; std::stringstream sstream; sstream
Перебор всех символов строки
Строка это ничто иное как массив char. Перебирать символы можно при помощи оператора []
#include #include int main() < std::string str("123"); for(int i = 0; i < str.size(); ++i)< std::cout >
#include #include int main() < std::string str("123"); std::string::iterator begin = str.begin(); std::string::iterator end = str.end(); while(begin != end)< std::cout >
Преобразование символа char в число int
В стандартной библиотеке C++ нет функции, которая выполняет такое преобразование, но её несложно написать самому
#include #include int charToInt(char c) < return c - '0'; >int main() < char c = '9'; int i = charToInt(c); std::cout
Просуммировать все значения
Можно сделать это вручную при помощи цикла. Но есть алгоритм из std, который может это сделать.
#include #include #include int charToInt(char c) < return c - '0'; >int add(int i, char c) < return i + charToInt(c); >int main() < std::string str = "123"; int summ = std::accumulate(str.begin(), str.end(), 0, add); std::cout
Функция atoi в C++: из строки в число с примерами
Привет! Сегодня мы рассмотрим полезную функцию, которая позволяет преобразовать строку в число. Например, у вас есть строка "1234" и вам нужно получить число 1234 . C/C++ функция atoi отлично справиться с этой задачей. В этом уроке мы начнем с примера, а после попробуем реализовать эту функцию сами.

Как сконвертировать строку в число
Чтобы сконвертировать строку в число можно воспользоваться функцией atoi . Прототип этой функции:
int atoi (const char * str);
- Единственным аргументом функция принимает указатель на строку, которую нужно преобразовать в число.
- Возвращает функция число, которое было в строке. При этом строка не обязана состоять только из ци