PDA

View Full Version : مبتدی: خروجی رشته



JavadAmeri
جمعه 23 خرداد 1393, 11:04 صبح
با سلام
من یک تابعی میخوام بسازم که ورودی عدد بگیره و خروجی رشته بده.خروجی عدد راحته ولی میشه خروجی رشته رو توضیح بدید.ممنون

کامبیز اسدزاده
جمعه 23 خرداد 1393, 11:25 صبح
با سلام
من یک تابعی میخوام بسازم که ورودی عدد بگیره و خروجی رشته بده.خروجی عدد راحته ولی میشه خروجی رشته رو توضیح بدید.ممنون

سلام

خب شما باید نوع تابع رو از نوع رشته مشخص کنید و نوع پارامتر ورودی رو از نوع صحیح در نظر بگیرید و در بدنه تابع محاسبات رو انجام و سپس در خروجی نوع رشته رو بازگست یا همان Return بدین به صورت زیر...



string MyFunc(int num)

{

// The operation of variables (num)

return "MyString";

}

محمد فدوی
جمعه 23 خرداد 1393, 13:25 عصر
تابع استاندارد C برای اینکار sprintf هستش:



#include <stdio.h>


...


char str[32];


// Byte/Short/Integer/Long to string:
sprintf(str, "%d", 1234);


// Double/Float to string:
sprintf(str, "%f", 3.14);

motherboard
جمعه 23 خرداد 1393, 14:41 عصر
سوالت رو خیلی کلی پرسیدی. و پاسخی که دوستان دادند به نوعی صحیح هستش.ولی همون طور که می دونید یک تابع می تونه ارگومان داشته باشه و هم خروجی.اونی که داخل پرانتز تابع هستش ورودی هستش.و اونی که قبل از اسم تابع هستش خروجی هستش.خب شما بیا داخل پرانتز رو از نوع int تعریف کن و باز مشخص نیست که قراره با اون ورودی ها چی کار کنید اما چون خروجی رو می خواهید از نوع رشته باشه باید نوع string رو قبل از اسم تابع اضافه کنی(و البته هدرفایل string رو هم باید در اول برنامه اضافه کرده باشی) حالا با استفاده از return بیا یک رشته رو چاپ کن.!!!به همین سادگی.چون سوالتون کلی بود من و دوستان هم کلی پاسخ دادیم.

JavadAmeri
جمعه 23 خرداد 1393, 15:29 عصر
ببخشید دوستان من خیلی به برنامه نویسی نا آگاه نیستم.(توی acm مقام کشوری دارم)
بزارید پروژمو توضیح بدم تا شما هم متوجه بشید چقدر کار مشکلی دارم.
می خوام یک عددی رو بگیرم بعد اون رو با جمع و فاکتوریل و ضرب به اعداد یک تبدیل کنم.طوری که کمترین عدد یک رو بسازه.
مثلا برای
720 ((1+1+1)!)!
یا برای
(1+1+1)*(1+1+1+1)
حالا یکم دلتون برام بسوزه:گریه:
تازه ورودی رو هم باید از فایل بگیرم.وخروجی رو هم باید توی فایل قرار بدم.
فقط خوبی که داره عدد از 10000 بیشتر نیست.
خلاصه:
میخام یک تابعی که با اون رشته توی رشته بنویسم.

JavadAmeri
جمعه 23 خرداد 1393, 15:37 عصر
مرسی کمکتون جواب داد.

محمد فدوی
جمعه 23 خرداد 1393, 15:42 عصر
خب با همون sprintf میتونی کار بکنی دیگه. اینم لینک مرجع استاندارد:
http://www.cplusplus.com/reference/cstdio/sprintf/

این تابع یه اشاره گر کاراکتر (به عنوان رشته)، یه رشته که توش فرمت چیزایی که میخوای بنویسی هست و یک سری آرگومان که چیزایین که میخوای بنویسی رو ازت میگیره و توی اون اشاره گر می نویسه. ببین اینو:

char name = "Iran";
int age = 8000;

char msg[64];
// #include <stdio.h>
sprintf(msg, "My Name is %s. I am %d years old", name, age);

این تابع وقتی به s% میرسه مقدار name رو به عنوان یک رشته به جای s% قرار میده.
اما وقتی به d% میرسه،‌ مقدار age رو به عنوان یک عدد جای d% میذاره... اینا قراردادهای استاندارد print توی ++C هستن. توی لینکی که بت دادم میتونی دقیق تر بررسیش کنی.

موفق باشی.

JavadAmeri
جمعه 23 خرداد 1393, 18:29 عصر
خیلی غشنگ توزیه دادید ممنون.
املام بیثطه.

JavadAmeri
دوشنبه 26 خرداد 1393, 13:32 عصر
نمی دونید چرا خود کامپایلرم ارور could not create process میده؟
کامپایلرم turbo c++ هستش

