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

دالة حساب الوقت المستغرق ؟!

بدأه نوّار في 14 ديسمبر 2008 · 20 رد · 4,449 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

عضو جديد

فهلا قبلتموني :blush:

سؤالي هنا

اريد دالة او حتى مكتبة في ++C

لحساب الوقت الذي يستغرقه البرنامج في التنفيذ

عاجلاً من فضلكم :wink:

تم تعديل هذه المشاركة بواسطة نوّار في 14 ديسمبر 2008 في 21:03

#2
نعم هنا تجد الطريقة
tvquran_6.gif

#3

كل الشكر لك

ولكن حبذا لو شرحت عمل كل سطر

لأنه بالتطبيق يخرج الوقت:0

اي عند كتابة برنامج يقوم بترتيب مصفوفه من الأعداد

كيف يمكن له أن يحسب الوقت المستغرق

جزيت خيراً

#4

هذا مثال:

  1.  
  2. #include <ctime>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9. clock_t start;
  10.  
  11. start=clock(); تسجيل الوقت الحالي من الساعه
  12. for(int i=0;i<100;i++)
  13. cout<<"______"<<"r";
  14. cout<<endl<<clock() - start; اخذ الفرق بين الوقت الحالي والسابق
  15. cin.get();
  16. return 0;
  17. }
  18.  

عندما يكون الوقت المستغرق للعمليه اصغر من جزء الالف من الثانية يظهر صفر

tvquran_6.gif

#5

بســم الله الـرحمــن الرحيــم

تفضل اخي طريقة اخرى

  1.  
  2. #include <iostream.h>
  3. #include <windows.h>
  4.  
  5. #pragma comment( lib,"winmm.lib" ) // ربط مكتبة الملتي ميديا للحصول على الوقت
  6.  
  7. int main()
  8. {
  9. int ary[100]; // تعيين مصفوفة
  10. double currentTime; // تعيين متغير لتسجيل الوقت به
  11.  
  12. //timeGetTime() دالة لحصول على على وقت النظام بالملي ثانية
  13.  
  14. currentTime =timeGetTime(); // اخذ وقت النظام بالملي ثانية و وضعه بالمتغير
  15. // ومن هذه اللحظة سيتم حساب الوقت
  16.  
  17. // اعطاء قيم لعناصر المصوفة وطباعتها
  18. for ( int i = 0 ; i < 100 ; i++)
  19.  
  20. {
  21. ary[i]=i;
  22. cout << ary[i] << endl ;
  23. }
  24.  
  25. currentTime =( timeGetTime() - currentTime ); // نهاية حساب الوقت
  26. cout << currentTime/(1000) ; // الوقت بالثانية
  27.  
  28. return 0;
  29.  
  30. }
  31.  

تحياتي

while( "اسلام" )
{
 cout >> "الموت لبني صهيون" >> endl;
}
return "فلسطين";
#6

شكراً لكم

دائماً ماأجد ضالتي هنا

جعله الله في موازيين حسناتكم

أخ فهد

وإن كنت قد أثقلت عليكـ

هل لكـ أن توضح لي كيف بالإمكان كتابة برنامج الترتيب داخل الدالة التي أعطيتنا

لأنه من المعروف أنه لايمكن استخدام أكثر من دالة mainفي البرنامج الواحد

أخ haty

شكراً جزيلاً لكـ

فقد تطبق البرنامج بكل السرور

ولكن أريد أن ألم بأكثر من طريقة

وأود التعرف على مكتبة Time بالأخص

تم تعديل هذه المشاركة بواسطة نوّار في 15 ديسمبر 2008 في 00:32

#7

