[تمرين] ترتيب مجموعه قيم تصاعديا
#1
السلام عليكم و رحمة الله و بركاته

تمرين (لمهندسي صف XX):

طبيعة هده القيم عبارة Record بها حقلين addr , value .

كل قيمة أو عنصر له عنوان خاص به (addr) و قيمة خاصة (value) .

شروط الترتيب :

- قاعدة min / max غير مسموح بها .
- نقارن value العنصر الأول بالدي قبله إدا كان أصغر يتم الإستبدال في موضع العنصرين ككل
(value,addr) .
- لا يسمح بإنشاء أكثر من جدول واحد (Array) .

بالتوفيق ,,
I'M Fly Like A G6

الرد
#2
نظراً لعدم ورود أي إجابة عن هذا السؤال
أقدم لكم الحل بلغة باسكال كمحاولة مني
عساه يكون صحيحاً
PHP كود :
program ex5;
uses crt;
var 
t:array[1..4] of integer;
    
i,s:integer;
begin
clrscr
;
  for 
i:=1 to 4 do
    
readln(t[i]);
    
writeln(' ----------  ');
    
s:=t[1];
  for 
i:=2 to 4 do
     if 
t[i]>s then
     s
:=t[i];
write(s);
   
readln;
end. 
الرد
#3
كيف يكون الترتيب ؟
1-عددي
2-حرفي
-اول محرف
-ترتيب افقي وعمودي
عمودي في القائمة كاملة
وافقي في نفس الخلية
وعن طريق المقارنة يتم الترتيب

الحل
1- نعمل Record بالحقلين
2- تحميلهم بالقائمة العشوائية
3- نبدء المقارنه بأول محرف
فأذا كان هناك تشابه نبدأ بالمقارنة الافقية

نحتاج دالتين وتابع
VerticalArrange
HirozentalArrage
Button1click

وبهذا ننتهي من التمرين
تحياتي
الرد
#4
السلام عليكم ورحمة الله
انا مبتدأ في البرمجة بلغة الدلفي هل من الممكن وضع اجابة عن
سؤال ترتيب القيم عددية
وبارك الله فيكم
الرد
#5
وعليكم السلام ورحمة الله وبركاته

انا جاوبت على التمرين بلغة الباسكال مع افتراض
ان القيم هي اعداد صحيحة
PHP كود :
PROGRAM ordination;
type
Rec
=Record addr:string[10]; value:integer; end;
var 
T:array[1..10]of Rec;
    
min,i,j,Z:integer;a:Shortstring;
begin
 
//---- la romlassage ---
For i:=1 to 10 do
    
begin
    Writeln
('addr de T',i);
   
Readln(T[i].addr);
    
Writeln('value de T',i);
   
Readln(T[i].value);
   
end;
For 
i:=1 to 10 do
    for 
j:= 1 to 10 do
        if 
T[j].value > T[i].value then
        begin
           Z
:=T[i].value;
           
a:=T[i].addr;
           
T[i]:= T[j];
           
T[j].value:=Z;
           
T[j].addr:=a;
        
end;
        
//-------l affichage -----------
     
for i:=1 to 10 do
         
writeln('Addr= ',T[i].Addr,' value= ',T[i].value);
readln;
readln;

end. 

بالتوفيق
وتعاونوا على البر و التقوى ، ولا تعاونوا على الاثم والعدوان
الرد
#6
السلام عليكم

ممكن شرح خصوصا هنا
PHP كود :
if T[j].value > T[i].value then 
كأني اقول اذا كان (تي 1 اكبر من تي 1) ؟ وهما متساويين
وهنا نفس الوضع
PHP كود :
Z:=T[i].value;
           
a:=T[i].addr;
           
T[i]:= T[j];
           
T[j].value:=Z;
           
T[j].addr:=a; 
الرد
#7
sadwolf كتب :
PHP كود :
if T[j].value > T[i].value then 
كأني اقول اذا كان (تي 1 اكبر من تي 1) ؟ وهما متساويين
[/PHP]
[COLOR="DarkGreen"]
وعليكم السلام اخي
اولا ان القيمتين ليستا متاويتان لان الاولى T[iiiiii] والثانية T[jjjjj]

ساعطيك شرح مبسط عن طريقة الترتيب

في كل مرة نثبت خانة من الخانات بالمتغير i ثم نقارنها مع باقي خانات الجدول الموالية لها
فعند وجود قيمة اصغر منها (اي الخانة i ) نقوم بايتبدالهما ببعض وذالك بهذا الجزء:[/COLOR]
كود :
begin Z:=T[i].value; a:=T[i].addr; T[i]:= T[j]; T[j].value:=Z; T[j].addr:=a; end;
[COLOR="DarkGreen"]
بالتوفيق [/COLOR]
وتعاونوا على البر و التقوى ، ولا تعاونوا على الاثم والعدوان
الرد
#8
sadwolf كتب :
PHP كود :
if t[j].value > t[i].value then 
كأني اقول اذا كان (تي 1 اكبر من تي 1) ؟ وهما متساويين
صحيح، هما متساويتين عند البداية وهذا خطا من صاحب الحل مع ذلك يمكن تجاهله لانه لا يؤثر على النتيجة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم