Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
qloaqa
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 7
#1

как преобразовывать в строках символы в числа

08.12.2011, 22:53. Просмотров 2141. Ответов 6
Метки нет (Все метки)

Здравствуйте, я хотел бы узнать, как преобразовывать в строках символы в числа. Допустим, я задаю текст, состоящий из десятичного числа. Как вычислить сумму цифр этого числа?

(Если я правильно понимаю, нужно пройти по строке, найти это число, записать в какую-то переменную, затем вычислить сумму используя деление на 10?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2011, 22:53
Ответы с готовыми решениями:

Заменить символы в строках...
Длины строк произвольные, n и m помогите написать пожалуйста :>

нужно посчитать опреденные символы в строках
Дан файл input.txt со следующими данными: Я - Петя!!!! Я люблю играть! ...

Работа с текстовым файлом (записать в файл строки и символы в строках в обратном порядке)
Всем привет. Извиняюсь может повторяюсь с задачей, но все же... Задача: Дан...

Заменить символами # символы, стоящие в строках или столбцах, где имеются цифры
Вот задача: Задана символьная матрица Y(K, L), K<=7, L<=9, соcтаящая из...

Увеличить в два раза все числа в тех строках матрицы, которые содержат только положительные числа
Дана прямоугольная матрица вещественных чисел размером N*M (N,M- вводим с...

6
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
08.12.2011, 22:59 #2
qloaqa, ну всё Вы правильно понимаете. Пройдитесь по строке и найдите первую цифру числа ( isdigit поможет вам в этом) и потом получите число в виде float с помощью atof.
1
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
08.12.2011, 23:04 #3
C++
1
2
3
4
unsigned int sum = 0;
for ( unsigned int index = 0; index < s.length(); index++ )
    sum += ( s[ index ] - '0' );
std::cout << sum << std::endl;
Это если строка - число.
1
n00b.vcxproj
Кодер
47 / 46 / 7
Регистрация: 10.10.2010
Сообщений: 229
08.12.2011, 23:08 #4
В стандартной кодировке консоли (cp866) код символа '0' == числу 48. Код символа '9' == числу 57. Из этого можно сделать вывод, что чтобы перевести из char в int нужно ввести в переменную типа int код символа числа и вычесть 48.
C++
1
2
3
4
5
char a[5];
int b[5];
a="12345";
for(int i=0;i<5;++i)
b[i]=(int)a[i]-48;
а далее делайте что вам угодно: находите сумму итд;
1
qloaqa
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 7
08.12.2011, 23:37  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
  string str="553";
  if ( isdigit(str[0]) )
  {
    int number, s=0;
    stringstream(str) >> number;
    for (; number !=0; number=number/10){
        s +=number - number/10 *10;
    }
    cout << s <<" ";
    }
  return 0;
}
Всем спасибо за ответы) Я сделал так. Не знаю, правда насколько это грамотно сточки зрения программирования.
0
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
09.12.2011, 01:24 #6
Ну isdigit() я предлагал использовать с той целью чтобы Вы могли продвигаться в цикле по строке в поисках числа, ну например str="число 123" так вот здесь можно в цикле пройтись и проверять i элемент на то явл. ли он числом, если нет - сдвинуться на сл. элемент и так пока не будет найдено число (isdigit не вернёт true) или же не закончиться строка. Но можете оставить как есть, это Вам виднее какое там задание.
0
Olga93
0 / 0 / 0
Регистрация: 09.12.2011
Сообщений: 6
09.12.2011, 22:57 #7
Цитата Сообщение от qloaqa Посмотреть сообщение
for (; number !=0; number=number/10){
s +=number - number/10 *10;
Извините, а не могли бы вы описать, что происходит в данных строках? (Для чего именно делится, а затем умножается на 10 в часности.)
0
09.12.2011, 22:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 22:57

Создать третью строку, которая должна содержать символы, присутствующие одновременно в обеих исходных строках
Ребят, подскажите как сделать.

Не получается чтобы он все символы с текста читал и типа счетчика который считает одинаковые символы как один и плюсует их....Как сделать правильно???
#include&lt; stdio.h&gt; #include&lt; conio.h&gt; #include&lt; string.h&gt; #include...

Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int
// Оператор преобразования #include &lt;iostream&gt; using namespace std; class...


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

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

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