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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
#1

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

23.09.2013, 18:13. Просмотров 384. Ответов 9
Метки нет (Все метки)

Комплексные числа
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)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 18:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос из char в int со знаком (C++):

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Как превести из char* в int и наоборот из int в char*? - C++
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Форматирование строк, char to int & int to char - C++
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn str_to_num(const str) // Тупо...

Подскажите пожалуйста с int main(int argc, char*argv[]) - C++
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc>1 то программе передан хотя бы один аргумент, если...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

9
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
23.09.2013, 18:22 #2
Вы надеетесь, что zn2[1,2] выдаст Вам подстроку? Это не питон.
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.09.2013, 18:36 #3
beats, для этих целей лучше использовать шаблон std::complex.
http://www.cplusplus.com/reference/complex/complex/?kw=complex
0
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
23.09.2013, 19:08  [ТС] #4
Цитата Сообщение от Fyret Посмотреть сообщение
Вы надеетесь, что zn2[1,2] выдаст Вам подстроку? Это не питон.
тогда скажи как надо
0
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
23.09.2013, 19:14 #5
Прочти всю строку и найди все числа перед которыми стоит знак " - ", потом используй эту информацию для достижение своей цели (получения числа с минусом).
0
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
23.09.2013, 19:58  [ТС] #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]); }
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.09.2013, 20:13 #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;
}
0
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
23.09.2013, 20:22  [ТС] #8
gromo, неразабравшись в ситуации делаешь выводы.
Я указал лишь кусок программы, const char в моем случае неприменимы.
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.09.2013, 20:29 #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;
}
0
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
23.09.2013, 20:34  [ТС] #10
а кто-то говорил о мой код глаза сломать можно
ладно я заюзал std complex, пока пойдет так. спс
0
23.09.2013, 20:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 20:34
Привет! Вот еще темы с ответами:

конвертирование (char)int (char*)int - C++
Вопрос такой каким образом можно выполнить вот такую операцию: у нас есть: int c = 12; char d = ''PS &quot;; Получиться должно...

[BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)' - C++
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream.h&gt; #include&lt;windows.h&gt; #include&lt;cstring.h&gt; #include&lt;string.h&gt; ...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int - C++
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char, и еще число int?

Что есть argc и **argv в функции int main(int argc, char **argv)? - C++
Здраствуйте, уважаемые кодеры! Что означает argc и **argv в функции int main(int argc, char **argv), ни как не могу понять эти переменные...


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

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

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