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

سؤال بلغة سي مركّب نوعاً ما (دوال)

بدأه حامي الحمى في 8 يناير 2009 · 42 رد · 2,999 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#27

السلام عليكم

بارك الله فيك اخي

الآن فهمتها

لكن هذه الطريقة ترجع قيمة واحدة

والمطلوب من الدالة في حالة ان الثلاثية هي ثلاثية حسابية ان ترجع قيمتان

الرقم 1 واشارة العملية الحسابية !!

ما في امكانية مثلا انا نكتب

  1. return 1; && return '+';
  2. else return 0;
  3.  

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#28

لماذا ترجع قيمتين هي ترجع قيمه اكبر من الصفر وصفر فقط.

لاحظ انني استرجع رقم الآسكي المقابل للحرف وليس الحرف نفسه.

هل السؤال يشترط ارجاع اكثر من قيمه ؟.

tvquran_6.gif

#29

السلام عليكم

نعم اخي الكريم يشترط ارجاع اكثر من قيمة :)

واعتقد انه يجب استعمال المؤشرات

وقد قمت بالبحث عبر جوجل فوجدت هذا المثال اخي

http://www.computing.net/answers/programmi...uage/13620.html

يا ريت تفيدني بهذا المجال :)

جزيتما خيرا اخي فهد واخي عادل

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#30

المؤشر في المثال الذي وضعته تحت الرابط للتبديل بين العناصر فقط.

tvquran_6.gif

#31

السلام عليكم

صحيح اخي لكن لو لاحظت لسؤال صاحب الموضوع بيسأل عن كيفية كتابة دالة تردع قيمتان

فكان الرد كالتالي

Yes if you use pointers

وبعدها قام العضو بإعطائه مثال

لكن الأساس هو انه يمكن ارجاع قيمتان من دالة عبر المؤشرات ...

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#32

السلام عليكم

اخواني كتبت دالة checkValid

لكن لما اختبرتها ما قامت بإرجاع قيمة

هذي الدالة يا ريت حد يقولي وين المشكلة

الدالة بتفحص مصفوفة احادية البعد اذا كان فيها رقم سالب واحد تقوم بإرجاع قيمة 0 اذا المصفوفة مكوّنة فقط من أرقام موجبة او صفر ترجع 1

  1. int checkValid (int num[],int size)
  2. {
  3.  
  4. int i=0;
  5. int result=1;
  6. for(i;i<size;i++)
  7. if(num[i]<0)
  8. {
  9. result=0;
  10. break;
  11. }
  12.  
  13. return result;
  14. }
  15.  

تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 يناير 2009 في 19:55

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#33
  1. int checkValid (int num[],int size)
  2. {int i=0;
  3. for(i;i<size;i++)
  4. if(num[i]<0) return 0;
  5. return 1;
  6. }
  7.  

كودك الذي انت وضعته سليم لا يوجد به مشكل.

tvquran_6.gif

#34

بارك الله فيك اخي فهد

كتبتها بهذي الطريقة من قبل لكني لما حاولت اختبرها قامت بارجاع قيمة 0 على الرغم من المصفوفة كلها موجبة

ما هو السبب ؟

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#35

لا يظهر لدي خطأ في القيم اكتب كود الاختبار هنا.

tvquran_6.gif

#36
  1. printf("%d",checkValid (number,N));
  2.  

تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 يناير 2009 في 20:36

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#37

السطر الي كتبته لا يظهر مشكل جرب كود بسيط مثل هذا من اجل اختبار الداله.

  1. #include<stdio.h>
  2. #define n 4
  3.  
  4. int checkValid (int num[],int size)
  5. {
  6. int i=0;
  7. int result=1;
  8. for(i;i<size;i++)
  9. if(num[i]<0)
  10. {
  11. result=0;
  12. break;
  13. }
  14. return result;
  15. }
  16. main()
  17. {
  18.  
  19. int h[n]={2,4,7,9};
  20.  
  21. printf("%d",checkValid(h,n));
  22. getchar();
  23. }
  24.  

tvquran_6.gif

#38

السلام عليكم

بارك الله فيك اخي

قمت بتجربة الكود وفعلا قام بإعادة الرقم 1

لكن نفس الكود ما بيعمل في البرنامج

تفضل اخي شوف كود البرنامج كامل حتى الآن

