خرد کردن واحد پولی - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

خرد کردن واحد پولی

0 امتیاز
سلام دوستان عزیز من میخوام برنامه ای بنویسم که nنشان دهندهی یک مقدار معین پول باشد و از ورودی خوانده میشود و سپس  آن را بر حسب بزرگ ترین اسکناس های رایج کشور خرد کنیم
سوال شده اردیبهشت 3, 1393  بوسیله ی Mr.Mohammad (امتیاز 189)   17 17 24
دوباره تگ گذاری شد اردیبهشت 4, 1393 بوسیله ی مصطفی ساتکی
خب باید مشخص کنی چه اسکناس هایی داری - بزگرترین اسکناس چیه و...
دوست من ما در ایران هستیم و بزرگ ترین اسکناس ما 10 هزار تومان هست
با بزرگترین اسکناس شروع کن و مدام از n کم کن. وقتی که n کم تر از اسکناس مذکور شد، با اسکناس ارزون تری کار رو ادامه میدیم
بعد 10000 میشه تراول 50000 تا حالا نشده برین بانک تراول 50000 بده بعدم الگوریتم خوب اینه که اگه طرف 100 هزار پول خواست یه 50 تومنی بده 4 تا دهی و یه 5ی و 5 تا هزاری
کلا سعی بشه هم اسکن کوچیک بده هم بزرگ
@StefanSalvatore  این روشی که گفتی الگوریتم greedy حساب میشه(انتخاب بهترین جواب در هر مرحل ) وهمیشه جواب درست نمیده شما فرض کن 12 پول داری و اسکناس ها هم 10 تومن و3 تومنی هستن
مشابه همین سوال داخل کتاب introduction to algorithm هم هست و حل شده .
درست؛ ممنون از نظرتون
اما این جا اسکناس 2000 تومانی و 1000 تومانی داریم و دو عدد 1 و 2 نسبت به هم اول هستند
پس مشکلی پیش نمیاد و حریصانه جواب میده

2 پاسخ

+1 امتیاز
//in the name of god
//sajjad -- senator
#include <iostream>
using namespace std;
int main(){
    int n;
    cin >> n;
    int dahhezar = 0;
    for(int i =1;n >= 10000;i++){
        n = n-10000;
        dahhezar++;
    }
    int panjhezar = 0;
    for(int q = 1;n >= 5000;q++){
        n = n-5000;
        panjhezar++;
    }
    int dohezar = 0;
    for(int e = 1;n >= 2000;e++){
        n = n-2000;
        dohezar++;
    }
    int hezar = 0;
    for(int r = 1;n >= 1000;r++){
        n = n-1000;
        hezar++;
    }
    cout << dahhezar << " ta"<< "--->" <<  "10000 tomani" << endl;
    cout << panjhezar <<" ta"<<"--->" << "5000 tomani" << endl;
    cout <<  dohezar <<" ta"<<"--->"<<"2000 tomani" << endl;
    cout <<  hezar <<" ta"<<"--->" <<"1000 tomani" << endl;
    cout << n << "ham baghi mimanad" << endl;
}

 

پاسخ داده شده اردیبهشت 4, 1393 بوسیله ی senator77 (امتیاز 226)   5 14 25
0 امتیاز

سلام خسته نباشید

#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	long int n, n2;
	int T50000 = 0, T10000 = 0, T5000 = 0;
	cin >> n;
	
	n2 = n;
	if(n2 >= 50000)
	{
		T50000 = n2 / 50000;
		n2 -= T50000 * 50000;
	}
	
	if(n2 >= 10000)
	{
		T10000 = n2 / 10000;
		n2 -= T10000 * 10000;
	}
	
	if(n2 >= 5000)
	{
		T5000 = n2 / 5000;
		n2 -= T5000 * 5000;
	}

	cout << "mablaghe asli: "    << n      << endl
	     << "Tedade 50 hezari: " << T50000 << endl
	     << "Tedade 10 hezari: " << T10000 << endl
      	 << "Tedade 5 hezari: "  << T5000  << endl;

	return 0;
}
پاسخ داده شده تیر 3, 1393 بوسیله ی امیدوار (امتیاز 872)   21 63 76
ویرایش شده تیر 15, 1393 بوسیله ی امیدوار
100000 هم اومد یه if براش اضافه کن
...