ABA


"שאלה פשוטה על מערך חד מימדי בפסקל."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7463 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7463
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   16:39   02.12.03   
אל הפורום  
  שאלה פשוטה על מערך חד מימדי בפסקל.  
 
   ערכתי לאחרונה בתאריך 02.12.03 בשעה 18:18 בברכה, ShocKi
 
כתוב תוכנית שקולטת מערך בגודל כלשהו ומסדרת אותו בסדר עולה.

תודה לעוזרים.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב TheCoolMan 02.12.03 19:12 1
     אממ תודה אבל הכוונה לבלי מערך עזר. ShocKi  02.12.03 21:53 2
  זאת אולי השאלה הכי נפוצה שאני מכיר E-do  02.12.03 22:45 3
     המורה התחילה להסביר על שימוש במשתנה ShocKi  03.12.03 00:16 4
         כמו שאמרתי, שיטות אחרות לא חסר. E-do  03.12.03 07:12 5
             *שיעול* QuickSort *שיעול* AlexKarpman 03.12.03 10:10 6
             אמרת שרצים עד n-1 אז למה רצת עד n? ShocKi  03.12.03 14:01 7
                 לא הבנת אותו... AlexKarpman 03.12.03 16:33 8
                 האמת היא שאתה צודק. E-do  03.12.03 18:57 9
                     מזה (n-1)! ? ShocKi  03.12.03 20:53 10
                         כן. E-do  03.12.03 21:29 11
                             אפשר בבקשה את התוכנית מההתחלה עד הסוף? ShocKi  03.12.03 21:41 12
                                 בבקשה E-do  04.12.03 07:04 13
                                     תודב רבה ! ShocKi  04.12.03 13:23 14

       
TheCoolMan

   19:12   02.12.03   
אל הפורום  
  1. מכתב  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 02.12.03 בשעה 19:14 בברכה, TheCoolMan
 

program xxx;
var
a:array{1..N}of integer;
b:array{1..N}of integer;
i,num:integer;
begin
for i:=1 to N do
readln(a{i});

for i:=1 to N do
b{i}:=0;
for i:=1 to N do
if b{i}<=a{j} then b{i}:=a{i};


for i:=1 to N do
for i:=1 to N do
if b{i-1}<a{j}and b{i}>a{j} then b{i}:=a{j};
end.



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   21:53   02.12.03   
אל הפורום  
  2. אממ תודה אבל הכוונה לבלי מערך עזר.  
בתגובה להודעה מספר 1
 
   מותר משתנה עזר... אבל לא מערך שלם.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   22:45   02.12.03   
אל הפורום  
  3. זאת אולי השאלה הכי נפוצה שאני מכיר  
בתגובה להודעה מספר 0
 
   יש הרבה מאוד דרכים לסדר מערך, החל במיון פשוט עם מערך עזר, דרך שימוש במשתנה עזר בודד ועד שימוש במחסנית.
באיזה רמה אתם נמצאים בחומר?


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   00:16   03.12.03   
אל הפורום  
  4. המורה התחילה להסביר על שימוש במשתנה  
בתגובה להודעה מספר 3
 
   עזר בודד temp.

אם יש שיטות אחרות אני אשמע לשמוע....
החומר האחרון שלמדנו זה מערך חד מימדי ופונקציות.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   07:12   03.12.03   
אל הפורום  
  5. כמו שאמרתי, שיטות אחרות לא חסר.  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 03.12.03 בשעה 07:16 בברכה, E-do
 
כל העניין הוא לעבוד בצורה יעילה, ואת זה עוד לא למדתם.
העקרון של שימוש במשתנה עזר בודד הוא כזה:
(בלולאה כמובן)
בדוק האם תא i+1 במערך גדול מתא i במערך.
אם כן - החלף ביניהם (תא i+1 לתוך TEMP, תא i לתוך תא i+1, המשתנה TEMP לתוך i)
אם לא - אל תעשה כלום.

או בפסקל:


for i:=1 to n do
if arr[i+1]> arr[i] then
begin
temp:=arr[i+1];
arr[i+1]:=arr[i];
arr[i]:=temp;
end;

בצורה כזאת נוצר מצב שבסוף הלולאה התא האחרון במערך יכיל את המספר הכי קטן.
איפה החסרון הבולט כאן? שאנחנו צריכים לעשות את הלולאה הזאת n-1 פעמים, שזה דבר מאוד לא "יעיל", ולכן יש כל מיני פטנטים אחרים...


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   10:10   03.12.03   
אל הפורום  
  6. *שיעול* QuickSort *שיעול*  
בתגובה להודעה מספר 5
 
   לא לשכוח להשתמש באלגוריתם יעיל לבחירת נקודת החיתוך של המערך...
(השיטה המקובלת היא חציון, אם אני לא טועה)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   14:01   03.12.03   
אל הפורום  
  7. אמרת שרצים עד n-1 אז למה רצת עד n?  
בתגובה להודעה מספר 5
 
   ואם אפשר בבקשה את התוכנית מההתחלה ועד הסוף זה יהיה מצויין כי אני לא ממש מבין גם איך מגדירים מערך :/

תודה רבה!


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
AlexKarpman

   16:33   03.12.03   
אל הפורום  
  8. לא הבנת אותו...  
בתגובה להודעה מספר 7
 
   אתה שם את הלולאה שהוא נתן לך, בתוך עוד לולאה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   18:57   03.12.03   
אל הפורום  
  9. האמת היא שאתה צודק.  
בתגובה להודעה מספר 7
 
   ערכתי לאחרונה בתאריך 03.12.03 בשעה 18:59 בברכה, E-do
 
היה מספיק שאני ירוץ עד n-1, שכן תמיד אני בודק תא קדימה.
בלי שום קשר, התוכנית הזאת ממילא לא בנויה ב"יעילות" אז זה לא קריטי בכלל.
וכמובן שזה בא בתוך לולאה נוספת, שכן אחרי פעם 1 כל מה שנקבל זה את המספר הקטן ביותר בקצה המערך.
עכשיו אנחנו צריכים לרוץ עוד n-2 פעמים ולמיין את שאר התאים.

אם נרצה "לדייק" מבחינת היעילות, אנחנו נרוץ

(n-1)!
ולא
(n-1)^2
שכן בכל הרצה אנחנו יכולים לבדוק עד תא אחד פחות.
אבל שוב - אם נרצה להיות יעילים, נכתוב תוכנית אחרת לגמרי.


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   20:53   03.12.03   
אל הפורום  
  10. מזה (n-1)! ?  
בתגובה להודעה מספר 9
 
   ! = עצרת?


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   21:29   03.12.03   
אל הפורום  
  11. כן.  
בתגובה להודעה מספר 10
 
  


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   21:41   03.12.03   
אל הפורום  
  12. אפשר בבקשה את התוכנית מההתחלה עד הסוף?  
בתגובה להודעה מספר 11
 
  
הגעתי למסקנה : אני מתכנת גרוע


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
E-do 
חבר מתאריך 29.10.03
2160 הודעות
   07:04   04.12.03   
אל הפורום  
  13. בבקשה  
בתגובה להודעה מספר 12
 
   ערכתי לאחרונה בתאריך 04.12.03 בשעה 07:06 בברכה, E-do
 
("טיוטא בלבד")

Program Shocki;
uses crt;
const n=5; {או כל מספר אחר שבא לך}
var a:array[1..n] of integer;
temp,i,j:integer;

Begin
for i:=1 to n do readln(a[i]);

for i:=1 to (n-1) do
for j:=1 to (n-i) do {הערה בסוף}
if arr[i+1]> arr[i] then
begin
temp:=arr[i+1];
arr[i+1]:=arr[i];
arr[i]:=temp;
end;

end.


הערה - למעשה ע"מ לחסוך קצת, אנחנו לא נרוץ כל פעם מחדש עד סוף המערך, אלא רק עד המקום שהגענו אליו פעם קודמת, אחרי הפעם הראשונה, אנחנו כבר נקבל בתא האחרון את המס' הכי קטן, ולכן אין לנו צורך לבדוק את התא הזה פעם נוספת, לכן אנחנו רצים עד (n-i), בהתחלה זה 4 (או n-1) וזה קטן כל פעם.


-----------------
בברכה,
e-do


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   13:23   04.12.03   
אל הפורום  
  14. תודב רבה !  
בתגובה להודעה מספר 13
 
   עזרת לי מאוד


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net