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

Switch Statement

مغلق
بدأه cpp في 8 ديسمبر 2003 · 7 رد · 868 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,

أرجو ان كان باستطاعة أحد منكم المساعده في تعديل هذا الكود المكتوب باسختدام الـ switch الرد على الموضوع, الكود مافيه syntax error لكن فيه logic erros

يعني compiled with no errors لكن ما يعطي النتايج الصحيحه وقت الاستخدام

أعتقد انه المشكله في الـ break;

رغم اني أحاطها بعد كل statement الا ان البرنامج يكمل على باقي الـ statements ولا يوقف ما أعرف ليش

لي حد ما يوصل عند

return 1;

#include <iostream>

using namespace std;

char choice,letter,let,ltr;
int num;

int main()
{

cout << "Please, enter N for numbers and L for letters: " << endl;
cin >> choice;

switch (choice)
{
case 'n':
case 'N': cout << "Please, enter the number of a week day: " << endl;
          cin >> num;
          
          switch (num)
          {
          case 1 : cout << "Saturday" << endl;
                   break;
          case 2 : cout << "Sunday" << endl;
                   break;
          case 3 : cout << "Monday" << endl;
                   break;
          case 4 : cout << "Tuesday" << endl;
                   break;
          case 5 : cout << "Wednesday" << endl;
                   break;
          case 6 : cout << "Thursday" << endl;
                   break;
          case 7 : cout << "Friday" << endl;
                   break;
          default : cout << "Invalid input." << endl;
                    break;
          }
case 'l':
case 'L': cout << "Please, enter the first letter of the day name: " << endl;
          cin >> let;
          switch (let)
          {
          case 's' :
          case 'S': cout << "Please, enter the second letter of the day name: " << endl;
                    cin >> letter;
                    switch (letter)
                    {
                    case 'a' :
                    case 'A' : cout << "Saturday" << endl;
                               break;
                    case 'u' :
                    case 'U' : cout << "Sunday" << endl;
                               break;
                    default : cout << "Invalid input." << endl;
                              break;
                    }
          case 't' :
          case 'T' : cout << "Please, enter the second letter of the day name: " << endl;
                     cin >> ltr;
                     switch (ltr)
                     {
                     case 'u' :
                     case 'U' : cout << "Tuesday" << endl;
                                break;
                     case 'h' :
                     case 'H' : cout << "Thursday" << endl;
                                break;
                     default : cout << "Invalid input." << endl;
                               break;
                     }
          case 'm' :
          case 'M' : cout << "Monday" << endl;
                     break;
          case 'w' :
          case 'W' : cout << "Wednesday" << endl;
                     break;
          case 'f' :
          case 'F' : cout << "Friday" << endl;
                     break;
          default : cout << "Invalid input" << endl;
                    break;
          }
default :
        cout << "Invalid input, program terminated." << endl;
        return 1;
}

return 0;
}
#2

اخوي cpp انته مثل ما قلت لن كودك ما فيه غلط بس انا اعتقد انك نسيت بعض من break تكتبهم بالكود مالك ..

المهم هذا هو الكود مالك .. معدل

#include <iostream>

using namespace std;

char choice,letter,let,ltr;

int num;

int main()

{

cout << "Please, enter N for numbers and L for letters: " << endl;

cin >> choice;

choice = toupper(choice);

switch (choice)

{

case 'N':

cout << "Please, enter the number of a week day: " << endl;

cin >> num;

switch (num)

{

case 1 :

cout << "Saturday" << endl;

break;

case 2 :

cout << "Sunday" << endl;

break;

case 3 :

cout << "Monday" << endl;

break;

case 4 :

cout << "Tuesday" << endl;

break;

case 5 :

cout << "Wednesday" << endl;

break;

case 6 :

cout << "Thursday" << endl;

break;

case 7 :

cout << "Friday" << endl;

break;

default :

cout << "Invalid input." << endl;

break;

}

break;

case 'L':

cout << "Please, enter the first letter of the day name: " << endl;

cin >> let;

let = toupper(let);

switch (let)

{

case 'S': cout << "Please, enter the second letter of the day name: " << endl;

cin >> letter;

letter= toupper(letter);

switch (letter)

{

case 'A' : cout << "Saturday" << endl;

break;

case 'U' : cout << "Sunday" << endl;

break;

default : cout << "Invalid input." << endl;

break;

}

case 'T' : cout << "Please, enter the second letter of the day name: " << endl;

cin >> ltr;

ltr = toupper(ltr);

switch (ltr)

{

case 'U' : cout << "Tuesday" << endl;

break;

case 'H' : cout << "Thursday" << endl;

break;

default : cout << "Invalid input." << endl;

break;

}

case 'M' : cout << "Monday" << endl;

break;

case 'W' : cout << "Wednesday" << endl;

break;

case 'F' : cout << "Friday" << endl;

break;

default : cout << "Invalid input" << endl;

break;

}

break;

default :

cout << "Invalid input, program terminated." << endl;

return 1;

}

return 0;

}

