• 0
yacinebrca

قيم مستواك في حل هذه المشكلة ؟؟؟

سؤال

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


 


اخواني الكرام سأقدم لكم تمرين ليس صعبا بمعنى الكلمة .. بل يتطلب بعض الذكاء..


 


أقصد ذكاءك ... وليس ذكاء غيرك .. :angry:


 


أرجوا ان يحاول كل شخص في حله هذا التمرين لوحده دون الاستعانة باي مرجع ...


 


عسى أن نبني قاعدة متينة ;)  ... وفقني الله واياكم ...


 


 


التمرين .... يقوم المستخدم بملء جدولين x و y  باي قيم يشاء .. لتسهيل عملية الادخال كل جدول يحمل 10 عناصر ..


 


ثم تقوم بطباعة قيمتين


 


القيمة الاولى : وثمتل عدد العناصر المشترك بين الجدولين ( هي N)


 


أما القيمة الثانية هي Ncc)


 


فستكون عدد الخانات ( خانات الجدول) التي تحمل نفس العناصر المشتركة بين الجدولين x و y.


 


سأضع بعض الأمثلة  لنقرب الصورة أكثر


 


1391880959491.png


 


 


 


 


 


1391880959612.png


 


 


 


 


 


1391880959723.png


 


 


 


ملاحظة...!!!!!


 


الحل يكون بلغة السي


 


+


 


محتوى الكود ارجوا ان يكون بسيطا فهو لا يستحق الا حلقة تكرارية وأداة الشرط ....فقط.. :excl: :excl: :excl:


 


 


 


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


تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

22 إجابة على هذا السؤال .

  • 0

ما هي حدود الأعداد ؟ هل هناك اكبر من 100 او اصغر من -100 ؟

_____________

ان لم يكن هناك حد للأعداد فلا يمكن حل المسألة بحلقة واحدة , بل سنحتاج اثنتين

بانتظار الاجابة

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عندي سؤال أيضا :

هل تقصد أن

Ncc = 2 * N
تم تعديل بواسطه dracola168
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@dracola168

لا , N هو عدد العناصر المشتركة فمثلاً

لدينا

6 6 6 6

و

6 6 5 5

لدينا 6 مشترك بين المصفوفتين وفقط .. لذلك N=1

اما N فهو عدد الخانات التي تحوي عناصر مشتركة ( وتُحسب مرة واحدة )

بما ان 6 مشترك

لاحظ انه موجود في 4 اماكن في الأولى وفي مكانين في الثانية وبذلك يكون عدد الخانات(الاماكن) التي تحوي عناصر مشتركة هو 2 فقط وهو Ncc كما ذكر الاخ ياسين

 

بالتوفيق

___________________

ملاحظة : سؤالي السابق الهدف منه معرفة عدد الحلقات المسموح بها .. فقط لا غير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسناً سأقدم حلي الآن .. باستخدام حلقة for واحدة

#include<stdio.h>#define OO(O) O_O O,_-O*10),scanf("%d",&o),#define O_O (printf("enter element %c[%d] : ",120+int main(){    int O[0x36a2]={0},o0,O0,_,o;    for(o0=0,O0=0,_=0;_-20;_++)        _<10?OO(0)O[o+1000]++):             OO(1)o+=1000,o0+=(                O  [   o   ]>   0   ),             o[ O  ]   *=  1-   2   *            (o[ O  ]   >   0), O0+= !!O[             o],O  [   o]+=        !!O[             o],(_-           19?0    :printf("N=%d\tNcc=%d\n",o0,O0)    ));return main();}

الكود مشوّش لضمان حقوق النشر :D

 

بالتوفيق

تم تعديل بواسطه مصطفى 36a2
OO-A
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماشاء الله ... حلك موفقك .... لكن كتابة الكود :D :excl:


 


الحل بحلقة تكرارية واحد ..شيء جميل ..


 


 


أنا الحل الذي سأقدمه بها عدد غير منتهي من الحلقات التكرارية :D :D


تم تعديل بواسطه yacinebrca
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحـــــــــــــــــــــــــــــــــــــــــــــــــــــــل :



#include <stdio.h>
#include <stdlib.h>

#define M 10

int main()
{
system("color 9f");

int x[M],y[M],i,j,t=0,p=0,Ncc=0,k=0,N=0;
system("color 9f");
for(i=0;i<M;i++)
{ printf("\n x[%d] = ",i);
scanf("%d",&x[i]);
}

for(j=0;j<M;j++)
{ printf("\n y[%d] = ",j);
scanf("%d",&y[j]);
}



for(i=0;i<M;i++){
for(j=0;j<i;j++) if(x[j]== x[i]) k=1;

if(k != 1 ){

for(j=0;j<M;j++)
if(x[j]== x[i]) p++;

for(j=0;j<M;j++)
if(x[i]== y[j]) t++;

if(t!=0) N++;

if(p>=t) Ncc+=t;
else Ncc+=p;
p=0;t=0;
}

k=0;
}


printf("\n Ncc = %d \t N = %d\n\n",Ncc,N);

system("PAUSE");
return 0;
}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الأخ مصطفي أتمنى أن تقوم بترتيب الكود الذي كتبته .


.لكي نفهم محتوى الكود ...


تم تعديل بواسطه yacinebrca
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وهذا ليس حلي :D

انما فك الشفرة التي قام الاخ مصطفى بوضعها  (ارجو ان لا يغضب  :lol: )

