פורסם 2008 בפברואר 1517 שנים אני בכיתה י' אז זה בטח יהיה לכם קל... התרגיל בכל אופן:תוכנית הקולטת 10 מס' למערך ומוצאת את המס' הגדול ביותר ומדפיסה אותו ואת מיקומו. אם המספר מופיע יותר מפעם אחת יודפס מיקומו האחרון. אני יודע שזה מתחיל ככה:import java.util.Scanner;public class ArrayHW1{ public static void main(String[]args) { Scanner input=new Scanner(System.in); int[] A=new int[10]; int I; for(I=0; I<10; I++) { System.out.println("נא הכנס את איבר מס' "+(I+1)); A[I]=input.nextInt();אבל לא הצלחתי לעשות את הקטע עם להוציא את המספר הכי גבוה, כלומר איך בכלל לעשות את זה.תודה..
פורסם 2008 בפברואר 1517 שנים תגדיר משנה עזר שאומר מה המס' הכי גדול שנתקלת עד כה (תגדיר אותו בהתחלה ל -1 או המינוס הכי גדול) ועוד משתנה למיקום שלו. ואז תעבור על הרשימה איבר איבר ותעדכן את המשתנים בהתאם, הבנת ?
פורסם 2008 בפברואר 1517 שנים מחבר תודה, הסתדרתי.אבל יש לי שאלה קטנה,עשיתי ככה: import java.util.Scanner;public class ArrayHW1{ public static void main(String[]args) { Scanner input=new Scanner(System.in); int[] A=new int[10]; int I; int X=-100; int Z=0; for(I=0; I<10; I++) { System.out.println("נא הכנס את איבר מס' "+(I+1)); A[I]=input.nextInt(); if(A[I]>X) { Z=I; X=A[I]; } } System.out.print("המספר הגדול ביותר במערך הוא "+X); System.out.println(" ומיקומו הוא "+Z); }}הוא לא נתן לי לעשות קומפילציה בלי שהגדרתי לו שZ=0. למה אני חייב להגיד בהתחלה שZ=0? הרי יש שורה שאומרת במפורש למה הוא שווה..
פורסם 2008 בפברואר 1517 שנים אם תסתכל על כל הדרכים שאפשר להגיע מהשורה שבו אתה מגדיר את Z לשורה בה אתה מדפיס אותו, יש דרכים שעוברות דרך התניות שאי אפשר לדעת את ערכן בזמן קימפול (ורק בהן אתה שם בו ערך), לכן מבחינת הקומפיילר יתכן שבזמן ריצה תנסה להדפיס את המשתנה לפני שאתחלת אותו והוא מכריח אותך להגדיר את ערכו.
פורסם 2008 בפברואר 1517 שנים אתה לא צריך להשתמש במערך. עדיף שלא תשתמש בו, ותיקח לעצמך במקומו משתנה שרק יחזיק את הקלט של המספר הנוכחי.הרבה יותר יעיל ונכון לעבוד ככה.שים לב שאתה לרגע לא משתמש ביכולות של המערך פה. מה שהמערך שלך נותן לך פה הוא רק שמירת היסטורית המספרים שהמשתמש הקליד קודם, שכן כבר ברגע הקטן אתה בודק אם הוא גדול מהמספר הכי גדול הקודם שלך, ואז אתה כבר קולט את המספר הבא אחריו.
פורסם 2008 בפברואר 1617 שנים מחבר אני יודע שזה לא הכי מתאים, אבל אנחנו לומדים ומתרגלים מערכים כרגע כך שאני חייב להשתמש במערך לצורך הפתרון.ועוד שאלה שאני צריך עזרה:תוכנית הקולטת 10 מס' למערך ומדפיסה את המס' אשר מופיע הכי הרבה פעמים במערךאיך עושים את זה?
פורסם 2008 בפברואר 1617 שנים מחבר אם לא איכפת לך לכתוב את הכמה שורות של איך עושים את זה.. לא בדיוק הבנתי אותך
פורסם 2008 בפברואר 1617 שנים האלגוריתם הזה אמור להראות כך (צורתו הבסיסית ביותר)כתבתי בC# שזה דיי דומה לג'אווה int[] Arr = { 1, 2, 3, 4, 5, 6, 7, 5, 4, 5, 6 }; int BigstNum = Arr[0]; int BigstPos=0; for (int i=1;i<Arr.Length-1;i++) if (Arr[i] > +BigstNum) { BigstNum = Arr[i]; BigstPos = i; }בסוף התוכניתBigstNum יכיל את הערך של המספר הכי גדולBigstPos יכיל את המיקום של המספר הכי גדול
פורסם 2008 בפברואר 1617 שנים int[] arr = new int[]{4,3,2,4};int who, how = 1, tmp = 1;Arrays.sort(arr);who = arr[0];for (int i=1;i<arr.length;i++){ if (arr[i] == arr[i-1]) { tmp++; } else { if (tmp >= how) { how = tmp; who = arr[i-1]; } }}
פורסם 2008 בפברואר 1617 שנים וטף יש פונקציה כזאת?(SORT)בכל מקרה כנראה במבחן לא יתנו לו להשתמש בפונקציה הזאת לכן כדאי להשתמש בדרך שאני הצעתי
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.