condition ? value if true : value if false
سؤال بلغة سي مركّب نوعاً ما (دوال)
السلام عليكم
بارك الله فيك اخي
الآن فهمتها
لكن هذه الطريقة ترجع قيمة واحدة
والمطلوب من الدالة في حالة ان الثلاثية هي ثلاثية حسابية ان ترجع قيمتان
الرقم 1 واشارة العملية الحسابية !!
ما في امكانية مثلا انا نكتب
- return 1; && return '+';
- else return 0;
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
لماذا ترجع قيمتين هي ترجع قيمه اكبر من الصفر وصفر فقط.
لاحظ انني استرجع رقم الآسكي المقابل للحرف وليس الحرف نفسه.
هل السؤال يشترط ارجاع اكثر من قيمه ؟.
السلام عليكم
نعم اخي الكريم يشترط ارجاع اكثر من قيمة :)
واعتقد انه يجب استعمال المؤشرات
وقد قمت بالبحث عبر جوجل فوجدت هذا المثال اخي
http://www.computing.net/answers/programmi...uage/13620.html
يا ريت تفيدني بهذا المجال :)
جزيتما خيرا اخي فهد واخي عادل
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
السلام عليكم
صحيح اخي لكن لو لاحظت لسؤال صاحب الموضوع بيسأل عن كيفية كتابة دالة تردع قيمتان
فكان الرد كالتالي
Yes if you use pointers
وبعدها قام العضو بإعطائه مثال
لكن الأساس هو انه يمكن ارجاع قيمتان من دالة عبر المؤشرات ...
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
السلام عليكم
اخواني كتبت دالة checkValid
لكن لما اختبرتها ما قامت بإرجاع قيمة
هذي الدالة يا ريت حد يقولي وين المشكلة
الدالة بتفحص مصفوفة احادية البعد اذا كان فيها رقم سالب واحد تقوم بإرجاع قيمة 0 اذا المصفوفة مكوّنة فقط من أرقام موجبة او صفر ترجع 1
- int checkValid (int num[],int size)
- {
- int i=0;
- int result=1;
- for(i;i<size;i++)
- if(num[i]<0)
- {
- result=0;
- break;
- }
- return result;
- }
تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 يناير 2009 في 19:55
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
- int checkValid (int num[],int size)
- {int i=0;
- for(i;i<size;i++)
- if(num[i]<0) return 0;
- return 1;
- }
كودك الذي انت وضعته سليم لا يوجد به مشكل.
بارك الله فيك اخي فهد
كتبتها بهذي الطريقة من قبل لكني لما حاولت اختبرها قامت بارجاع قيمة 0 على الرغم من المصفوفة كلها موجبة
ما هو السبب ؟
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
- printf("%d",checkValid (number,N));
تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 يناير 2009 في 20:36
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
السطر الي كتبته لا يظهر مشكل جرب كود بسيط مثل هذا من اجل اختبار الداله.
- #include<stdio.h>
- #define n 4
- int checkValid (int num[],int size)
- {
- int i=0;
- int result=1;
- for(i;i<size;i++)
- if(num[i]<0)
- {
- result=0;
- break;
- }
- return result;
- }
- main()
- {
- int h[n]={2,4,7,9};
- printf("%d",checkValid(h,n));
- getchar();
- }
السلام عليكم
بارك الله فيك اخي
قمت بتجربة الكود وفعلا قام بإعادة الرقم 1
لكن نفس الكود ما بيعمل في البرنامج
تفضل اخي شوف كود البرنامج كامل حتى الآن
بيقوم بإرجاع القيمة 0
وملف التكست في الملف ان شاء الله
- #include <stdio.h>
- #define INPUT "inputNums.txt"
- #define N 1000
- int getNums(int *);
- int checkPositive (long);
- int checkValid (int *,int);
- int findCalculation(int *, int *, int *);
- void PrintExercise (int, int, int, char);
- int FindAllTrioCalculation (int *, long);
- struct mytype
- {
- int ok;
- char ch;
- } mytype;
- struct mytype fundCalculation(int a,int b,int c)
- {
- struct mytype tmp;
- if(c==a+b) {tmp.ok=1;tmp.ch='+';}
- else if(c==a-b) {tmp.ok=1;tmp.ch='-';}
- else if(c==a*b) {tmp.ok=1;tmp.ch='*';}
- else if(c==a/b) {tmp.ok=1;tmp.ch='/';}
- else {tmp.ok=0;tmp.ch=' ';}
- return tmp;
- }
- void main()
- {
- int number[N];
- int len;
- int i;
- getNums(number);
- len=number[N-1];
- for(i=0;i<len;i++)
- printf("%d n",number[i]);
- getchar();
- printf("%i %c ",fundCalculation(3,4,12).ok,fundCalculation(3,4,12).ch);
- getchar();
- PrintExercise(2, 3, 5, '+');
- getchar();
- printf("%d",checkValid(number,N));
- getchar();
- }
- int getNums(int number[])
- {
- FILE* file;
- int j=0;
- int k;
- file=fopen(INPUT,"r");
- if(file==NULL)
- return 0;
- while(!feof(file))
- {
- fscanf(file,"%d",&k);
- number[j]=k;
- j++;
- }
- number[N-1]=j;
- fclose(file);
- return 1;
- }
- int checkValid (int num[],int size)
- {
- int i=0;
- int result=1;
- for(i;i<size;i++)
- if(num[i]<0)
- {
- result=0;
- break;
- }
- return result;
- }
- void PrintExercise (int a, int b, int c, char ch)
- {
- if (c==a+b)
- printf ("%d%c%d=%dn", a,ch,b,c);
- if (c==a-b)
- printf ("%d%c%d=%dn", a,ch,b,c);
- if (c==a*b)
- printf ("%d%c%d=%dn", a,ch,b,c);
- if (c==a/b)
- printf ("%d%c%d=%dn", a,ch,b,c);
- }
تم تعديل هذه المشاركة بواسطة حامي الحمى في 10 يناير 2009 في 22:36
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
بارك الله فيك اخي سلف
عملت DEBUG للبرنامج ولاقيت انه قيم number[11] حتى نهاية طول المصفوفة كلها سالبة لذلك يقوم بإرجاع القيمة صفر، كنت ناسي اعمل تصفير للمصفوفة، وقمت بذلك بحمد الله.
جزيت خيرا اخي الكريم سلفاً :)
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
السلام عليكم
حتى لما نجحت الطريقة ما طلعت كاملة ^_^
لعله خير
بارك الله فيك أخي وزادك الله بسطة في العلم، آمين
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
لا أخي اقصد انني عندما قمت بتصفير المصفوفة
int number[N]=0;
وقمت بتجربتها حصلت على القيمة 1 والسبب بسيط، وهو انها ترجع القيمة 0 اذا كان في المصفوفة عدد سالب.
لكن طريقتي اللي فكرتها صحيحة طلعت غير صحيحة ^_^
جزيت خيرا اخي
تعب الجسد
ونعيم الروح
جسد يمشي فوق الأرض
وروح ترفرف حول العرش
