PDA

View Full Version : سوال: احضار تابع در حلقه تکرار



ahmad-hagh
شنبه 07 خرداد 1390, 11:20 صبح
سلام دوستان
من یه تابع واسه مقلوب کردن یه عدد رو به دو صورت نوشتم و هر دو تابع به درستی کار میکنن
اما تو برنامم نیاز دارم از این تابع چندین بار در یه حلقه تکرار استفاده کنم
ولی وقتی این کار رو میکنم برنامم فقط 6 بار تابع رو درست احضار میکنه .و از بار ششم به بعد تابع درست کار نمیکنه
اگه بگین مشکلش کجاست ممنون میشم ( برنامه معکوس اعداد کوچکتر مساوی n (مقدار ورودی) رو چاپ میکنه)

#include<iostream>
#include<conio.h>
#include "dos.h"

using namespace std;

inline float Rev(float num)
{
int *n,*x,*s1;
n=new int;
x=new int;
s1=new int;
*s1=0;
int *len,*left,*right;
len=new int;
left=new int;
right=new int;
*right=1;
*left=num;
while(*left>0)
{ *right*=10;
*left/=10; }
for(;num-((long)num)>0;num*=10){}
*n=num;
while(*n>0)
{*x=(*n)%10;
*s1=(*s1)*10+*x;
*n=(*n)/10;
}
float m=(float)(*s1)/(*right);
delete x,n,left,right,len,s1;
return m;
}

float Rev2(float num)
{
int n,x,s1=0;
int len,left,right=1;
left=num;
while(left>0)
{
right*=10;
left/=10;
}
for(;num-((long)num)>0;num*=10){}
n=num;
while(n>0)
{
x=n%10;
s1=s1*10+x;
n=n/10;
}
return ((float)s1/right);
}


int main()
{
float n;
do{
cout<<"Please insert n (maximum length=6 and n>0) :";
cin>>n;
}while(n<0);

// for(int i=0;i<n;++i)
// if(i==Rev(i))cout<<i<<"\t";
cout<<endl;
float g;
//register float f=0.1;
//for(float i=0.5; i<n; i+=0.5)
for (float i=0.1 ; i<=n; i+=0.1)
{
//if ( f==Rev(f))

cout<<Rev(i)<<"\t";
}
getch();
return 1;
}

tdkhakpur
یک شنبه 08 خرداد 1390, 13:31 عصر
نمیدانم برای چی از تخصیص حافظه اون هم برای متغییری از نوع int به صورتی که در کدتان هست استفاده نمودید اما اگر هدفتان مقلوب شدن اعداد هست میشه این


#include<iostream>
#include<conio.h>
#include "dos.h"
using namespace std;
inline int Rev(int num)
{
int res=0;
while(num>0)
{
res *= 10;
res += num%10;
num /= 10;
}
return res;
}
int main()
{
int n;
do{
cout<<"Please insert n (maximum length=6 and n>0) :";
cin>>n;
}while(n<0);
cout<<Rev(n)<<"\t";
getch();
return 1;
}

ahmad-hagh
یک شنبه 08 خرداد 1390, 15:02 عصر
[QUOTE=tdkhakpur;1272432]نمیدانم برای چی از تخصیص حافظه اون هم برای متغییری از نوع int به صورتی که در کدتان هست استفاده نمودید اما اگر هدفتان مقلوب شدن اعداد هست میشه این

[QUOTE=tdkhakpur;1272432]

ممنون از برنامتون. اما تابع من مشکلی نداره. اون تخصیص حافظه رو هم واسه احتیاط نوشتم (2تا تابع Rev دارم)
اولا تابع باید بتونه اعداد اعشاری رو مقلوب کنه
ثانیا مشکل اینجاست که وقتی تابع ام رو تو حلقه تکرار فراخوانی میکنم. تابع فقط 6 بار درست کار میکنه (نیاز دارم تا تابع چندین بار احرا بشه . ولی تابع شما تو برنامتون یه بار احضار میشه)
عکس ضمیمه رو ببینید