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

سؤآل // في الـ C .. ؟

بدأه ms.ROR في 19 أكتوبر 2010 · 13 رد · 670 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا مبتدئة بلفة السي السهلة ..

و طلبت الدكتورة آلة حاسبة بسيطة ..

و كل مآ أكتب الكود يطلعلـي erorr .. ؟؟ :wacko:

شو المشكلة في الكود

qey41821.png

؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة ms.ROR في 19 أكتوبر 2010 في 01:41

#2

حسنا هذا هو الحل و يوجد comment به الخطاء فوق الخطاء

#include <stdio.h>
int main()
{
	int x,y,N;
	char z;
	printf("Please Enter the first number : ");
	scanf("%d", &x);
	printf("Please Enter the second number : ");
	scanf("%d", &y);
	printf("Please Enter the mark : ");
	getchar();
	scanf("%c",&z);
	if(z=='+')
		N=y+x;
	else if(z=='-')
		N=y-x;
	else if(z=='*')
		N=y*x;
	else if(z=='/')
		N=y/x;
	else
		printf("You didn't enter right mark....\n");
	//Forget to put %d
	printf("The output is : %d\n", N);
	return 0;
}

تم تعديل هذه المشاركة بواسطة XMasterrrr في 19 أكتوبر 2010 في 01:51

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3

السلام عليكم

بداية .. أرجو منك تغيير صورة بروفايلك لأنها أصابتني بالدوار, كتبت هذا الرد في أكثر من نصف ساعة تقريبا !!!! :blink: :wacko:

اقتباس
انا مبتدئة بلفة السي السهلة

عن أي لغة تتحدثين !؟ لغة السي تُعتبر من أصعب لغات البرمجة و أكثرها تعقيدا و خصوصا عندما يأتي الحديث عن المؤشرات فما بعد و ما بعدها أشد...!

اقتباس
شو المشكلة في الكود

يمكننا حل السؤال بـ if-else كما يمكننا حله بـ switch و التي أفضلها هنا لأن القيم التي تأخذها z غير متعاكسة.

هذا الكود باستخدام switch

#include <stdio.h>
int main()
{
        int x,y,N = 0;
        char z;
        printf("Please Enter the first number : ");
        scanf("%d", &x);
        printf("Please Enter the second number : ");
        scanf("%d", &y);
        printf("Please Enter the mark : ");
        scanf("%s",&z);
        switch(z)
        {
                 case '+' : N = y + x; break;
                 case '-' : N = y - x; break;
                 case '*' : N = y * x; break;
                 case '/' : 
                 {
                           if(y != 0) N = y / x;
                           else printf("ERROR\a\n"); 
                 }break;
                 default :  printf("You didn't enter right mark....\n");
        }
        printf("The output is : %d\n", N);
        return 0;
}

توجد حالة خاصة في عملية القسمة, إذا كا ن العدد الثاني معدوم فسيُظهر البرنامج كلمة إيرور مع صوت للتنبيه لأنه لا يمكن القسمة على الصفر.

تحياتي.

تم تعديل هذه المشاركة بواسطة khaled_prg في 19 أكتوبر 2010 في 11:02

#4
khaled_prg كتب:

السلام عليكم

بداية .. أرجو منك تغيير صورة بروفايلك لأنها أصابتني بالدوار, كتبت هذا الرد في أكثر من نصف ساعة تقريبا !!!! :blink: :wacko:

عن أي لغة تتحدثين !؟ لغة السي تُعتبر من أصعب لغات البرمجة و أكثرها تعقيدا و خصوصا عندما يأتي الحديث عن المؤشرات فما بعد و ما بعدها أشد...!

يمكننا حل السؤال بـ if-else كما يمكننا حله بـ switch و التي أفضلها هنا لأن القيم التي تأخذها z غير متعاكسة.

هذا الكود باستخدام switch

#include <stdio.h>
int main()
{
        int x,y,N = 0;
        char z;
        printf("Please Enter the first number : ");
        scanf("%d", &x);
        printf("Please Enter the second number : ");
        scanf("%d", &y);
        printf("Please Enter the mark : ");
        scanf("%s",&z);
        switch(z)
        {
                 case '+' : N = y + x; break;
                 case '-' : N = y - x; break;
                 case '*' : N = y * x; break;
                 case '/' : N = y / x; break;
                 default :  printf("You didn't enter right mark....\n");
        }
        printf("The output is : %d\n", N);
        return 0;
}

تحياتي.

قمت من النوم خصيصا لك

البنت من شكلها يتضح انها مبتدئة و ربما لم يدرسوا حتى الان السويتش لذا قمت بعمل نفس الاستعمال ل if - else لها لكى يكون داخل الموضوع

بالتوفيق

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#5
اقتباس
البنت من شكلها يتضح انها مبتدئة و ربما لم يدرسوا حتى الان السويتش لذا قمت بعمل نفس الاستعمال ل if - else لها لكى يكون داخل الموضوع

المهم أنها رأت الحل بأكثر من طريقة, يمكنها اختيار الطريقة الأنسب لها :)

#6

السلام عليكم،

