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

مساعدة في لغة سي

بدأه حامي الحمى في 7 ديسمبر 2008 · 9 رد · 591 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الكرام لدي سؤال عن كتابة برنامج بسيط

وقمت بحله لكني اعتقد انه يجب ادخال دالة تكرار مثل while او for

السؤال هو كالتالي :

وحلي بعد السؤال

يا ريت اللي يقدر يساعد ما يبخل علي :)

وبارك الله فيكم سلف :)

في شركة للاتصالات تقرر اجراء استفتاء لزبائن الشركة. يطلب من كل زبون ان يجيب على 5 معايير (اسئلة) مختلفة "A-E" حيث ان لكل واحد منها وزن مختلف، كما هو مفصّل:

معايير من A-C : لها 15% من الوزن الكلي

معيار D: له 30% من الوزن الكلي.

معيار E: له 25% من الوزن الكلي.

لكل معيار (سؤال) يتم ادخال تقييم من 1-10.

يجب كتابة برنامج يستوعب تقييم الزبون بكل واحد من ال 5 معايير، ويقوم بحساب وطباعة التقييم النهائي الموزون.

ويقوم بطباعة رسالة التي تصف رضا الزبون حسب القائمة التالية:

مجال رضا الزبون العام --------------------------------- رسالة الطباعة

0-5 ---------------------------------------------------The customer is not satisfied

5-7 (لا يشمل 5) --------------------------------------The customer is slightly happy

7-8 (لا يشمل 7) --------------------------------------The customer is satisfied

8-10 (لا يشمل 8) ------------------------------------The customer is glad

مثال بعد تشغيل البرنامج:

Enter customer's satisfaction in category A: 3

Enter customer's satisfaction in category B: 8

Enter customer's satisfaction in category C: 5

Enter customer's satisfaction in category D: 7

Enter customer's satisfaction in category E: 4

Customer's Satisfaction in general is: 5.5

The customer is slightly happy

البرنامج الذي قمت بكتابته كالتالي:

#include <stdio.h>

void main()

{

float CatA, CatB, CatC, CatD, CatE, SatGen; //catA: customer's satisfaction in category A, CatB: customer's satisfaction in category B, CatC: customer's satisfaction in category C, CatD: customer's satisfaction in category D, CatE: customer's satisfaction in category E, SatGen:Customer's Satisfaction in general.

printf("Enter customer's satisfaction in category A\n");

scanf("%f", &CatA);

if (CatA>=1 && CatA<=10)

CatA;

else

printf("You have been entered a wrong number\n");

printf("Enter customer's satisfaction in category B\n");

scanf("%f", &CatB);

if (CatB>=1 && CatB<=10)

CatB;

else

printf("You have been entered a wrong number\n");

printf("Enter customer's satisfaction in category C\n");

scanf("%f", &CatC);

if (CatC>=1 && CatC<=10)

CatC;

else

printf("You have been entered a wrong number\n");

printf("Enter customer's satisfaction in category D\n");

scanf("%f", &CatD);

if (CatD>=1 && CatD<=10)

CatD;

else

printf("You have been entered a wrong number\n");

printf("Enter customer's satisfaction in category E\n");

scanf("%f", &CatE);

if (CatE>=1 && CatE<=10)

CatE;

else

printf("You have been entered a wrong number\n");

printf("Customer's Satisfaction in general is: %.1f\n", SatGen=(CatA+CatB+CatC)*15/100+CatD*30/100+CatE*25/100);

if (SatGen>=0 && SatGen<=5)

printf("The customer is not satisfied\n");

else

if (SatGen>5 && SatGen<=7)

printf("The customer is slightly happy\n");

else

if (SatGen>7 && SatGen<=8)

printf("The customer is satisfied\n");

else

if(SatGen>8 && SatGen<=10)

printf("The customer is glad\n");

else

printf("You have been entered an illegal values\n");

}

تعب الجسد

ونعيم الروح

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

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

#2

هذا تعديل بسيط على الكود:

  1. #include <stdio.h>
  2. void main()
  3. {
  4. float Cat[5];
  5. char msg[]="Enter customer's satisfaction in category ";
  6. float g;
  7. int n=0;
  8. while(n!=5)
  9. {
  10. printf("%s%c%c",msg,'A'+ n,':') ;
  11. scanf("%f",&Cat[n]);
  12. if(Cat[n]>10 ||Cat[n]<1)
  13. {
  14. printf("You have been entered a wrong numbern");
  15. n--;}
  16. n++;
  17. }
  18. g=(Cat[0]+Cat[1]+Cat[2])*(15.0/100.0)+Cat[3]*(30.0/100.0)+Cat[4]*(25.0/100.0);
  19. printf("%s %f n","Customer's Satisfaction in general is ",g);
  20. if(g<=5)
  21. printf("The customer is not satisfiedn");
  22. else if(g<=7) printf("The customer is slightly happyn");
  23. else if(g<=8) printf("The customer is satisfiedn");
  24. else printf("The customer is gladn");
  25. }
  26.  

tvquran_6.gif

#3

السلام عليكم

أخي فهد كيف تقوم بتنسيق الكود هكذا

؟؟

تم تعديل هذه المشاركة بواسطة mandareka في 8 ديسمبر 2008 في 13:20

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

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

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

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

#4

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

tvquran_6.gif

#5
  1.  
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6. while(1)
  7. {
  8. printf("Thank you very much Mr Fahed");
  9. }
  10. return -1;
  11. }
  12.  

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

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

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

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

#6

السلام عليكم

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

