بعد از اینکه برنامه vs رو پاک کردم و دوباره نصب کردم این مشکل براش اومده
با هر پروژه و برنامه این ارور رو میده :41:
Printable View
بعد از اینکه برنامه vs رو پاک کردم و دوباره نصب کردم این مشکل براش اومده
با هر پروژه و برنامه این ارور رو میده :41:
نقل قول:
آخه مشکلی نیست . این برای همه پیش میاد . یه Warning هست . تیک Don't Show رو بزنین و Yes کنین اجرا می کنه دیگه .
تو VS قبلیتون اون تیک زده شده بود برای همین نشون داده نمی شد . ولی الان باز اومده .
پارکینگی برای توقف تا سه ساعت حداقل 2.0 دلار و برای هر ساعت اضافه یا بخشی از ساعت اضافه بر سه ساعت 0.5 دلار می گیرد.حداکثر مبلغ قابل پرداخت برای هر دوره 24 ساعته 10.0 دلار است.فرض کنید که هیچ خودرویی هر بار بیش از 24 ساعت توقف نمیکند.برنامه ای بنویسید که مبلغ پرداختی را برای هر یک از سه مشتری که روز گذشته خوردوی خود را در این پارکینگ پارک کرده اند محاسبه وچاپ کند.کاربر باید برای هر مشتری تعداد ساعات توقف را وارد کند.برنامه باید نتایج را به صورت جدول زیر چاپ کند و جمع کا مبالغ قبض های روز گذشته را محاسبه و چاپ کند.این برنامه بایذ برای تعیین مبلغ پرداختی هر یک از مشتری ها از تایعی به نام calculateCharges استفاده کند.خروجی برنامه باید به صورت زیر باشد :کد:
Car Hours Charge
1 1.5 2.00
2 4.0 2.50
3 24.0 10.00
TOTAL 29.5 14.50
برنامه:کد:
#include<iostream>
#include<iomanip>
using namespace std;
int calculatecharges(double houre,int number )
{
double remain;
double charge=0;
double sumch;
if (houre==24.00)
{
charge=10.00;
sumch+=charge;
}
else
{
if ((houre>=1.0) && (houre<=3.0))
{
charge=2.00;
sumch+=charge;
}
else
{
remain= houre -3;
charge=(remain*0.5)+2.00;
sumch+=charge;
}
}
cout <<number<<stew(10)<<houre<<setw(10)<<charge<<endl;
return 0;
}
int main(){
cout<<"car"<setw(10)<<"hours"<<setw(10)<<"charge"<<endl;
double hour;
double sumh;
for (int i=1;i<=3;i++){
cin>>hour;
sumh+=hour;
calculatecharges(hour,i );
}
return 0;
}
حالا سوالات من :
اشکال این برنامه کجاست ؟
برای اینکه خط آخر خروجی بده باید چی کار کنم ؟
اگر بخوایم تابع یه مقداری رو به تابع اصلی برگردونه باید چی کار کنیم؟
اشکال دستوریش فقط اینه :
خوب یکی یکی charge رو توسط تابع حساب می کنین و تو یه متغیر می ریزین و آخر سر یکی یکی هر 3 رو چاپ می کنین .کد:#include<iostream>
#include<iomanip>
using namespace std;
int calculatecharges(double houre,int number )
{
double remain;
double charge=0;
double sumch;
if (houre==24.00)
{
charge=10.00;
sumch+=charge;
}
else
{
if ((houre>=1.0) && (houre<=3.0))
{
charge=2.00;
sumch+=charge;
}
else
{
remain= houre -3;
charge=(remain*0.5)+2.00;
sumch+=charge;
}
}
cout <<number<<stew(10)<<houre<<setw(10)<<charge<<endl; // setw اشتباه نوشته شده است
return 0;
}
int main(){
cout<<"car"<setw(10)<<"hours"<<setw(10)<<"charge"<<endl;
double hour;
double sumh;
for (int i=1;i<=3;i++){
cin>>hour;
sumh+=hour;
calculatecharges(hour,i );
}
return 0;
}
دقیقا به جای اینکه آخر تابع نوشتین return 0 ، اونو پاک کنین و هرجا خواستین مقدار برگردونین با همین return برگردونین . مثلا هر جا خواستین sumch رو برگردونین بنویسین return sumch . دقت کنین که هرجا که داخل یه تابع از return استفاده کردین دیگه اجرای تابع اونجا تموم میشه و به خطوط بعدی نمی ره .
این برنامه چیزی مطابق با خواسته کتاب خروجی نمیده . خروجیش اینطوریه که عدد اول رو میگیره میفرسته به تابع نتیجش چاپ میشه بعد عدد دوم و الی آخر . اما کتب خواسته نتایج یه جا نشون داده بشه البته بدون استفاده از آرایه .
بخاطر همین گفتم بیام از توابع Function Overloading (توابع گرانبار شده ) استفاده کنم که خوب اونم باید از نظر نوع پارامتر تعداد یا ترتیب پارامتر باهم فرق داشته باشن که خوب تو این تمرین همه یکسان بود به خاطر همین مجبور شدماسم توابع رو تغییر بدم و چون گفته بود برای 3 تا ماشین به همین دلیل 3 تا تابع تعریف کردم (خداروشکر که گفته بود برای 3 تا !!!)
حالا برای چاپ جدول :
تو تابع اصلی وقتی ساعت هارو گرفتم همون جا هم مقادیر رو جمع کردم ریختم تو total . برای جمع قسمت charge یه متغیر به اسم sumch تعریف کردم که توی توابع به شکل ارسال با ارجاع ازش استفاده کردم .
راه دیگه ای به نظرم نرسید .کد:
#include<iostream>
#include<iomanip>
using namespace std;
void calculatecharges1(double , double& );
void calculatecharges2(double , double& );
void calculatecharges3(double , double& );
int main(){
double hour1;
double hour2;
double hour3;
double sumch=0;
cin >> hour1;
cin >> hour2;
cin >> hour3;
double total=0;
total+=hour1;
total+=hour2;
total+=hour3;
cout << "car" <<setw(10)<<"hours"<<setw(10)<<"charge"<<endl;
calculatecharges1(hour1,sumch);
calculatecharges2(hour2,sumch);
calculatecharges3(hour3,sumch);
cout <<"Total"<<setw(8)<<total<<setw(10)<<sumch<<endl;
return 0;
}
void calculatecharges1(double houre1, double &sumch )
{
double remain;
double charge=0;
if (houre1==24.00)
{
charge=10.00;
sumch+=charge;
}
else
{
if ((houre1>=1.0) && (houre1<=3.0))
{
charge=2.00;
sumch+=charge;
}
else
{
remain= houre1 - 3;
charge=(remain*0.5)+ 2.00;
sumch+=charge;
}
}
cout <<"1"<<setw(10)<<houre1<<setw(10)<<charge<<endl;
}
void calculatecharges2(double houre2, double &sumch)
{
double remain;
double charge=0;
if (houre2==24.00)
{
charge=10.00;
sumch+=charge;
}
else
{
if ((houre2>=1.0) && (houre2<=3.0))
{
charge=2.00;
sumch+=charge;
}
else
{
remain= houre2 - 3;
charge=(remain*0.5)+ 2.00;
sumch+=charge;
}
}
cout <<"2"<<setw(10)<<houre2<<setw(10)<<charge<<endl;
}
void calculatecharges3(double houre3,double &sumch)
{
double remain;
double charge=0;
if (houre3==24.00)
{
charge=10.00;
sumch+=charge;
}
else
{
if ((houre3>=1.0) && (houre3<=3.0))
{
charge=2.00;
sumch+=charge;
}
else
{
remain= houre3 - 3;
charge=(remain*0.5)+ 2.00;
sumch+=charge;
}
}
cout <<"3"<<setw(10)<<houre3<<setw(10)<<charge<<endl;
}
---------- Post added at 12:06 PM ---------- Previous post was at 12:05 PM ----------
حالا یه برنامه دیگه ::20:
یکی از کاربردهای تابع floor گرد کردن یک مقدار به نزدیکترین عدد صحیح است. دستور:
Y=floor(x+0.5)
عدد x را به نزدیکترین عدد صحیح گرد کرده و نتیجه را به y انتساب میدهد. برنامه ای بنویسید که چند عدد را از ورودی خوانده و با استفاده از دستور بالا هریک از آنها را به نزدیکترین عدد صحیح گرد کند. برنامه باید برای هر یک از اعداد پردازش شده ، خود عدد اصلی و نیز عدد گرد شده را چاپ نماید.کد:#include<iostream>
#include<cmath>
using namespace std;
int flor(double x)
{
double y;
if (x!= -1){
y=floor(x+0.5);
cout<<"orginal number: "<<x<<" rounded number: "<< y <<endl;}
else
return 0;
}
int main()
{
double x=0;
do {
cout<<"enter number (for exit enter -1): "<<endl;
cin >> x;
flor(x);
}while(x!=-1);
return 0;
}
این برنامه ای هست که براش نوشتم ، برنامه درست جواب میده اما درست جواب دادن برام ملاک نیست اینکه برنامه رو به شیوه درستش نوشتم یا نه برام مهمه .
لطفا نظر میدید در مورد برنامه .
---------- Post added at 12:07 PM ---------- Previous post was at 12:06 PM ----------
تابع floor را میتوان برای گرد کردن عددی تا تعداد مشخصی رقم اعشار به کار برد.دستور
Y=floor(X*10+.5)/10
مقدار موجود در متغیر x را تا رقم اعشار یک صدم (دومین رقم در سمت راست ممیز)گرد میکند. برنامه ای بنویسید که با تعریف چهار تابع به شکل های زیر عدد number را گرد کند :کد:
a) roundtointeger(x);
b)roundtoTenths(x);
c)roundtoHundredths(x);
d)roundtothousandths(x);
#include<iostream>
#include<cmath>
using namespace std;
int roundtointeger(double x)
{
double y;
if (x!= -1){
y=floor(x+0.5);
cout<<"orginal number: "<<x<<" roundtointeger: "<< y <<endl;}
else
return 0;
}
int roundtoTenths(double x)
{
double y;
if (x!= -1){
y=floor(x*10+0.5)/10;
cout<<"orginal number: "<<x<<" roundtoTenths: "<< y <<endl;}
else
return 0;
}
int roundtoHundredths(double x)
{
double y;
if (x!= -1){
y=floor(x*10+0.5)/100;
cout<<"orginal number: "<<x<<" roundtoHundredths: "<< y <<endl;}
else
return 0;
}
int roundtothousandths(double x)
{
double y;
if (x!= -1){
y=floor(x*10+0.5)/1000;
cout<<"orginal number: "<<x<<" roundtothousandths: "<< y <<endl;}
else
return 0;
}
int main()
{
double x=0;
do {
cout<<"enter number (for exit enter -1): "<<endl;
cin >> x;
roundtointeger(x);
roundtoTenths(x);
roundtoHundredths(x);
roundtothousandths(x);
}while(x!=-1);
return 0;
}
برنامه رو درست نوشتم ؟؟؟چون فقط برای مقادیر اعشاری درست جواب میده و برای مقادیر صحیح اشتباه خروجی میده !!!
چرا کسی راجع به سوالات قبلیم جوابی نمیده :41:
یه سوال دیگه فعلا بپرسم .
تفاوت تابع rand با srand چیه ؟
تو کتاب یه تمرین داده گفته دستوری بنویسید که یکی از اعداد موجود در هر مجموعه را به صورت تصادفی چاپ کند .
اینم مجموعه ها
لطفا یه راهنمایی میکنید ؟ باید برای هر کدوم یه enum تعریف کنم ؟؟؟؟؟؟؟؟کد:
- 2, 4, 6, 8, 10.
- 3, 5, 7, 9, 11.
- 6, 10, 14, 18, 22.
نقل قول:
خب برای گرد کردن میشه این کارو کرد :
مثلا یه double به ما دادن که گرد کنیم . اونو تو یه int ذخیره می کنیم . قسمت اعشاریش از بین میره . حالا اگه اختلاف اون double و int بیشتر از نیم باشه int + 1 رو به عنوان نتیجه چاپ می کنیم و در غیر این صورت int رو .
من متوجه این سوال نشدم اصلا .نقل قول:
تابع rand یه عدد تصادفی ایجاد می کنه و برمیگردونه . ولی این عدد تصادفی ایجاد شده واقعا تصادفی نیست و اگه این تابع رو چند بار اجرا کنین می بینین که دنباله ای تکراری از اعداد تولید میشه . برای اینکه این دنباله هم تصادفی باشه یه مقدار به srand می دیم که به این دنباله مقدار اولیه بده که اونم تصادفی بشه .
مثلا اگه بخوایم اعداد از 1 تا 6 رو به صورت تصادفی ایجاد کنیم میگیم :
rand() % 6 + 1
rand() % 6 از 0 تا 5 ایجاد می کنه که اگه بخوایم از 1 تا 6 باشه + 1 می کنیم .
برا srand اگه بهش ( time ( 0 رو بدیم بهترین حالت تصادفی ایجاد میشه . چون مقدار ( time ( 0 هر لحظخ تغییر می کنه .
((srand ( time (0
sin2x=2sinxcosx سلام.
شما واقعا لطف میکنید که به برنامه هام توجه میکنید و به سوالاتم جواب میدید .ولی یه کم مثل جت از رو سوالام رد میشید به خاطر همین بعضی هاش از زیر دستتون رد میشه ظاهرا.
تو قسمت قبلی من یه سوال دیگه هم کرده بودم :41:
و تو قستم rand و srand بازم آخرش یه سوال مطرح کردم که مربوط میشد به کتاب که راهنمایی خواستم بودم.:20:
نمی دونم کدوم سوال جا موند .
اگه اینو میگین :
تو کتاب یه تمرین داده گفته دستوری بنویسید که یکی از اعداد موجود در هر مجموعه را به صورت تصادفی چاپ کند .
اینم مجموعه ها
کد:
- 2, 4, 6, 8, 10.
- 3, 5, 7, 9, 11.
- 6, 10, 14, 18, 22.
لطفا یه راهنمایی میکنید ؟ باید برای هر کدوم یه enum تعریف کنم ؟؟؟؟؟؟؟؟
گفتم که متوجه نشدم .
شما سوالاتون رو يه دفه ميپرسين آدم زورش مياد بخونتشون :دي
واسه سوال srand لازم نيست enum تعريف كني
شما يه سري اعداد محدود دارين كه مثلا گروه اول 2، 4، 6، 8، 10 هستن
همونطور كه sin2x=2sinxcosx توضيح داد شما براي ايجاد يه عدد تصادفي بين مثلا 1 تا 6 كافيه از rand() % 6 + 1 استفاده كني
حالا براي اين سوال عدد اول 2 هستش عدد آخر 10 و شما بايد با تابع rand() عددي توليد كني كه اعداد فرد بين 2 تا 10 رو شامل نشه يعني بهترين كار ضرب عدد بدست اومده از تايع rand() در عدد 2 هستش كه يه فاصله ي 2 تايي بين اعداد ايجاد ميكنه
خب مسلمه اگه قرار باشه اعداد در 2 ضرب بشن بازه ي پايين rand() بايد باشه 1 و بالاش هم بايد 5 باشه
يعني فرمولمون ميشه
[PHP]2*(rand()%5+1)[/PHP]
دو مجموعه ي بعدي هم همينطوري حل ميشه