Форум программистов, компьютерный форум, киберфорум
С++ под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
459 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,033
1

Функция для конвертирования string to int

03.10.2019, 15:51. Просмотров 2276. Ответов 7
Метки нет (Все метки)


помогите пожалуйста усовершенствовать это. укажите пожалуйста на ошибки. и скажите что нужно исправить.

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
44
45
#include <iostream>
#include <stdlib.h>
#include <math.h>
 
 
int invert(std::string st){
 
int num=0;
int c;
int a=4;
char v;
 
for(int d=0;; ++d){
a=d;
if(st[d]=='\0'){ break;}
 
}
c=a;
for(int i=0; i<c; ++i){
v=st[i];
switch(v){
 
 
case '1': num+=(1*(pow(10, a-1))); a--; break;
 
case '2': num+=(2*(pow(10, a-1))); a--; break;
case '3': num+=(3*(pow(10, a-1))); a--; break;
case '4': num+=(4*(pow(10, a-1))); a--; break;
case '5': num+=(5*(pow(10, a-1))); a--; break;
case '6': num+=(6*(pow(10, a-1))); a--; break;
case '7': num+=(7*(pow(10, a-1))); a--; break;
case '8': num+=(8*(pow(10, a-1))); a--; break;
case '9': num+=(9*(pow(10, a-1))); a--; break;
 
}
}
return num;
}
 
int main(){
 
 
std::cout << invert("8111");
 
}
Добавлено через 7 минут
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
44
45
46
47
нашел опечатку.  исправил
 
#include <iostream>
#include <stdlib.h>
#include <math.h>
 
 
int invert(std::string st){
 
int num=0;
int c;
int a;
char v;
 
for(int d=0;; ++d){
a=d;
if(st[d]=='\0'){ break;}
 
}
c=a;
for(int i=0; i<c; ++i){
v=st[i];
switch(v){
 
 
case '1': num+=(1*(pow(10, a-1))); a--; break;
 
case '2': num+=(2*(pow(10, a-1))); a--; break;
case '3': num+=(3*(pow(10, a-1))); a--; break;
case '4': num+=(4*(pow(10, a-1))); a--; break;
case '5': num+=(5*(pow(10, a-1))); a--; break;
case '6': num+=(6*(pow(10, a-1))); a--; break;
case '7': num+=(7*(pow(10, a-1))); a--; break;
case '8': num+=(8*(pow(10, a-1))); a--; break;
case '9': num+=(9*(pow(10, a-1))); a--; break;
 
}
}
return num;
}
 
int main(){
 
 
std::cout << invert("8111");
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2019, 15:51
Ответы с готовыми решениями:

Ошибка конвертирования string to int
Всем привет! Очень прошу помощи. в решение проблемы. Переписываю методы на Java, которые...

Too few parameters in call to 'Lechebnica::AddNewElement(int,int,string,string,int,string)
Edit1 Id Edit2 Имя Edit3 Фамилия Edit4 Номер телефона ComboBox1 Услуга ...

Функция для конвертирования систем счисления. Не выходит :(
Помогите решить задачу: Написать функцию, которая получает в качестве аргументов целое...

Блин, для ЧЕГО НУЖНА Функция CREATE TABLE invoice( inv_id INT AUTO_INCREMENT NOT NULL , usr_id INT NOT NULL , prod_id INT NOT NULL , quantity INT NOT
Погуглив, так и не смог толком понять. Есть тут ГУРУ по mysql Которые могут на пальцах или на...

7
6428 / 4318 / 1746
Регистрация: 07.05.2019
Сообщений: 13,174
Записей в блоге: 1
03.10.2019, 17:01 2
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Цитата Сообщение от pcmax Посмотреть сообщение
помогите пожалуйста усовершенствовать это
C++
1
2
3
int n = 0;
for (auto it = s.begin(), end = s.end(); it != end && isdigit(*it); ++it)
     n = n * 10 + (*it = '0');
1
459 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,033
03.10.2019, 18:17  [ТС] 3
уважаемый Олег, я немного не по-теме,но если мне не приснилось,то кажется где -то в си кто-то описывал вариант цикла for кторый пробегал весь массив и завершался. это как бы был аналог цикла for в python.

вот где-то мелькнуло и теперь не дает это покоя. не могу вспомнить. если вы вдруг знаете ,то скажите пожалуйста что это за for такой.
0
6428 / 4318 / 1746
Регистрация: 07.05.2019
Сообщений: 13,174
Записей в блоге: 1
03.10.2019, 20:03 4
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Цитата Сообщение от pcmax Посмотреть сообщение
уважаемый Олег, я немного не по-теме,но если мне не приснилось,то кажется где -то в си кто-то описывал вариант цикла for кторый пробегал весь массив и завершался. это как бы был аналог цикла for в python.
Наверное, вот такой
C++
1
2
3
4
std::string s = "12345";
int n = 0;
for (char сh: s)
     n = n * 10 + (ch - '0');
1
459 / 70 / 6
Регистрация: 29.01.2018
Сообщений: 1,033
04.10.2019, 08:20  [ТС] 5
похож))))))))))))))
0
Модератор
1212 / 648 / 121
Регистрация: 23.07.2018
Сообщений: 2,101
Записей в блоге: 3
04.10.2019, 11:21 6
В K&R, скорее всего, есть учебная реализация atoi().

А Вы цифру '0' не собирались обрабатывать?
0
6428 / 4318 / 1746
Регистрация: 07.05.2019
Сообщений: 13,174
Записей в блоге: 1
04.10.2019, 11:23 7
Цитата Сообщение от politoto Посмотреть сообщение
А Вы цифру '0' не собирались обрабатывать?
В смысле?
0
Модератор
1212 / 648 / 121
Регистрация: 23.07.2018
Сообщений: 2,101
Записей в блоге: 3
04.10.2019, 11:29 8
Простите, это вопрос к оригинальному коду, опубликованному pcmax
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2019, 11:29

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

Функция isspace и тип string: Не существует подходящей функции преобразования из "std::string" в "int"
Добрый день! Я только начинаю изучать язык c++ по книге &quot;Язык программирования С++. Базовый курс...

Есть ли стандартная функция приведения переменной типа String к типу int?
Подскажите, пожалуйста, есть ли стандартная функция приведения переменной типа String к типу int?...

Конвертирования float в string
Доброго времени суток...кто может обяснить что означает каждая строка... string *ch = new string,...

Есть какая-то функция считающая кол-во символов в string, и возвращающая на выходе значение int?
Или самому писать? Если да, то как проще?


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

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

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