بيقوم بإرجاع القيمة 0

وملف التكست في الملف ان شاء الله

  1. #include <stdio.h>
  2. #define INPUT "inputNums.txt"
  3. #define N 1000
  4.  
  5. int getNums(int *);
  6. int checkPositive (long);
  7. int checkValid (int *,int);
  8. int findCalculation(int *, int *, int *);
  9. void PrintExercise (int, int, int, char);
  10. int FindAllTrioCalculation (int *, long);
  11.  
  12. struct mytype
  13. {
  14. int ok;
  15. char ch;
  16. } mytype;
  17.  
  18. struct mytype fundCalculation(int a,int b,int c)
  19. {
  20. struct mytype tmp;
  21. if(c==a+b) {tmp.ok=1;tmp.ch='+';}
  22. else if(c==a-b) {tmp.ok=1;tmp.ch='-';}
  23. else if(c==a*b) {tmp.ok=1;tmp.ch='*';}
  24. else if(c==a/b) {tmp.ok=1;tmp.ch='/';}
  25. else {tmp.ok=0;tmp.ch=' ';}
  26.  
  27. return tmp;
  28.  
  29. }
  30.  
  31. void main()
  32. {
  33. int number[N];
  34. int len;
  35. int i;
  36. getNums(number);
  37. len=number[N-1];
  38. for(i=0;i<len;i++)
  39. printf("%d n",number[i]);
  40.  
  41. getchar();
  42.  
  43. printf("%i %c ",fundCalculation(3,4,12).ok,fundCalculation(3,4,12).ch);
  44.  
  45. getchar();
  46.  
  47. PrintExercise(2, 3, 5, '+');
  48. getchar();
  49.  
  50. printf("%d",checkValid(number,N));
  51.  
  52. getchar();
  53. }
  54.  
  55.  
  56.  
  57. int getNums(int number[])
  58. {
  59. FILE* file;
  60. int j=0;
  61. int k;
  62. file=fopen(INPUT,"r");
  63. if(file==NULL)
  64. return 0;
  65. while(!feof(file))
  66. {
  67. fscanf(file,"%d",&k);
  68. number[j]=k;
  69. j++;
  70. }
  71. number[N-1]=j;
  72. fclose(file);
  73. return 1;
  74. }
  75.  
  76.  
  77. int checkValid (int num[],int size)
  78. {
  79.  
  80. int i=0;
  81. int result=1;
  82. for(i;i<size;i++)
  83. if(num[i]<0)
  84. {
  85. result=0;
  86. break;
  87. }
  88.  
  89. return result;
  90. }
  91.  
  92.  
  93.  
  94.  
  95. void PrintExercise (int a, int b, int c, char ch)
  96. {
  97. if (c==a+b)
  98. printf ("%d%c%d=%dn", a,ch,b,c);
  99.  
  100. if (c==a-b)
  101. printf ("%d%c%d=%dn", a,ch,b,c);
  102.  
  103. if (c==a*b)
  104. printf ("%d%c%d=%dn", a,ch,b,c);
  105.  
  106. if (c==a/b)
  107. printf ("%d%c%d=%dn", a,ch,b,c);
  108.  
  109. }
  110.  
  111.  

inputNums.zip

تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 يناير 2009 في 22:36

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#39

بارك الله فيك اخي سلف

عملت DEBUG للبرنامج ولاقيت انه قيم number[11] حتى نهاية طول المصفوفة كلها سالبة لذلك يقوم بإرجاع القيمة صفر، كنت ناسي اعمل تصفير للمصفوفة، وقمت بذلك بحمد الله.

جزيت خيرا اخي الكريم سلفاً :)

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#40
  1. printf("%d",checkValid(number,len));
  2.  

tvquran_6.gif

#41

السلام عليكم

حتى لما نجحت الطريقة ما طلعت كاملة ^_^

لعله خير

بارك الله فيك أخي وزادك الله بسطة في العلم، آمين

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#42

كيف ؟

tvquran_6.gif

#43

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

int number[N]=0;

وقمت بتجربتها حصلت على القيمة 1 والسبب بسيط، وهو انها ترجع القيمة 0 اذا كان في المصفوفة عدد سالب.

لكن طريقتي اللي فكرتها صحيحة طلعت غير صحيحة ^_^

جزيت خيرا اخي

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…