Форум программистов, компьютерный форум CyberForum.ru

из char в int со знаком - C++

Восстановить пароль Регистрация
 
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
23.09.2013, 18:13     из char в int со знаком #1
Комплексные числа
C++
1
2
3
4
5
6
7
    zn1 = "1+3i";
    zn2 = "4-5i";
    int r1 = atoi(&zn1[0]);
    int r2 = atoi(&zn2[0]);
    
    int i1 = atoi(&zn1[1,2]);
    int i2 = atoi(&zn2[1,2]);
В итоге то число которое с минусом теряется(( а нужно взять именно со знаком (-5)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 18:13     из char в int со знаком
Посмотрите здесь:

Из CHAR в INT C++
Что есть argc и **argv в функции int main(int argc, char **argv)? C++
int=>char C++
C++ Как превести из char* в int и наоборот из int в char*?
конвертирование (char)int (char*)int C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
23.09.2013, 18:22     из char в int со знаком #2
Вы надеетесь, что zn2[1,2] выдаст Вам подстроку? Это не питон.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.09.2013, 18:36     из char в int со знаком #3
beats, для этих целей лучше использовать шаблон std::complex.
http://www.cplusplus.com/reference/c...ex/?kw=complex
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
23.09.2013, 19:08  [ТС]     из char в int со знаком #4
Цитата Сообщение от Fyret Посмотреть сообщение
Вы надеетесь, что zn2[1,2] выдаст Вам подстроку? Это не питон.
тогда скажи как надо
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
23.09.2013, 19:14     из char в int со знаком #5
Прочти всю строку и найди все числа перед которыми стоит знак " - ", потом используй эту информацию для достижение своей цели (получения числа с минусом).
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
23.09.2013, 19:58  [ТС]     из char в int со знаком #6
Дописал в коде проверку, но в ифе нехочет сравнивать минус с минусом(
C++
1
2
3
4
5
6
7
8
zn1 = "1+3i";
    zn2 = "4-5i";
    int r1 = atoi(&zn1[0]);
    int r2 = atoi(&zn2[0]);
    //45 '-'
    int i1, i2;
    if (&zn1[1] == "-"){ i1 = atoi(&zn1[1,2]) * (-1); } else { i1 = atoi(&zn1[1,2]); }
    if (&zn2[1] == "-"){ i2 = atoi(&zn2[1,2]) * (-1); } else { i2 = atoi(&zn2[1,2]); }
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.09.2013, 20:13     из char в int со знаком #7
Цитата Сообщение от beats Посмотреть сообщение
Дописал в коде проверку, но в ифе нехочет сравнивать минус с минусом(
Это что за извраты? Глядя на ваш код, глаза сломать можно, и это в такой тривиальной ситуации. Учитесь оформлять, ведь среди программистов, которые будут читать ваши изваяния, почти наверняка встретятся маньяки, которые будут знать, где вы живете
В вашем конкретном случае, это будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main(void)
{
    const char *zn1 = "1+3i";
    const char *zn2 = "4-5i";
    int re1 = 0, re2 = 0;
    int im1 = 0, im2 = 0;
 
    re1 = atoi(zn1);
    im1 = atoi(zn1+1);
 
    re2 = atoi(zn2);
    im2 = atoi(zn2+1);
 
    cout <<re1 <<' ' <<im1 <<'\n'
        <<re2 <<' ' <<im2 <<endl;
    
    return 0;
}
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
23.09.2013, 20:22  [ТС]     из char в int со знаком #8
gromo, неразабравшись в ситуации делаешь выводы.
Я указал лишь кусок программы, const char в моем случае неприменимы.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.09.2013, 20:29     из char в int со знаком #9
Цитата Сообщение от beats Посмотреть сообщение
неразабравшись в ситуации делаешь выводы.
ну это твои проблемы, что ты кусок указываешь, телепаты в отпуске.

Если кому понадобится, общий случай:
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 <cstdlib>
using namespace std;
 
int main( int argc, char* argv[] )
{
    const char *zn1 = "168365+43i";
    const char *zn2 = "421-590678i";
    int re1 = 0, re2 = 0;
    int im1 = 0, im2 = 0;
    int signIndex = 0;
 
    const char *zn1_copy = zn1;
    const char *zn2_copy = zn2;
 
    // zn1
    while(*zn1_copy)
    {
        if(*zn1_copy == '+' || *zn1_copy == '-')
            break;
        ++signIndex;
        ++zn1_copy;
    }
    re1 = atoi(zn1);
    im1 = atoi(zn1+signIndex);
    signIndex = 0;
    //------------------------
 
    //zn2
    while(*zn2_copy)
    {
        if(*zn2_copy == '+' || *zn2_copy == '-')
            break;
        ++signIndex;
        ++zn2_copy;
    }
    re2 = atoi(zn2);
    im2 = atoi(zn2+signIndex);
    //--------------------------------------
 
    cout <<re1 <<' ' <<im1 <<'\n'
        <<re2 <<' ' <<im2 <<endl;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 20:34     из char в int со знаком
Еще ссылки по теме:

C++ Подскажите пожалуйста с int main(int argc, char*argv[])
C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
C++ [BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)'

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

Или воспользуйтесь поиском по форуму:
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
23.09.2013, 20:34  [ТС]     из char в int со знаком #10
а кто-то говорил о мой код глаза сломать можно
ладно я заюзал std complex, пока пойдет так. спс
Yandex
Объявления
23.09.2013, 20:34     из char в int со знаком
Ответ Создать тему
Опции темы

Текущее время: 05:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru