# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C > سوال: تبديل رشته ي كاراكتري به عدد

## hsn_abieteh

سلام 
دوستان چطور يك رشته از كاراكترها رو به عدد تبديل كنم؟

----------


## ahmadbadpey

اولا باید بگم که برای تبدیل کاراکتر  عددی به معادل عددی باید   48 را ازکد اسکی کاراکتر کم کنید به عنوان مثال اگر بخواهیم کاراکتر '4' را به 4 عددی تبدیل کنیم به صورت زیر عمل می شود :
int num;
num=int('4')-48
که البته اگر از تابع int هم استفاده نکنیم خود به خود تبدیل نوع صورت می گیرد.

حال اگر بخواهیم یک رشته از کاراکتر ها را تبدیل به عدد کنیم باید از آخرین خانه رشته (البته قبل از کاراکتر تهی) شروع کرده و آنها را در 1، خانه بعدی را در 10 و ... ضرب کنیم . این هم کدش : 

#include<iostream.h>
#include<conio.h>
int main (){
clrscr();
 char s[5];
 unsigned int num=0;
 cout<<"PLEASE ENTER A STRING:"<<endl;
 cin>>s;

  for (int i=3,j=1;i>=0;i--,j*=10){
    num+=((int(s[i])-48)*j);
  }
  cout<<num;
  getch();
 return 0;
  }

----------


## hsn_abieteh

سلام
دوستان فرض کنید یک رشته ی کاراکتری داریم که توش از عدد و کاما پر شده
مثلا 

#include<iostream.h>
#include<conio.h>
void main(void)
{
char t[10]="104,2,31";
int k[10];
}
getch();
}


چطوری می تونم از آرایه ی t اعداد 104 و 2 و 31 رو استخراج کنم و به ترتیب در خونه های آرایه ی k قرار بدم 
در واقع قبل و بعد کاما هر کدوم یک عدد بشن و در خونه ها k قرار بگیرن...

----------


## Salar Ashgi

> سلام
> دوستان فرض کنید یک رشته ی کاراکتری داریم که توش از عدد و کاما پر شده
> مثلا 
> 
> #include<iostream.h>
> #include<conio.h>
> void main(void)
> {
> char t[10]="104,2,31";
> ...


سلام ، با توجه به اینکه کد اسکی ارقام بین 48 تا 57 هستش ، میشه این کار رو بسادگی 

انجام داد :


#include <iostream>
#include <conio>
int main(){
char t[10]="104,2,31";
int a[7];
int f,j=0;
for(int i=0;t[i]!=NULL;i++){
  f = (int)(t[i]);
  if(f>=48 && f<=57)
   a[j++] = t[i]-48;
   }
for(int i=0;i<6;i++)
 cout<<a[i]<<" ";
 getch();
 }


موفق و پیروز باشید !!!

----------


## hsn_abieteh

مرسی
ولی متاسفانه اون کاری که من می خوام رو انجام نمی ده
فکر کنم متوجه نشدید
اینو در نظر بگیرید

#include<iostream.h>
#include<conio.h>
void main(void)
{
char t[10]="104,2,31";
int k[10];
}
getch();
}


من می خوام که تو آرایه ی k که از نوع integer هست مثلا در خانه ی صفرم k عدد 104 چاپ بشه و به همین ترتیب در خانه ی یک عدد دو و در خانه ی دو عدد 31

نمی دونم منظورم رو متوجه شدین؟
خواهش می کنم کمک کنین

----------


## Salar Ashgi

سلام ، من فکر میکردم میخواین اعداد رو تک به تک از رشته جدا کنید ، 

کد مورد نظر :


#include <iostream>
#include <conio>
int main(){
char t[10]="104,2,31";
int a[3];
int p=100,sum1=0,sum2=0,sum3=0;
for(int i=0;i<3;i++){
sum1+=(p*(t[i]-48));
p/=10;}
sum2 = t[4]-48;
sum3 = ((t[6]-48)*10)+(t[7]-48);
//==================
a[0] = sum1;
a[1] = sum2;
a[2] = sum3;
//==================
for(int i=0;i<3;i++)
 cout<<a[i]<<" ";
 getch();
 }
 



موفق و پیروز باشید !!!

----------


## javadyousefi

ba estefade az tabe  :  atoi
ke yek character be onvane argoman migire va int return mikone

----------


## hsn_abieteh

مرسی  دمتون گرم
ولی من می خوام که با یک حلقه ی for اینکارو انجام بده
یه همچین چیزی


#include <iostream.h>
#include <conio.h>
#include<string.h>
void main(void)
{
clrscr();
char t[10]="104,2,31";
int a[10];
int p=100,sum1=0;
int n=strlen(t);
for(int i=0;i<n;i++)
{
if (t[i]==44)
{
int b=0;
a[b]=sum1;
cout << endl << a[b] << endl ;
getch();
b++;
continue;
}
sum1+=(p*(t[i]-48));
p/=10;
}
getch();
}

----------


## hsn_abieteh

نوشتمش
اون چیزی که می خواستم این بود


#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
void main(void)
{
clrscr();
char t[100];
int a[10];
int b=0,c;
int p,sum1=0;
cin>>p;
gets(t);
int n=strlen(t);
for(int i=0;i<=n;i++)
{
if (t[i]==',' || t[i]==NULL)
{
a[b]=sum1;
sum1=0;
b++;
continue;
}
c=(t[i]-48);
sum1=(sum1*10)+c;
cout << endl << sum1 ;
getch();
}
int min=a[0];
for(i=0;i<=b;i++)
{
if(min > a[i])
min=a[i];
}
c=min*p;
cout<<"hade axsar bar :"<<c;
getch();
}
 مرسی بچه ها

----------


## mohammadpmf

سلام،
دستتون خیلی خیلی درد نکنه.




> اولا باید بگم که برای تبدیل کاراکتر  عددی به معادل عددی باید   48 را ازکد اسکی کاراکتر کم کنید به عنوان مثال اگر بخواهیم کاراکتر '4' را به 4 عددی تبدیل کنیم به صورت زیر عمل می شود :
> int num;
> num=int('4')-48
> که البته اگر از تابع int هم استفاده نکنیم خود به خود تبدیل نوع صورت می گیرد.
> 
> حال اگر بخواهیم یک رشته از کاراکتر ها را تبدیل به عدد کنیم باید از آخرین خانه رشته (البته قبل از کاراکتر تهی) شروع کرده و آنها را در 1، خانه بعدی را در 10 و ... ضرب کنیم . این هم کدش : 
> 
> #include<iostream.h>
> #include<conio.h>
> ...

----------

