الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خوارزمية محيرة...

بدأه المارد01 في 16 يوليو 2008 · 9 رد · 1,014 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني انا من محبين الخوارزميات ومسائلها فمن خلال التصفح وجدت سؤال وحيرني وبصراحة عجزت عن تحليلة والتوصل للكود تاعة ...

الفكرة من السؤال اذا في مجال تساعدوني...

الي هي عملية فك العملة والنص بالانجليزي من المصدر...

A famouse computer science problem is the coin min. problem.Gives a set of coin values (ex. 1,5,10,25,50 or 2,3,8,25,40 ) and particular price,find the fewest coins that make that particular value. For example, gives coin values of 2,3,8,25,40, the fewest of 50 is 2 (25 and 25 ).

One possible solution is the greedy solution: To find the fewest coins,assume you use as many as possible of the most expensive coin, and then as many as possible of the next most expensive coin, and so on and so far..

write thats what this problem is about by writting a pseudo code and analyze it. Convert psedo code to C++ cod...

#2

مسالة مشهورة و بتلاقي الشرح والحلول على النت

http://myweb.lmu.edu/dondi/share/intro/pseudocode.pdf

http://www.daniweb.com/forums/thread111034.html

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#3

مشكور اخي بس انا عارف انها مشهورة بس والله عقدتني هي ومسألة ثانية رح ارد اجرب حلها واذا ما قدرتش بتمنى تساعدني...

#4

شكرا اخibr_exn الرابط الاول به شرح وافي وبالنسبة لك اخي المارد اقرأ الشرح وانا باذن الله سأضع الكود لك

فعلا ما أحلى الخوارزميات !

#5

تفضل أخي الكود :

#include <iostream>
using namespace std;

void make_money(int,int[4],int);
int Create_sub(int& , int );

void main()
{
	int amount = 87, list[5] = { 50 , 25 , 10 , 5 ,1};
make_money(amount,list,5);
}

void make_money(int amount,int list[5],int items)
{
	int counted[5],i;

	for(i=0; i<items;i++)
	{
		counted = Create_sub(amount,list);
		cout << counted << endl;
	}
}

int Create_sub(int& amount , int demo)
{
	int count=0;
	while(amount >= demo)
	{
		count++;
		amount-=demo;
	}
return count;
}

كل ما تحتاج لتغييره هي ال amount وهي القيمة التي تريد تفكيكها و أيضا القائمة غير واضف ما يحلو لك من قيم بشرط أن تكون مرتبة تنازليا

يعني هذا هي الخورازمية الاساس واضف عليها ما يلزم

#6

مشكور اخي Islamic_Empire على الكود الواضح جدا وسلس بس عندي استفسار بسيط ،كيف ممكن ادخل الرقم ويطبع الفكه للرقم؟

بدي اغلبك...

#7

الصراحة مش فاهم سؤالك بدقة بس خليني أقول إنك تريد إدخال المبلغ :

أضف الكود التالي :

cout << "Enter the amount of money to be changed : ";
cin >> amount;

ضعه في الدالة الرئيسية بعد تعريف المتغيرات مباشرة

لا مافي تعب باذن الله

#8

مشكور اخي توضيح اكثر مثلا المبلغ هو 13 فيقوم البرنامج بطباعة..

10 1 1 1

#9

الأرقام بالترتيب من أعلى لأسفل تدل على عدد التكرارات في كل قيمة مثلا

186 لو وجدت 1 1 1 3

أي بمعنى

3 أنصاف

1 ربع

1 عشر

1 فلس أو قرش أو بنس أو هللة حسب العملة

عدل على السطر

cout << counted << endl;

ليطبع ليس فقط القيمة بل ما يقابلها من انصاف و ارباع الخ الخ

#10

مش كل الخوارزميات يمكن لشخص واحد ان يصممها

دائما بتطلع ابحاث بمسائل وحلول جديده

ولو كان في شخص ذكي جدا بامكانه حل كل المسائل وايجاد كل الخوارزميات

لوجدت شخص واحد اخترع كل الاختراعات اللي في الدنيا

او شخص واحد صمم كل الخوارزميات الموجودة

وكل انسان مهما بلغ ذكائه فله حدود والتوفيق من عندالله

وما اوتيتم من العلم الا قليلا

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

مواضيع مشابهة