PDA

View Full Version : سوال: تبديل رشته ي كاراكتري به عدد



hsn_abieteh
چهارشنبه 20 خرداد 1388, 16:09 عصر
سلام
دوستان چطور يك رشته از كاراكترها رو به عدد تبديل كنم؟

ahmadbadpey
چهارشنبه 20 خرداد 1388, 17:31 عصر
اولا باید بگم که برای تبدیل کاراکتر عددی به معادل عددی باید 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
چهارشنبه 24 تیر 1388, 23:09 عصر
سلام
دوستان فرض کنید یک رشته ی کاراکتری داریم که توش از عدد و کاما پر شده
مثلا


#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
پنج شنبه 25 تیر 1388, 11:30 صبح
سلام
دوستان فرض کنید یک رشته ی کاراکتری داریم که توش از عدد و کاما پر شده
مثلا


#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 قرار بگیرن...

سلام ، با توجه به اینکه کد اسکی ارقام بین 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
پنج شنبه 25 تیر 1388, 14:54 عصر
مرسی
ولی متاسفانه اون کاری که من می خوام رو انجام نمی ده
فکر کنم متوجه نشدید
اینو در نظر بگیرید


#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
پنج شنبه 25 تیر 1388, 15:44 عصر
سلام ، من فکر میکردم میخواین اعداد رو تک به تک از رشته جدا کنید ،

کد مورد نظر :



#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
جمعه 26 تیر 1388, 01:59 صبح
ba estefade az tabe : atoi
ke yek character be onvane argoman migire va int return mikone

hsn_abieteh
جمعه 26 تیر 1388, 08:17 صبح
مرسی دمتون گرم
ولی من می خوام که با یک حلقه ی 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
جمعه 26 تیر 1388, 16:26 عصر
نوشتمش
اون چیزی که می خواستم این بود



#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
پنج شنبه 02 خرداد 1392, 12:32 عصر
سلام،
دستتون خیلی خیلی درد نکنه.


اولا باید بگم که برای تبدیل کاراکتر عددی به معادل عددی باید 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;
}