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

مشكلة المقارنة بين ثلاث قيم وايجاد القمية الاكبر منها

بدأه faisal-alsubaie في 5 مايو 2012 · 6 رد · 911 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 #include<stdio.h>
 int main()
{
	int  num1 , num2 , num3;

	printf ("Enter the first number: ");
	scanf("%d", & num1);
	printf ("Enter your second number: ");
	scanf ("%d", & num2);
	printf ("plese enter therr number: ");
	scanf ("%d", & num3);

	if (num1>num2 || num1>num3)
		printf ("the big number is %d\n", num1);

	else if   (num2>num1 || num2>num3)
		printf ("the big number is %d\n ", num2);


	else if (num3>num1 || num3>num2)
		printf ("the big number is %d\n ", num3);	

	else
	printf ("Errer");
	return 0;

}
#2

السلام عليكم

هناك ملاحظتان على الكود :

  • قم بإبدال المؤثر || بـ &&
  • لا داعي لــ else الأخيرة

للفائدة, يمكنك كتابة الكود بطريقة أخرى :

#include <stdio.h>
#define max(x,y,z)((x>y)?((x>z)?x:z):(y>z)?y:z)
int main ()
{
	 int  num1 , num2 , num3;
	 printf ("Enter the first number: ");
	 scanf("%d", & num1);
	 printf ("Enter your second number: ");
	 scanf ("%d", & num2);
	 printf ("plese enter therr number: ");
	 scanf ("%d", & num3);
	 printf ("The max number = %d\n",max(num1 , num2 , num3));
	 return 0;
}

أرجو لك التوفيق.

تم تعديل هذه المشاركة بواسطة khaled_prg في 5 مايو 2012 في 16:10

1
#3

إستخدم if:

int a=1, b=2, c=3;

int result = a;

if (result < b) result = b;

if (result < c) result = c;

إستخدم ternary operator:

int a=1, b=2, c=3;

int result = (result = (a>b? a: b))>c? result: c;

استخدم std::max كالتالي:

#include <algorithm>
using std::max;

int main()
{
  int a=1, b=2, c=3;

  int result = max(max(a, b), c);
}

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#4
khaled_prg كتب:

السلام عليكم

هناك ملاحظتان على الكود :

  • قم بإبدال المؤثر || بـ &&
  • لا داعي لــ else الأخيرة

للفائدة, يمكنك كتابة الكود بطريقة أخرى :

#include <stdio.h>
#define max(x,y,z)((x>y)?((x>z)?x:z):(y>z)?y:z)
int main ()
{
	 int  num1 , num2 , num3;
	 printf ("Enter the first number: ");
	 scanf("%d", & num1);
	 printf ("Enter your second number: ");
	 scanf ("%d", & num2);
	 printf ("plese enter therr number: ");
	 scanf ("%d", & num3);
	 printf ("The max number = %d\n",max(num1 , num2 , num3));
	 return 0;
}

أرجو لك التوفيق.

يعطيك العافية ما قصرت فعلا اشتغل البرنامج معي و ما قصرت

مشكور على الفائد انا ارى انها اقل في الخطوات و اسهل

بس حبيت استفسر بعد define# وش طلبنا من الكمبيوتر ممكن تشرح لي

