Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 22:21   #1
yali
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 13
Вопрос перевод из char в int и наоборот.

перевод из char в int и наоборот.
Доброго времени суток уважаемые программисты.
У меня вопрос. Как можно перевести символ типа char в цифру от 1 до 9.
Пример программы таков:
char mass[100]=”1+2-4*3/6”;
int chislo[10];
далее нужно преобразовать элементы строчного массива в элементы числового массива
чтобы было так:
chislo [0]=1
chislo [1]=2
chislo [2]=4
chislo [3]=3
chislo [4]=6
далее у меня есть программа которая производит вычисления над ними
и в конце нужно чтобы число перевести в строковый массив типа char
примерно так
chislo [0]=234
перевести в mass[]=’234’
а вот как это делается перевод я не знаю. Подскажите что можно сделать?
yali вне форума Ответить с цитированием
Старый 10.12.2010, 22:27   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Для перевода char в цифру, используйте ch - '0'; Для char[] в число и наоборот, есть такие функции atof (atoi) и itoa.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 10.12.2010, 23:18   #3
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

можно проще,
int('0') = 48;
int('1') = 49;
int('2') = 50;
и так далее

вот на коленке написанный код:

Код:
int a=1;
int f=0;//счетчик для символьного массива
int g=1;//десятки, сотни и тд
int strl=strlen(mass);

for (int i=9;i>=0;i--){			//идем с конца, чтобы нормально обрабатывать не только единицы, но и десятки, сотни и тд
g=1;						//единицы, десятки, сотни	
	while(a){
	a=1;
	switch(mass[f]){
		case '+':case '-':case '*':case '/':a=0;break;
		default: chislo[i]=g*((int mass[f])-48);g=g*10;
	}
	f++;
	}
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 10.12.2010 в 23:22.
kaljan775 вне форума Ответить с цитированием
Старый 12.12.2010, 01:10   #4
yali
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Syuf Посмотреть сообщение
Для перевода char в цифру, используйте ch - '0'; Для char[] в число и наоборот, есть такие функции atof (atoi) и itoa.
не получаеться. при atof=15 пишет C:\Dev-Cpp\main.cpp invalid conversion from `char' to `const char*'
а при itoa ошибку при подключении этой функции.
yali вне форума Ответить с цитированием
Старый 12.12.2010, 02:14   #5
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

а мой пример вы не поняли, да....
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 12.12.2010, 02:55   #6
yali
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
а мой пример вы не поняли, да....
А ваш пример, а точнее часть его очень даже пригодилось.
я щас разработаю код и выложу. За ранее скажу огромное спосибо за мысль и идею.

вот код программы. его можно сокротить введя функчии и указатели. но это потом.
Код:
char str_2[100]="(1203+123-345/321*3214)";
int chislo[15];
int chisel[15];
char znak[50];
int a,i,f,g;//разные счётчики.
for(int i=0;i<15;i++)
{
    chislo[i]=0;
    chisel[i]=0;     
}
a=0;
i=0;
g=0;
for(f=0;f<100;f++)
{
	switch(str_2[f]){
    case '+':znak[i]=str_2[f];
    for(g=0;g<a;g++)
    {
            chisel[i]=chisel[i]*10+chislo[g];            
            chislo[g]=0;
    }
    g=0;a=0;i++;
    break;
    case '-':znak[i]=str_2[f];for(g=0;g<a;g++)
    {
            chisel[i]=chisel[i]*10+chislo[g];
            chislo[g]=0;
    }
    g=0;a=0;i++;break;
    case '*':znak[i]=str_2[f];for(g=0;g<a;g++)
    {
            chisel[i]=chisel[i]*10+chislo[g];
            chislo[g]=0;
    }
    g=0;a=0;i++;break;
    case '/':znak[i]=str_2[f];for(g=0;g<a;g++)
    {
            chisel[i]=chisel[i]*10+chislo[g];
            chislo[g]=0;
    }
    g=0;a=0;i++;break;
    case '0':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '1':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '2':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '3':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '4':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '5':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '6':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '7':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '8':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;
    case '9':chislo[g]=((static_cast<int>( str_2[f] ))-48);g++;a++;break;    
    case ')':znak[i]=' ';     
    for(g=0;g<a;g++)
    {
            chisel[i]=chisel[i]*10+chislo[g];
            chislo[g]=0;
    } break;
	default:break;
}
}		
	
for(int i=0;i<5;i++)
{
    cout<<chisel[i]<<"  "<<znak[i]<<endl;    
}

Последний раз редактировалось Stilet; 12.12.2010 в 12:55.
yali вне форума Ответить с цитированием
Старый 12.12.2010, 13:01   #7
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':chislo[g]=(static_cast<int>( str_2[f] ))-48);g++;a++;break;
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char to int kezman Общие вопросы C/C++ 3 24.07.2008 08:59
из char в int llin Общие вопросы C/C++ 13 11.07.2008 06:51
из char в int?? Mika Общие вопросы C/C++ 4 20.06.2008 15:18
перевод из int в массив char. Freeman Общие вопросы C/C++ 5 30.05.2008 17:49
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17