محمد فدوی
دوشنبه 26 خرداد 1393, 13:45 عصر
اگه از نسخه های جدید تر ++TC استفاده میکنی این خطا موقعی رخ میده که یکی یا چندتا از dllهاش رو پیدا نکنه...

موقعی که باش یه برنامه ساده تست مینویسی اجرا میشه یا در هر صورت چنین خطایی میده؟



در ضمن پرسیدن چندتا سوال تو یه تاپیک غیر قانونیه تو این انجمن (به این دلیل که ممکنه کسی که بعدا اینجا رو میخونه سردرگم کنه و همچنین اگه تو یه تاپیک دیگه پرسیده بشه ممکنه باعث راهنمایی افراد بیشتری هم بشه... هرچند اینجا کسی عادت نداره سوالات نفرای قبل رو بخونه و خودش سریع تاپیک میزنه!). هرچند اگه مدیران این بخش مشکلی نداشته باشن مشکلی نیست! :چشمک:

JavadAmeri
سه شنبه 27 خرداد 1393, 10:22 صبح
ببخشید.من عذر می خوام.حالا همین رو تمومش کنم.
:افسرده:یک بار که یک برنامه سنگین رو اجرا کردم اینجوری شد.بعدش حتی برای برنامه های عادی هم ایراد میگیره.وقتی میام بیرون و میرم تو درست میشه.
تازه یک ارور دیگه هم داره.
General protection Exceotion
0x2317:0x0603
nonamee03(5) 0x0603 Processor Fault

JavadAmeri
سه شنبه 27 خرداد 1393, 10:25 صبح
این هم کل کدمه




#include <iostream.h>
#include <cstring.h>
/////////////////////////////////////
string ja(int d)
{
switch(d)
{
case 1:return "1";
case 2:return "1+1";
case 3:return "1+1+1";
case 4:return "1+1+1+1";
case 5:return "1+1+1+1+1";
}
}
///////////////////////////////////
string strcatt(string a,string b)
{
return a+b;
}
////////////////////////////////////////////////
int f(int d)
{ if(d<6)return d;
if(d>=5040)return d-5033;
if(d>=720)return d-714;
if(d>=120)return d-115;
if(d>=24)return d-20;
if(d>=6)return d-3;
else return d;
}
////////////////////////////////////////
int z(int d)
{if(d<6)return d;
int a[100]={0},g=0;
for(int i=2;i<d;i++)
{if(d%i==0){a[g]=i;g++;}}
if(g%2==0&&g!=0) {return a[(g/2)]+a[(g/2)-1];}
else if(g%2!=0&&g!=0){return a[int(g/2)]*2;}
else
return d;
}
///////////////////////////////////////
string m(int d)
{if(d<6){return ja(d);}
int a1=f(d),a2=z(d);
///////>>>>>>>>>>>
if(a1<a2)//+!
{
if(d>=5040){if(d-5040!=0){return strcatt (strcatt("((1+1+1)!+1)!+(",m(d-5040)),")");}else return "((1+1+1)!+1)!";}
if(d>=720){if((d-720)!=0){return strcatt(strcatt("((1+1+1)!)!+(",m(d-720)),")");}else return "(1+1+1!)!";}
if(d>=120){if((d-120)!=0){return strcatt(strcatt("(1+1+1+1+1)!+(",m(d-120)),")");}else return "(1+1+1+1+1)!";}
if(d>=24){if((d-24)!=0){return strcatt(strcatt("(1+1+1+1)!+(",m(d-24)),")");}else return "(1+1+1+1)!";}
if(d>=6){if((d-6)!=0){return strcatt(strcatt("(1+1+1)!+(",m(d-6)),")");}else return "(1+1+1)!";}
else {char e=d;return e;}
}
//////>>>>>>>>>>>
else if(a1==a2)
{
int a[100]={0},g=0;
for(int i=2;i<d;i++)
{if(d%i==0){a[g]=i;g++;}}
if(g%2==0&&g!=0) cout<<"("<<m(a[(g/2)])<<")*("<<m(a[(g/2)-1])<<")";
else if(g%2!=0&&g!=0) cout<<"("<<m(a[int(g/2)])<<")*("<<m(a[int(g/2)])<<")";
else if(g==0){char e=d;return e;}
} ////////>>>>>>>>>
else
{
int a[100]={0},g=0;
for(int i=2;i<d;i++)
{if(d%i==0){a[g]=i;g++;}}
if(g%2==0&&g!=0) cout<<"("<<m(a[(g/2)])<<")*("<<m(a[(g/2)-1])<<")";
else if(g%2!=0&&g!=0) cout<<"("<<m(a[int(g/2)])<<")*("<<m(a[int(g/2)])<<")";
else if(g==0){char e=d;return e;}
}
}
//////////////////////////////////////////////
int main()
{
int r;
cin>>r;
if(r<6)cout<<r;
else
cout<<m(r);
}