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

تمرين حول ترتيب المصفوفات

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

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


 


اخواني الكرام  سأقدم لكم تمرين خاص بترتيب العناصر داخل جدول ....


 


فمثلا لو أدخل المستخدم هذه السلسلة من الاعداد :


122


2


0


17


11


33-


55


300


3


فستكون النتيجة ... ترتيب الأعداد تصاعديا ثم طباعتها على هذا الشكل :


33-


0


2


3


11


17


55


122


300


 


اذا كرر المستخدم العدد/مثلا


 


5


2


1


1


1


2


9


 


فستكون النتيجة


 


1


1


1


2


2


5


9


 


الجدول يحمل 10 عناصر لتسهيل عملية الادخال .


 


 


الحل بلغة السي ..وبعيدا عن الدوال المساعدة


 


مجرد حلقات تكرارية لادخال ثم الترتيب ثم الطباعة ..


 


اتمنى انا ارى حلك الخاص أخي الفاضل..


 


 


 


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


 


 


دمتم في رعاية الله وحفظه


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

elearning_image.jpg

#2

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

أخي العزيز ... موضوعك يخص ما يسمى بخوارزميات الترتيب وهي كثيرة ومن أشهرها : الترتيب بالإدراج insertion ، الترتيب بالفقاعات Bubbles، بالاختيار selection، الترتيب السريع quick sort، ...
وإليك مثالا تطبيقيا بلغة السي ...

#include <stdio.h>int main(){int Tab[10], // Array of 10 integer , Declarationi,j, // counters (for FOR loops)tmp; // temporary variable (to swap)printf("Enter the values:\n");for(i=0;i<10;i++)scanf("%d",&Tab); // Enter values in the arrayfor(i=0;i<10;i++){                   for(j=0;j<10;j++){                             if(Tab < Tab[j]){tmp = Tab;                                                 Tab= Tab[j];                                                 Tab[j]=tmp;                                      }   }}for(i=0;i<10;i++)printf("%d   ",Tab); // Print values of the array on the screengetchar();return 0;}

وإليك رابطا من المكتبة العربية الشهيرة:
http://www.kutub.info/library/book/3401

وشكرا .. كان الله راعيكم وموفقكم والسلام عليكم

Different algorithms.pdf

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 6 فبراير 2014 في 12:47 — السبب: تنسيق الكود

#3

أخي الكود لا يعمل ..

 

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

 

يمكن ترتيب العناصر دون الجوء الى متغير آخر

                             if(Tab < Tab[j]){tmp = Tab;                                                 Tab= Tab[j];                                                 Tab[j]=tmp;                                      }   }}

 هكذا

x=x+x[j];x[j]=x-x[j];x=x-x[j];

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

elearning_image.jpg

#4

محاولات الأعضاء انعدمت ... والله لا أعلم اين المشكل !!!!!!!!!


 


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


( الترتيب تنزليا )


printf("\n  %c x[%d] =  ",254,i


);


أدخلت كود ascii..فالرقم 254 يمثل علامة البدأ


#include <stdio.h>

#include <stdlib.h>

#define M 10


int main()

{

    system("color f3");

  float    x[M],a;

  int     i,j=0;


  printf("________________");

  for(i=0;i< M;i++){

                     printf("\n  %c x[%d] =  ",254,i);

                     scanf("%f",&x);

                     printf("________________");

                     }

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

                  {

                  for(i=0;i< M;i++){

                                      if(x[j]> x)

                                               {

                                                          a = x;  

                                                       x = x[j];

                                                       x[j] = a ;


                                               }


                                   }

                  }

                  printf("\n                                          *-*-*-  Appuyez sur n'importe quelle touche  *-*-*-*");

                  system("pause>nul");

                  system("color 3f");

  printf("\n\n\n________________");


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

                {

                     printf("\n %c x[%2d] = %4.2f \n",254,i,x);

                printf("________________");}


                printf("________________\n");


  system("PAUSE>nul");	

  return 0;

}

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