كلا الحلّين صحيحين لتنفيذ الهدف، لكن، كلا الحلّين لم يذكرا لصاحبة السؤال سبب المشكلة الأساسية :)

بغض النظر عن كون الإشارة المدخلة forward slash أو back slash من أجل تمثيل عملية القسمة، فالمشكلة تكمن في كون الإشارة forward slash والتي يجب عمل escaping لها وإلا تم اعتبارها Escaping Character.

مشكلتك حلها بسيط

تصحيح السطر الذي يحوي الخطأ بالشكل التالي:

else if (z == '\\')
2

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7
اقتباس
بغض النظر عن كون الإشارة المدخلة forward slash أو back slash من أجل تمثيل عملية القسمة، فالمشكلة تكمن في كون الإشارة forward slash والتي يجب عمل escaping لها وإلا تم اعتبارها Escaping Character.

+1

ما فهمت الفكرة !, ممكن تشرح أكثر لو سمحت ؟, أرجو أن تشرح بمصطلحات عربية أو فرنسية لكي أفهمها.

========

تم تعديل مشاركتي بالأعلى لاحتوائها على خطأ "القسمة على الصفر".

دمتم سالمين.

#8
khaled_prg كتب:

ما فهمت الفكرة !, ممكن تشرح أكثر لو سمحت ؟, أرجو أن تشرح بمصطلحات عربية أو فرنسية لكي أفهمها.

هل قرأت الصفحة التي وضعت رابطاً لها ؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9
اقتباس
هل قرأت الصفحة التي وضعت رابطاً لها ؟

للأسف .. لا أعرف الإنجليزية فنحن ندرس بالفرنسية فقط ! أضف إلى ذلك أن ترجمة google غير دقيقة ...! :blush:

#10
اقتباس
للأسف .. لا أعرف الإنجليزية فنحن ندرس بالفرنسية فقط ! أضف إلى ذلك أن ترجمة google غير دقيقة ...! blush.gif

أخي الكريم :

الـEscaping هي تلك التي تمثل بعد إشارة /

فمثلا ً للسطر الجديد /n

للـTAB نستخدم /t

لإصدار صوت /a

و كذلك و بما أن / هو الذي يميزها و يفحص المحرف الذي بعده , كان من اللازم أن يتم كتابة // كي يطبع / و لا يتفحص المحرف الذي بعده

نفس الأمر يطبق على " حيث لطباعتها نكتب /"

#11
XMasterrrr كتب:

حسنا هذا هو الحل و يوجد comment به الخطاء فوق الخطاء

#include <stdio.h>
int main()
{
	int x,y,N;
	char z;
	printf("Please Enter the first number : ");
	scanf("%d", &x);
	printf("Please Enter the second number : ");
	scanf("%d", &y);
	printf("Please Enter the mark : ");
	getchar();
	scanf("%c",&z);
	if(z=='+')
		N=y+x;
	else if(z=='-')
		N=y-x;
	else if(z=='*')
		N=y*x;
	else if(z=='/')
		N=y/x;
	else
		printf("You didn't enter right mark....\n");
	//Forget to put %d
	printf("The output is : %d\n", N);
	return 0;
}

ثـآنكيـو أخوي ع مسآعدة ..

فعلآ نسيت %d > مآ أنتبهتلهـآ .. !

بس عندي شوي أسئلة ..

* انت كتبت return 0;

> هل لآزم كل نهآية برنآمج أكبتهـآ .. ؟؟ ؟؟

* و سؤآل // متى أكتب main () و متى أكتب int main > يفرق .. ؟

سوري ع الاسئلة لكن انا تونـي بآدئـة .. هذآ أول سمستر .. :unsure:

#12

XMasterrrr

طبـقت نفس الكود .. بس بعد مآ أدخل الرقمين و الاشارة ، تروح الشاشة ع طول ..

فـأضفت scanf("%"); في النهآيـة ، فأتثبتت > هل الطريقة صحيحة .. ؟

#13
Xacker كتب:

السلام عليكم،

كلا الحلّين صحيحين لتنفيذ الهدف، لكن، كلا الحلّين لم يذكرا لصاحبة السؤال سبب المشكلة الأساسية :)

بغض النظر عن كون الإشارة المدخلة forward slash أو back slash من أجل تمثيل عملية القسمة، فالمشكلة تكمن في كون الإشارة forward slash والتي يجب عمل escaping لها وإلا تم اعتبارها Escaping Character.

مشكلتك حلها بسيط

تصحيح السطر الذي يحوي الخطأ بالشكل التالي:

else if (z == '\\')

ايـه انا كنت حآطـه \

و أستغربت القوس مآ أتلون .. !

المفروض /

ثآنكيو ^ـ^

#14

khaled_prg سوري اخوي اذا اخذت من وقت الكثير .. :unsure:

لـسـآ مآ وصـلت لـ سويتش ~

سيفت كودك .. حـأحتآجـه لآ أخذنآ السويتش ..

ألف شكـرر ^ـ^

تم تعديل هذه المشاركة بواسطة ms.ROR في 20 أكتوبر 2010 في 00:38

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