اخوك تيمون :)

#3

السلام عليكم,

أضن أن خطأك هو أنك قمت بوضع switch داخل switch آخر وهدا ليس خطءا ولكنك قمت بوضع break اللازمة في switch الداخلية ونسيت switch الأولى.

يمكنك زيادة break وهدا هو التعديل وزدت 2 break وهما موضوعان بين الأسطر التي تحتوي على نجوم ******.

أتمنى أن يكون هدا ما كنت تريده وإلى اللقاء.

#include <iostream>

using namespace std;

char choice,letter,let,ltr;
int num;

int main()
{

cout << "Please, enter N for numbers and L for letters: " << endl;
cin >> choice;

switch (choice)
{
case 'n':
case 'N': cout << "Please, enter the number of a week day: " << endl;
         cin >> num;
         
         switch (num)
         {
         case 1 : cout << "Saturday" << endl;
                  break;
         case 2 : cout << "Sunday" << endl;
                  break;
         case 3 : cout << "Monday" << endl;
                  break;
         case 4 : cout << "Tuesday" << endl;
                  break;
         case 5 : cout << "Wednesday" << endl;
                  break;
         case 6 : cout << "Thursday" << endl;
                  break;
         case 7 : cout << "Friday" << endl;
                  break;
         default : cout << "Invalid input." << endl;
                   break;
         }
   //****************************
   break;
   //****************************
case 'l':
case 'L': cout << "Please, enter the first letter of the day name: " << endl;
         cin >> let;
         switch (let)
         {
         case 's' :
         case 'S': cout << "Please, enter the second letter of the day name: " << endl;
                   cin >> letter;
                   switch (letter)
                   {
                   case 'a' :
                   case 'A' : cout << "Saturday" << endl;
                              break;
                   case 'u' :
                   case 'U' : cout << "Sunday" << endl;
                              break;
                   default : cout << "Invalid input." << endl;
                             break;
                   }
         case 't' :
         case 'T' : cout << "Please, enter the second letter of the day name: " << endl;
                    cin >> ltr;
                    switch (ltr)
                    {
                    case 'u' :
                    case 'U' : cout << "Tuesday" << endl;
                               break;
                    case 'h' :
                    case 'H' : cout << "Thursday" << endl;
                               break;
                    default : cout << "Invalid input." << endl;
                              break;
                    }
         case 'm' :
         case 'M' : cout << "Monday" << endl;
                    break;
         case 'w' :
         case 'W' : cout << "Wednesday" << endl;
                    break;
         case 'f' :
         case 'F' : cout << "Friday" << endl;
                    break;
         default : cout << "Invalid input" << endl;
                   break;
         }
   //************************
   break;
   //************************
default :
       cout << "Invalid input, program terminated." << endl;
       return 1;
}

return 0;
}
#4

الســــ عليكم ـــــلام.............

أخي cpp

أعتقد إنك لاحظت مكمن الخطورة في إستخدام switch case

فالتداخل فيها يسبب مشاكل كثيرة

كما لاحظت إن ال compiler لا يعتبر نسيانك لل break خطأ ويستمر في تنفيذ جميع الأسطر التالية.

أنصحك باستخدام If فهي أكثر أماناً.

ولكن هذا ما يمنع إنك لازم تعرف طريقة عمل switch في حال صادفتك مرة أخرى.

تحياتي.................

#5

يعطيكم العافيه يا تيمون و chik :) عرفت الغلط وين ..

CompuM4n: عليكم السلام, انا معاك انه الـ if احسن و اكثر أمان و أعرفلها أكثر لكن كان مطلوب مني انه اكتبه باستخدام الـ switch, الـ break ما يقولي عنه الـ compiler صح ادري ولهذا السبب ماعرف وين الغلط:) مشكور

#6

السلام عليكم,

كما أقول دائما في مثل هده الحالات يجب استعمال Debogger للبرنامج وتشغيله سطرا بسطر وهكدا يتضح لنا الخطء حين نصل إلى السطر الدي وضعنا فيه الخطء.

ولدى أقول لأي مبرمج التعلم لهدا لأنه لو طال الزمان أو قصر فإن أي مبرمج سيحتاجه.

إلى اللقاء.

#7

اكتب تغريف المتغيرات بعد تعريف main

use iostream .h

remove

case n:cout<<" ";

write wthiout case n;

#8

خسااارة ،، كان بودي أحلها لك ،،

بس سبقوني الأخوان ،،

<-0 ما صدقت تلاقي مشكلة صغيرونة ،، :D

تحياتي ،،

هذا الموضوع مغلق.

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