PDA

View Full Version : سوال: مشکل تغییر مبنا



SEZAR.CO
جمعه 21 آبان 1395, 17:51 عصر
با سلام
این برنامه تا عدد 24 درست کار میکند ولی از 25 به بعد درست کار نمی کنه
لطفا راهنماییم کنید...
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int c=0,i=0,x=0;
cin>>x;
while(x>0)
{
c = (x%5)*pow(10,i)+c;
i++;
x=x/5;
}
cout<<c;

}

BeginnerProgrammer
سه شنبه 02 آذر 1395, 18:19 عصر
این الان برنامه تغییر مبنا از 5 به دهه؟؟؟ اگه اینه که باید بجای 5ها 10 بزاری و ب جای 10، 5 بزاری.

SEZAR.CO
پنج شنبه 04 آذر 1395, 10:02 صبح
سلام
ببخشید که توضیح کم دادم
نه خیر . از 10 به 5

BeginnerProgrammer
پنج شنبه 04 آذر 1395, 21:11 عصر
اینکه درست کار میکنه :متفکر::متفکر:

a.r.khoshghalb
سه شنبه 09 آذر 1395, 12:22 عصر
با سلام
این برنامه تا عدد 24 درست کار میکند ولی از 25 به بعد درست کار نمی کنه
لطفا راهنماییم کنید...
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int c=0,i=0,x=0;
cin>>x;
while(x>0)
{
c = (x%5)*pow(10,i)+c;
i++;
x=x/5;
}
cout<<c;

}




سلام
نمیدونم چرا ولی تابع pow داشت مشکل ایجاد میکرد و از 25 به بعد یکی کمتر میشد جواب!
یه تغییر کوچیک دادم تو کدتون، به جای اینکه از تابع pow استفاده شه، خودم توان رو حساب کردم،
توضیح هم اینکه به جای اینکه هر بار i رو یکی زیاد کنیم و بعد 10 به توان i رو حساب کنیم، همونجا به جای اینکه i رو زیاد کنیم، آخرین توانی که داشتیم رو یکی بیشتر میکنیم (یعنی ضرب در 10 میکینم)
کد رو ببینین متوجه میشین:





#include <iostream>


#include <math.h>

using namespace std;

int main()
{
int c=0,i=0,x=0;
cin>>x;

int poww = 1; // ADDED

while(x>0)
{

//c = (x%5)*pow(10,i)+c; DELETED
c = (x%5)*poww + c; // ADDED

//i++; DELETED
poww = poww*10; // ADDED

x=x/5;

}
cout<<c;
}



ویرایش: به نظر میاد نمایش کد فروم کار نمکینه و خیلی بد داره دیده میشه، کد رو اینجا کپی کردم، از اینجا ببینین:
http://paste.ubuntu.com/23552512/