#include<stdio.h>int main(){    int Array[0x36a2]={0},i,indx;    int N = 0;	int Ncc = 0;	for(i=0; i-20; i++)	{        if (i<10) 		{		   printf("enter element X[%d] : ",i-0*10);		   scanf("%d",&indx);		   Array[indx+1000]++;		 }          else 		{		  printf("enter element Y[%d] : ",i-1*10);		  scanf("%d",&indx);		  indx += 1000;		  N += ( Array[indx] > 0 );          Array[indx] *=  1- 2 *( Array[indx] > 0);		  Ncc += !!Array[indx];		  Array[indx]+= !!Array[indx];		  if  ( i - 19 == 0) printf("N=%d\t Ncc=%d \n",N,Ncc);	    }     }		getchar(); return 0;}
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

[email protected]

ولكنك قلت حلقة واحدة , و انت استخدمت حلقات كثيرة . لو وضحت الامر من البداية لكان الامر اسهل من فكرة الحلقة الواحدة

اعجبني كثيرا حل الاخ مصطفى , ماشاء الله عليك . بدأت تظهر عليك مظاهر الاحترافية . ماشاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@codz

ما شاء الله عليك ! فككت التعويذة :D

 


ولكنك قلت حلقة واحدة , و انت استخدمت حلقات كثيرة . لو وضحت الامر من البداية لكان الامر اسهل من فكرة الحلقة الواحدة

بالضبط هذا ما كنت أسأل عنه في أول رد ..

بما أن codz دمّرلي طموحاتي , سأضع الكود الأصلي الغير مشوش ( هل فككته بنفسك ؟ كم استغرق معك ؟ )

#include<cstdio>int main(){    int X[0x36a2]={0},N=0,Ncc=0,i=0,n;    for(;i<20;i++)    {        if(i<10)        {            printf("enter element x[%d] : ",i);            scanf("%d",&n);            X[n+1000]++;        }else{            printf("enter element y[%d] : ",i-10);            scanf("%d",&n);            if(X[n+1000]>0)                N++,X[n+1000]*=-1;            if(X[n+1000])                X[n+1000]++,Ncc++;        }    }    printf("N=%d\tNcc=%d\n",N,Ncc);    return main();}

سأزيد التشويش في المرات القادمة بما أن codz هنا .. تشرفنا أخي

بالمناسبة , الخوارزمية مشوشة بما يكفي ,

 

بالتوفيق للجميع ,

بانتظار تمرين آخر

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي لم أكن افصد حلقة واحدة ..... بل كانت ملاحظتي ....


ان يقوم الاشخاص بكتابة الكود بحلقة تكرارية وأدة شرط فقط ..


.. ولك الحرية التامة في استخدام  عدد غير منتهي من الحلقات .. أعتذر... ..


 


أظن الامر سهل عليك الآن ...أتمنى أن ارى حلك .....


تم تعديل بواسطه yacinebrca
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الأخ مصطفى ... انت استعملت جدول واحد فقط x.... والمطلوب جدولين x  وy, ,

 

قالمستخدم أدخل كل قيمه في جدول واحد ..... :blush: :blush:

int X[0x36a2]={0},
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هذا هو نمط الأسئلة المدرسية ..

اكتب برنامجاً يطبع الأرقام من 1 إلى 10 باستخدام حلقة do whileوعرّف متغيراً اسمه i بدون سبب , ثم عرّف مصفوفة من 4 عناصر واطلب من المستخدم أن يبتسم :lol:

خلاص البرنامج له دخل وخرج صحيح , هل هناك شيء مهم غير ذلك :)

 

بالمناسبة , البرنامج ينفجر عند إدخال أعداد أكبر من 12986 او أصغر من -1000 , ولكنه بالمقابل يمكنه إدخال مئات ملايين العناصر بعد القيام بتعدلات طفيفة

 

 

رداً على سؤالك :

لو كان للبرنامج تتمّة , ربما كنت سأخزن الأرقام كما ذكرت حضرتك , ولكن طالما أن المطلوب قد تم , فلا داعي للمزيد من المحددات ,

 

شكراً لك

بالتوفيق

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

( هل فككته بنفسك ؟ كم استغرق معك ؟ )

فقط لانه صغير يعني لا يأخذ وقت (حوالي عشرين دقيقة) , لو كان كبير لما فعلت .

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنا كنت اريد منك ان تلتزم باطار التمرين .... ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا بأس ’يمكنك وضع ما تشاء من الشروط ولكن في نص التمرين وليس بعد انتهاء الامتحان :)

 

بانتظار جديدك

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يقوم المستخدم بملء جدولين x و y  باي قيم يشاء

المستخدم هو من سيملا جدولين وليس أنا ..

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

ولا ارى اي فائدة لكل هذا الجدال!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

..

تم تعديل بواسطه yacinebrca
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نص التمرين

التمرين .... يقوم المستخدم بملء جدولين x و y باي قيم يشاء .. لتسهيل عملية الادخال كل جدول يحمل 10 عناصر ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المستخدم هو من سيملا جدولين وليس أنا ..

 

أخي نحن نتناقش على الحل  ....

 

أنا كنت اريد منك ان تقوم بتعريف جدولين x وy ....

 

وهذا ليس فبه أي شيئ ..

 

العفوا ربما لم تفهم قصدي .....

 

 

وفقك الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنا كنت اريد منك ان تقوم بتعريف جدولين x وy ....

هذا ما كنت أقصده بالتمارين المدرسية .. أكرهها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .