delphi4arab منتديات دلفي للعرب

نسخة كاملة : [تمرين] ترتيب مجموعه قيم تصاعديا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم و رحمة الله و بركاته

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

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

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

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

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

بالتوفيق ,,
نظراً لعدم ورود أي إجابة عن هذا السؤال
أقدم لكم الحل بلغة باسكال كمحاولة مني
عساه يكون صحيحاً
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. 
كيف يكون الترتيب ؟
1-عددي
2-حرفي
-اول محرف
-ترتيب افقي وعمودي
عمودي في القائمة كاملة
وافقي في نفس الخلية
وعن طريق المقارنة يتم الترتيب

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

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

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

انا جاوبت على التمرين بلغة الباسكال مع افتراض
ان القيم هي اعداد صحيحة
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. 

بالتوفيق
السلام عليكم

ممكن شرح خصوصا هنا
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; 
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]
sadwolf كتب :
PHP كود :
if t[j].value > t[i].value then 
كأني اقول اذا كان (تي 1 اكبر من تي 1) ؟ وهما متساويين
صحيح، هما متساويتين عند البداية وهذا خطا من صاحب الحل مع ذلك يمكن تجاهله لانه لا يؤثر على النتيجة