PDA

View Full Version : دلیل error برنامه و دریافت نکردن عدد



fshb_ 1370
چهارشنبه 03 شهریور 1389, 16:33 عصر
سلام
من میخوام در برنامه زیر بعد از واردکردن incomes، وارد عملیات بشه و جمله رو در خروجی نمایش بده. ولی انقدر دریافت incomes رو ادامه میده تا کاربر عدد منفی و یا حروف رو وارد کنه.
شرط حلقه من این که در صورت دریافت حرف یا عدد منفی از حلقه بیرون بیا، ولی اگر کاربر یک عدد وارد کرد، خروجی رو نمایش بده(cout<<"tax:"<<tax<<endl) ولی نمیدونم چرا این برنامه در صورت دریافت عدد، خروجی رو نمایش نمیده. چرا؟؟ مشکل از کجاست؟؟:ناراحت:

وقتی incomes رو هم از نوع double قرار میدم از جملاتی که شامل % هستند error میگیره. چرا؟

کد:


#include<iostream>
using namespace std;
int main()
{
int incomes=0;
double tax=0;
cout<<"enter incomes for calculate tax:";

while(cin>>incomes&&incomes>=0);
{
if (incomes%5000>=0)
{
tax+=0/100*5000;
if (incomes>=5000)
incomes-=5000;
if(incomes%10000>=0&&incomes>=10000)
{
tax+=10000*0.1;
incomes-=10000;
}
if(incomes%20000>=0&&incomes>=20000)
{
tax+=20000*0.15;
incomes-=20000;
}
if(incomes>0)
tax+=incomes*0.2;
}
cout<<"tax:"<<tax<<endl;
}
return 0;
}


پیشاپیش ممنون

Salar Ashgi
چهارشنبه 03 شهریور 1389, 22:23 عصر
کد اصلاح شد ./



#include <iostream>
#include <conio>
//using namespace std;
int main()
{
int incomes=0;
double tax=0;
cout<<"enter incomes for calculate tax:";
cin>>incomes;
while(incomes>=0)
{
if (incomes%5000>=0)
{
tax+=0/100*5000;
if (incomes>=5000)
incomes-=5000;
if(incomes%10000>=0&&incomes>=10000)
{
tax+=10000*0.1;
incomes-=10000;
}
if(incomes%20000>=0&&incomes>=20000)
{
tax+=20000*0.15;
incomes-=20000;
}
if(incomes>0)
tax+=incomes*0.2;
}
cout<<"tax:"<<tax<<endl;
cout<<"=================\n";
cout<<"Enter incomes :\n";
cin>>incomes;
}
getch();
}


توضیح : مهمترین اشکال اینکه شما جلوی حلقه While
; گذاشته بودید ، که این باعث میشد یه loop بی نهایت
بوجود بیاد و اینکه بهتره گرفتن ورودی incomes داخل حلقه
انجام بشه و نه در ورودی شرط حلقه ./