elearning_image.jpg

#5

 الحل (الترتيب  تصاعديا )..

#include <stdio.h>#include <stdlib.h>#define M 10int main(){    system("color f3");  float    x[M],a;  int     i,j=0;    printf("________________");  for(i=0;i< M;i++){                     printf("\n  %c x[%d] =  ",254,i);                     scanf("%f",&x);                     printf("________________");                     }  for(j=0;j<M;j++)                  {                  for(i=0;i< M;i++){                                      if(x[j]< x)                                               {                                                      x=x+x[j];                                                      x[j]=x-x[j];                                                       x=x-x[j];                                               }                                     }                  }                  printf("\n                                          *-*-*-  Appuyez sur n'importe quelle touche  *-*-*-*");                  system("pause>nul");                  system("color 3f");  printf("\n\n\n________________");      for(i=0;i< M;i++)                {                     printf("\n %c x[%2d] = %4.2f \n",254,i,x);                printf("________________");}                                printf("________________\n");    system("PAUSE>nul");	  return 0;}

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

elearning_image.jpg

#6
اقتباس

محاولات الأعضاء انعدمت ... والله لا أعلم اين المشكل !!!!!!!!!

!  ألم يقدم لك الأخDr.Mimo حلاً , لماذا لا تعتبره موجوداً ؟

 

ولكن لماذا لم يعمل الكود عندك ؟ ماذا يعطيك ؟ ليس فيه أي خطاً !

#7

اخي الفاضل من قال لك اني لما نظر الى  كود الاخmimo....الم تشاهد ردي له ...


 


 


انا قلت ان محاولات الاشخاص انعدمت ... لان هناك 114 مشاهدة ... وتم تقديم حلا واحد ... فما رأيك ..


 


اتمنى انا ارى حلك ...


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

elearning_image.jpg

#8
اقتباس

لان هناك 114 مشاهدة ... وتم تقديم حلا واحد ... فما رأيك .. اتمنى انا ارى حلك ...

المشاهدات تُحتسب من داخل وخارج أعضاء المنتدى , هناك مواضيع عليها آلاف المشاهدات وبدون ردود فما هذا المقياس المكسور ؟ رد واحد كافٍ وزيادة .. فليس للمسألة عدة حلول حتى يكون هناك عدة ردود

لو كانت المسألة صعبة أو لها عدة طرق للحل , لوجدت عدد الأعضاء المشاركين أكبر , ولكن عندما تعترض على عدم وجود حلول , أو عندما لا يعجبك "الرد الواحد" فكأنك لا تقيّم رد الأخDr.Mimo

خلاصة القول : عدد المشاركين يتناسب مع جودة المحتوى

بانتظار المزيد

بالتوفيق

#9

بربك 114 مشاهدة كل من خارج المنتدى ........


 


وصدقة في قولك عدد المشاركين يتناسب مع جودة المحتوى...


 


نعتذر عما صدر من محتوى ..... ...

elearning_image.jpg

#10
اقتباس

نعتذر عما صدر من محتوى ..... ...



أخي الكريم ..

ما ذكرته لك , هو لتحسين جودة المحتوى , فليس هناك من هو كامل .. وليس لازعاجك أو احراجك

أولاً : الصعوبة والسهولة ( تمرينك يُعتبر من التمارين السهلة )

ثانياً : الفكرة المراد توصيلها ( فكرة الترتيب مكررة كثيراً)

ثالثاً : التنسيق في الخط والألوان ( انتبه له فالناس ينظرون للمظاهر (
أحييك بطرح التمارين وأتمنى منك المزيد
لا أريد من هذه الرسالة سوى الوصول معاً إلى محتوى متميز , وليس هنا من هو أفضل من الآخر رتبة أو منصباً , كلنا نتعاون لتحسين بعضنا
بانتظار جديدك
وفقك الله :)

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