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

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

بدأه yacinebrca في 8 فبراير 2014 · 22 رد · 1,400 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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


 


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


 


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


 


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


 


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


 


 


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


 


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


 


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


 


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


 


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


 


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


 


1391880959491.png


 


 


 


 


 


1391880959612.png


 


 


 


 


 


1391880959723.png


 


 


 


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


 


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


 


+


 


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


 


 


 


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


تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 7 مارس 2014 في 15:28

elearning_image.jpg

#2

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

_____________

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

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

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 8 فبراير 2014 في 21:53

#3

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

هل تقصد أن

Ncc = 2 * N

تم تعديل هذه المشاركة بواسطة dracola168 في 8 فبراير 2014 في 21:58

‎لا تيأسن إذا كبوتم مرة ** إن النجاح حليف كل مثابر‎

 

Import AnyCodeYouLearned Project = findNewProjecthasProject = Truewhile (!dead&&hasProject) { codeingisDone = try_Codeif (isDone)  Project = findNewProjectelse learn_code
#4

@dracola168

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

لدينا

6 6 6 6

و

6 6 5 5

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

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

بما ان 6 مشترك

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

 

بالتوفيق

___________________

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

#5

حسناً سأقدم حلي الآن .. باستخدام حلقة 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 في 8 فبراير 2014 في 23:39 — السبب: OO-A

#6

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


 


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


 


 


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


تم تعديل هذه المشاركة بواسطة yacinebrca في 9 فبراير 2014 في 19:36

elearning_image.jpg

#7

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


#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);

              }


  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) k=1;


                     if(k != 1 ){


                                        for(j=0;j<M;j++)

                                                       if(x[j]== x) p++;


                                        for(j=0;j<M;j++)

                                                       if(x== 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;

}

elearning_image.jpg

#8

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


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


تم تعديل هذه المشاركة بواسطة yacinebrca في 9 فبراير 2014 في 19:48

elearning_image.jpg

#9

وهذا ليس حلي :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
#10

yacinebrca@

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

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

#11

@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 في 9 فبراير 2014 في 21:14

#12

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


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


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


 


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


تم تعديل هذه المشاركة بواسطة yacinebrca في 9 فبراير 2014 في 21:36

elearning_image.jpg

#13

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

 

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

int X[0x36a2]={0},

elearning_image.jpg

#14

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

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

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

 

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

 

 

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

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

 

شكراً لك

بالتوفيق

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 9 فبراير 2014 في 22:13

#15
اقتباس

 

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

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

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

1
#16

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

elearning_image.jpg

#17

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

 

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

بالتوفيق

#18

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

1 −1

elearning_image.jpg

#19
اقتباس

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

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

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

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

#20

..

تم تعديل هذه المشاركة بواسطة yacinebrca في 10 فبراير 2014 في 10:40

elearning_image.jpg

#21

نص التمرين

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

elearning_image.jpg

#22
مصطفى 36a2 كتب:

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

 

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

 

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

 

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

 

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

 

 

وفقك الله

elearning_image.jpg

#23
اقتباس

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

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

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