PDA

View Full Version : سوال: جداسازی اعداد زوج مرتب



mehran_gh
چهارشنبه 28 فروردین 1392, 18:28 عصر
سلام
چطور میشه با C++‎ یک زوج مرتب رو از ورودی گرفت و اعدادش رو از هم جدا کرد و هرکدوم رو در یک متغیر قرار داد ؟

به عنوان مثال :

Enter Complex Number :
(5 , 6.35)
عدد اعشاری 6.35 در یک متغیر و 5 در یک متغیر دیگه قرار داده شود.

jannatmakan
شنبه 31 فروردین 1392, 01:21 صبح
اگر منظور سوالتون رو درست فهمیده باشم، برنامه ی بسیار ساده ایه.

اوّل فقط کافیه که کلّ عبارت رو به صورت رشته دریافت کنید،

و کاراکتر به کاراکتر از اون رو به وسیله ی یک حلقه ی مثلاً for در یک متغیر عددی ذخیره کنید. (با توجّه به این که می دونید رشته ها همان آرایه های کاراکتری هستند)

و سپس هر کاراکتری را که گرفتید را با کد اسکیِ بازه ی ارقام 1 تا 9 مقایسه کینید یعنی کد 48 تا 57 و در شرط خود بگویید که اگر کد اسکی گرفته شده مساوی با این ها بود، به رشته ای دیگر اضافه کند و بدون علامت نقطه ی اعشار هم اضافه کند. چون که اگر مثلاً عدد 16.35 بود، در واقع همان عدد 1635 تقسیم بر 100 است. که ما اگر تعداد کل ارقام و تعداد ارقام اعشار را داشته باشیم می توانیم آن عدد اعشاری را بدست آوریم. تابع pow هم همانطورکه احتمالاً می دانید، پارمتر اول را به توان پارامتر دوّم می رساند.


شبه کد زیر را ببینید. که همچین هم شبه کد نیست و تقریباً الگوریتم کامل نوشته شده منتها برای این که در کد خودتان دخیل باشید و آن را خط به خط دنبال کنید، کمی آن را ناقص نوشتم.



#include<math.h>
#include<string>
#include<iostream.h>

double convert(string num[],int len,int ashar)
{
int i,d=len,b=0;
double n=0;

for(i=0;i<=len;i++)
{
b=num[i]-48;
n=n+(b*pow(10,d));
d--;
}

n=n/(pow(10,ashar));

return n;
}


**************main
string str,temp;
int ch,point=0;
int i=0,j,a=0,c=0,k=0;
double numbers[100];

cin>>str;

start:
for(;str[i]!=',';i++)
{
for(j=48;j<=59;j++)
{
if(str[i]==str[j])
{
temp[c]=str[i];
if(point==0)
C++‎‎;
else
{
C++‎‎;
a++;
}
}
else if(str[i]=='.')
{
point=1;
}
}
}
numbers[k]=convert(temp,c-1,a);
c=0;
a=0;
k++;
point=0;
if(str[i]!=')')
goto start;

Ananas
شنبه 31 فروردین 1392, 08:42 صبح
یک نکته ی دیگه اینکه اگه می خواید عدد اعشاری رو در کنار عدد صحیح داشته باشید نمیتونید از آرایه استفاده کنید. مثلا همچین کدی میشه نوشت :

float x_f;
int x_i;
cin >> x_i >> x_f;

و یا اینکه از ساختمان یا کلاس استفاده کنید:

struct TIntAndFloat
{
public:
int i;
float f;
};