مثال:

  1. #include <ctime>
  2. #include <iostream>
  3. using namespace std;
  4. int main(int argc, char *argv[])
  5. {
  6. clock_t start;
  7.  
  8. start=clock();
  9. int s[]={34,12,67,98,12,56,0,77,109,203,89,11};
  10. int tmp;
  11. cout<<"s[]={";
  12. for(int i=0;i<12;i++)
  13. cout<<s[i]<<" ";
  14. cout<<" }"<<endl;
  15.  
  16. for(int i=0;i<11;i++)
  17. {
  18. for(int j=i;j<12;j++)
  19. {
  20. if(s[i]>s[j])
  21. {
  22. tmp=s[i];
  23. s[i]=s[j];
  24. s[j]=tmp;
  25. }
  26. }
  27. }
  28.  
  29.  
  30. cout<<"s[]={";
  31. for(int i=0;i<12;i++)
  32. cout<<s[i]<<" ";
  33. cout<<" }"<<endl;
  34.  
  35.  
  36. cout<<endl<<clock() - start;
  37. cin.get();
  38. return 0;
  39. }
  40.  

tvquran_6.gif

#8

عذراً

لم يتطبق

يحوي الكثير من الــ Errors

هل إلى خروجٍ من سبيل ؟!!

#9

أكتب الكود كتابة وليس نسخ ولصق؟

كلها 30 سطر.

tvquran_6.gif

#10

حاظر ياأستاذي

لكـ جزيل الشكر

سأحاول وربما لي عودة :wink:

#11

كتبت الكود

وكانت النتيجة كالسابق

c:\program files\microsoft visual studio\myprojects\hw1\hw1.cpp(13) : error C2374: 'i' : redefinition; multiple initialization

c:\program files\microsoft visual studio\myprojects\hw1\hw1.cpp(10) : see declaration of 'i'

c:\program files\microsoft visual studio\myprojects\hw1\hw1.cpp(19) : error C2065: 'tmp' : undeclared identifier

c:\program files\microsoft visual studio\myprojects\hw1\hw1.cpp(26) : error C2374: 'i' : redefinition; multiple initialization

c:\program files\microsoft visual studio\myprojects\hw1\hw1.cpp(10) : see declaration of 'i'

Error executing cl.exe.

HW1.OBJ - 3 error(s), 0 warning(s)

:S

علماً بأني أستخدم ++C على نظام الاكس بي

تم تعديل هذه المشاركة بواسطة نوّار في 15 ديسمبر 2008 في 20:47

#12

المعذرة

مع بعض التعديلات تطبق

ولكن يخرج الوقت بــ صفر

هل من الممكن ان يتنفذ برنامج بصفر ميلي ثانيه؟!!

#13

قد تحتاج الي تعريف i , j خارج اللوب في الاعلى .

الوقت الظاهر بالجزء من الالف من الثانية.

tvquran_6.gif

#14

عذراً

ماذا تقصد ؟

#15

في اخر حلقتين for عدلها إلى الشكل التالي :

for( i=0;i<11;i++)

لانك قمت بتعريف i في الحلقة الاولى .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#16

هذا تماماً ماقمت به

لكن كل مايهمني هنا هو الوقت ؟!

سأدير أعداد تتراوح بين 10 -10,000

ليقوم البرنامج بترتيبها

وبالنهاية نقارن بين الزمن المستغرق لكل n من المدخلات

علماً بأن الأعداد هنا ستولّد عشوائياً باستخدام rand()

في كل مره نزيد n

وبناءً على النتائج الزمنية نوجد علاقة بين الزمن المستغرق وعدد المدخلات

#17

اذا كان n صغير 10 او 100 يظهر الوقت صفر اختار ارقام كبيره 500 او الف وا اكبر سظهر الوقت

tvquran_6.gif

#18

تستطيع الدوت نت الوصول إلى دقة 10^6 من الثانية

فكيف يمكنني الحصول على نفس الدقة في السي++

دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب

حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .

الامة الاسلامية متعطشة لقيادة مخلصة لتذوق حلاوة النصر ولن يكون ذلك الا بعودة الخلافة الاسلامية

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

#19

لا اعلم ان كانت هناك دالة تعطي دقة أكثر .

هناك دالة ايضا تستخدم من دوال api ايضا تعطي زمن ملي في الثانية GetTickCount.

اي ان اي عمليه اسرع من ملي في الثانية لن تقيسها .

tvquran_6.gif

#20

مدخلات الخوارزم لدي تبدأ من 10

وتتزايد الى ان تصل 100,000

اريد اي داله لحساب الوقت حسب هذه المدخلات؟

#21

مساعدتكم :wink:

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