PDA

View Full Version : معکوس عدد اعشاری در زبان C



minaaaa
یک شنبه 24 آبان 1383, 23:22 عصر
:گیج: :

mes
سه شنبه 26 آبان 1383, 01:44 صبح
اول این عدد اعشاری مثلا 2391.4962 رو تو یه اینتیجر قرار میدیم تا مقدار صحیحش روبهمون بده
بعد این مقدار رو با تقسیم مکرر بر 10 به تعداد لازم و برداشتن باقیمونده معکوس میکنیم.
بعد از عدد فلوت ایتیجرش رو کم میکنیم تا وقتی که باقیمونده این عدد فلوت بر اینتیجر خودش صفر فلوت بشه در ده ضرب میکنیم بعد مثل بالایی معکوس میکنیم.
همه اینارو که برداشتیم تو یه آرایه ای چیزی ذخیره بعد هر بلایی میشه سرشون آورد.
Ok?

aakh1361
سه شنبه 26 آبان 1383, 13:31 عصر
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
void main()
{
clrscr();
double f;
double A;
char *str;
int n=7;

f=12345.67;

gcvt(f,n ,str);
printf("Double = %s \n", str);

strrev(str);
A = atof(str);

printf("string = %s \nDouble = %f\n", str, A);

};

zare57
شنبه 24 فروردین 1387, 07:54 صبح
mes جان من همین روش تو رو میرم ولی وقتی عدد صحیح رو از اعشاری کم می کنم یک مقدار تقریبی میده . مثلا 24.3251 رو منهای 24 می کنم ولی جواب 0.3250999998 میشه. البته متغیر ها رو هم از نوع Float هم Double و هم long double گذاشتم گفتم شاید در دقت تاثیر داشته باشه ولی باز هم همون شد. من باید چی کار کنم. ؟

MRHagh
شنبه 24 فروردین 1387, 11:59 صبح
این برنامه قسمت صحیح و اعشار عدد را از هم جدا میکند و تعداد ارقام اعشار را در متغیر counter ذخیره میکند . میونید در قسمتهایی از برنامه ازش استفاده کنید .

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
double value,h;
float Fvalue;
int Ivalue,counter=0;
printf("Enter value:");
scanf("%lf",&value);
Ivalue=floor(value);
Fvalue=value-floor(value);
while(++counter)
{
Fvalue*=10;
h=ceil(Fvalue);
if (ceil(Fvalue)-Fvalue<=0.1)
break;
}
printf("\n%d\n\n%g\n\n%d", Ivalue, h, counter);
getch();
}
برای مثال وقتی عدد 12.53 را وارد کنید در خروجی خواهید داشت :

Enter value : 12.53
12

53

2
که بترتیب از بالا به پایین عدد اول قسمت صحیح , عدد دوم قسمت اعشار و عدد سوم تعداد ارقام اعشار است .
موفق باشید ...