مع العلم اني استخدم نظام تشغيل ليونكس حبث اني جرب اسوي شرح السيد Μωάμεθ αλάά بس طلع عندي اخطاء :(

#5
اقتباس
حبيت استفسر بعد define# وش طلبنا من الكمبيوتر ممكن تشرح لي

هناك طريقتان لتعريف الثوابت في لغة السي, إما عن طريق :

  • استخدام الكلمة المحجوزة const
  • استخدام الماكرو #define

الشكل العام للماكرو هو :

#define constatName constatValue

مثال بسيط :

#include<stdio.h>
#define NUM 3
int main()
{
	 printf("NUM = %d",NUM);
	 return 0;
}

في السطر الثالث من البرنامج قمنا بتعريف ماكرو باسم NUM, وظيفته تكمن في استبدال NUM بالقيمة 3.

مثال آخر :

برنامج يجمع عددين صحيحين يُدخلهما المستخدم :

#include<stdio.h>
#define S(a,b) a+b
int main()
{
	 int x,y;
	 printf("x = ");
	 scanf("%d",&x);
	 printf("y = ");
	 scanf("%d",&y);
	 printf("%d + %d = %d",x,y,S(x,y));
	 return 0;
}

المتغيرين x و y يمكن استبدالهما بأي متغيرين أو قيمتين داخل البرنامج و اسم الماكرو هو الذي يحدد العملية التي يقوم بها .. هل هي عملية ضرب أو جمع أو طرح أو .. وذلك بناء على المعادلة الموجودة في الطرف الأيمن من الماكرو.

أخيرا, ثوابت الماكرو يمكن تغييرها في أي وقت عن طريق :

 #if,#else,#elif,#ifdef,#ifndef,#undef,#endif

اقتباس
مع العلم اني استخدم نظام تشغيل ليونكس حبث اني جرب اسوي شرح السيد Μωάμεθ αλάά بس طلع عندي اخطاء :(

لعلك لم تكتب الأكواد كما يجب !, الأستاذ علاء كتب أشياء قياسية في اللغة و بالتالي فهي صالحة لكل نظام تشغيل :

#include<stdio.h>
int main()
{
	 int a=1, b=2, c=3,result = a;
	 if (result < b) result = b;
	 if (result < c) result = c;
	 printf ("The max number = %d\n",result);
	 return 0;
}

#include<stdio.h>
int main()
{
	 int a=1, b=2, c=3;
	 int result = (result = (a>b? a: b))>c? result: c;
	 printf ("The max number = %d\n",result);
	 return 0;
}

الكود الأخير بالسي++ :

#include <algorithm>
using std::max;
int main()
{
  int a=1, b=2, c=3;
  int result = max(max(a, b), c);
  cout<<result<<endl;
}

أرجو لك التوفيق.

#6

شكرا على الايضاح صحيح اتضح انني لم ادخل الكود بشكل الصحيح :)

#7

الكود ب c

#include <stdio.h>
#define Max(a,b,c) \
a = (a = (a>b? a: b))>c? a: c;\
printf("max = %d",a);

int main()
{

int x=0,y=0,z=0;

printf ("Enter the first number:   "); scanf("%d",&x);

printf ("Enter your second number: "); scanf("%d",&y);

printf ("plese enter therr number: "); scanf("%d",&z);


Max(x,y,z)

return 0;
}

الكود ب c++

#include <iostream>
#define Max(a,b,c) \
a = (a = (a>b? a: b))>c? a: c;\
cout<< "Max =" << a << endl;

using namespace std;

int main()
{

int x=0,y=0,z=0;

cout<<"Enter the first number:   "; cin>>x;

cout<<"Enter your second number: "; cin>>y;

cout<<"plese enter therr number: "; cin>>z;


Max(x,y,z)

return 0;
}

طريقة أخرى بالمؤشرات و المصفوفة

#include <iostream>
#define Max(p) \
*p= (*p = (*p >*(p+1)?*p: *(p+1)))>*(p+2)?*p:*(p+2);\
cout<< "Max =" << *p << endl;

using namespace std;

int main()
{

static int tab[3]={0};

cout<<"Enter the first number:   "; cin>>tab[0];

cout<<"Enter your second number: "; cin>>tab[1];

cout<<"plese enter therr number: "; cin>>tab[2];

int *q=tab;

Max(q)

system("pause");

return 0;
}

هذا حلي و إذا في ملاحظة أو رأي من خبرائنا بالمنتدى فلا تبخلوا علينا بأفكاركم و ملاحظاتكم

تم تعديل هذه المشاركة بواسطة مومو (momo) في 6 مايو 2012 في 00:07

i love you mama

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