للحق شيء رائع

لو فكرت في هذه الطريقة شهر كامل ما بعملها

ولسا انا بدرس في اللغة واللغة جميلة جدا

واليوم درسنا موضوع arrays

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

ونفع بك الله وبعلمك الأمة

السلام عليكم

تعب الجسد

ونعيم الروح

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

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

#7

السلام عليكم

بارك الله فيك اخي مرة ثانية

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

انا كتب كود ثاني بمستوى دراستنا الحالية

لكن ظهرت مشكلة صغيرة

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

أولاً هذا الكود اللي انا كتبته

  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6. float CatA, CatB, CatC, CatD, CatE, SatGen; //catA: customer's satisfaction in category A, Cat
    B: customer's satisfaction in category B, CatC: customer's satisfaction in category C, CatD: cu
    stomer's satisfaction in category D, CatE: customer's satisfaction in category E, SatGen:Custom
    er's Satisfaction in general.
  7.  
  8. printf("Enter customer's satisfaction in category An");
  9. scanf("%f", &CatA);
  10. while (CatA<1||CatA>10)
  11. { printf("Error input, try Again insert number between 1-10n");
  12. scanf("%f", &CatA);
  13. }
  14.  
  15. printf("Enter customer's satisfaction in category Bn");
  16. scanf("%f", &CatB);
  17. while (CatB<1||CatB>10)
  18. { printf("Error input, try Again insert number between 1-10n");
  19. scanf("%f", &CatB);
  20. }
  21.  
  22. printf("Enter customer's satisfaction in category Cn");
  23. scanf("%f", &CatC);
  24. while (CatC<1||CatC>10)
  25. { printf("Error input, try Again insert number between 1-10n");
  26. scanf("%f", &CatC);
  27. }
  28.  
  29. printf("Enter customer's satisfaction in category Dn");
  30. scanf("%f", &CatD);
  31. while (CatD<1||CatD>10)
  32. { printf("Error input, try Again insert number between 1-10n");
  33. scanf("%f", &CatD);
  34. }
  35.  
  36. printf("Enter customer's satisfaction in category En");
  37. scanf("%f", &CatE);
  38. while (CatE<1||CatE>10)
  39. { printf("Error input, try Again insert number between 1-10n");
  40. scanf("%f", &CatE);
  41. }
  42.  
  43.  
  44.  
  45. printf("Customer's Satisfaction in general is: %.1fn", SatGen=(CatA+CatB+CatC)*15/100+CatD*30
    /100+CatE*25/100);
  46.  
  47.  
  48. if (SatGen>=0 && SatGen<=5)
  49. printf("The customer is not satisfiedn");
  50. else
  51. if (SatGen>5 && SatGen<=7)
  52. printf("The customer is slightly happyn");
  53. else
  54. if (SatGen>7 && SatGen<=8)
  55. printf("The customer is satisfiedn");
  56. else
  57. if(SatGen>8 && SatGen<=10)
  58. printf("The customer is gladn");
  59. else
  60. printf("You have been entered an illegal valuesn");
  61.  
  62. }
  63.  
  64.  

الآن المشكلة هي كالتالي:

عندما اقوم بإدخال رقم أكبر من 10 او اصغر من 0 سقوم بكتابة رسالة خطأ

لكن عندما اقوم بإدخال حرف مثلا يقوم بطباعة رسالة الخطأ الى ما لا نهاية من المرات

ما هو السبب برأيك أخي وما هو اقتراحكم للحل

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

السلام عليكم :)

تم تعديل هذه المشاركة بواسطة حامي الحمى في 9 ديسمبر 2008 في 20:32

تعب الجسد

ونعيم الروح

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

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

#8

البرنامج اصلا يفترض المدخل رقم وليس حرف . لذلك يظهر خطا.

اذا اردت فهناك طريقتين:

1. ان تاخذ المتغيرات على انها حروف ثم تحولها الي رقم.

2. تستخدم الاستثناءات ومن هنا شرح لها

tvquran_6.gif

#9

السلام عليكم

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

الطريقة الثانية لم افهم الدرس (لانه شرح للسي ++)

بالنسبة للطريقة الاولى

اتمنى اني اكون وفقت في فهمك

وقمت بتحويل الكود الى هذا الشكل

  1. while (CatA<'A'-64||CatA>'A'-55)
  2. { printf("Error input, try Again insert number between 1-10n");
  3. scanf("%f", &CatA);
  4. }
  5.  
  6.  

ولكن النتيحة بقيت مثلما كانت

تم تعديل هذه المشاركة بواسطة حامي الحمى في 9 ديسمبر 2008 في 22:55

تعب الجسد

ونعيم الروح

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

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

#10

السلام عليكم

أخي الكريم

قمت بمحاولات

ونجحت احداها

لكني "رغم نجاحها" فلم أعرف بعد بالضبط ما سبب نجاحها ؟

هذا ما قمت به

  1.  
  2. printf("Enter customer's satisfaction in category An");
  3. scanf("%f", &CatA);
  4. while (CatA<1||CatA>10)
  5. { printf("Error input, try Again insert number between 1-10n");
  6. scanf("%f", &CatA);
  7. if (scanf("%f", &CatA)!=1)
  8. printf("Error input, try Again insert number between 1-10n");
  9. scanf("%c", &CatA);
  10. scanf("%f", &CatA);
  11. }
  12.  

تم تعديل هذه المشاركة بواسطة حامي الحمى في 9 ديسمبر 2008 في 23:27

تعب الجسد

ونعيم الروح

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

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

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