עבור לתוכן

בדיקה של מערך ממוין

Featured Replies

פורסם

for (int i=0;i<arr.length-i;i++){
if (arr[i]<arr[i+1]) {
ans=true;

נגיד שהמערך הוא 1,2,4,3

למה זה לא עובד לי כמו שצריך?

פורסם

מה זאת אומרת לא עובד כמו שצריך?

פורסם

אין הצהרה על המערך

אין הצהרה על המשתנה ans

אין סוגריים לסיום בלוקים.

ובכלל לא נרשם באיזו שפה אתה עובד.

פורסם
  • מחבר

אין הצהרה על המערך

אין הצהרה על המשתנה ans

אין סוגריים לסיום בלוקים.

ובכלל לא נרשם באיזו שפה אתה עובד.

סתם נתתי קוד חלקי , מדובר בגאווה.

הינה הקוד המלא

import java.util.Scanner;

public class targil15 {


static boolean order (int arr[])
{
boolean ans=false;
for (int i=0;i<arr.length-i;i++){
if (arr[i]<arr[i+1]) {
ans=true;

}
else ans=false;
}
return ans;
}
static Scanner reader=new Scanner(System.in);

public static void main(String[] args) {

int[]arr={1,2,4,3};
boolean ans=order(arr);
System.out.println(ans);



}

}

פורסם


for (int i=0;i<arr.length-i;i++){

שמת לב שהלולאה רצה עד מחצית מאורך המערך?

עכשיו שים לב לעוד משהו.

אתה כתבת לולאה אבל לא משנה מה יקרה בה, תמיד הבדיקה האחרונה שלך תכריע.

מה שאתה צריך זה בריחה, אם אתה מוצא שני איברים שלא ממויינים, תבצע החזרה של ערך שקרי.

במידה וסיימת לעבור על כל המערך, ולא מצאת שקר (כלומר סיימת את הלולאה) תחזיר ערך אמת.

פורסם
  • מחבר

למה רצה עד חצי מערך? היא רצה עד שI=3 ואז משווה בסוף הלולאה בין ARR[3]<ARR[4

כמו כן שינתי את הסדר של האמת והשקר

import java.util.Scanner;

public class targil15 {


static boolean order (int arr[])
{
boolean ans=true;
for (int i=0;i<arr.length-i;i++){
if (arr[i]>arr[i+1]) {
ans=false;

}
else ans=true;
}
return ans;
}
static Scanner reader=new Scanner(System.in);

public static void main(String[] args) {

int[]arr={1,2,4,3};
boolean ans=order(arr);
System.out.println(ans);



}

}

פורסם

היא רצה עד


i<arr.length-i

i=0<arr.length-i=4 אמת מתקיים

i=1<arr.length-i=3 אמת מתקיים

i=2<arr.length-i=2 שקר הלולאה נגמרת

i=3<arr.length-i=1

שינית אבל עדיין רק הבדיקה האחרונה תעבוד כי זה בתוך הפור

[br]פורסם בתאריך: 19-07-2010, 21:16:57


תנסה משהו כזה


static boolean order (int arr[])
{
for (int i=1;i<arr.length;i++){
if (arr[i-1]>arr[i]) {
return=false;
}
}
return true;
}

פורסם
  • מחבר

לא ממש הבנתי.. ותראה שיניתי את הבדיקה של ה< בקוד האחרון שלי..

בכל מקרה לפי איך שאני רואה את זה הבדיקה נעשת ככה:

האם 1 גדול מ2 לא

האם 2 גדול מ4 לא

האם 4 גדול מ3 כן וכאן ANS =FALSE והוא אמור פשוט לצאת ולסיים לא? אם לא אז אין אני עושה שכן יצא ויסיים? ניסיתי להוסיף לו בתנאי של הלולאה &&ANS=FALSE לתנאי סיום אבל עדיין לא ממש עובד לי כמו שצריך

זה גם לא עבד בקוד שהצאת..

פורסם

תיקנתי את הפונקציה שהצעתי

קודם היה return=false בטעות


static boolean order (int arr[])
{
for (int i=1;i<arr.length;i++){
if (arr[i-1]>arr[i]) {
return false;
}
}
return true;
}

פורסם
  • מחבר

זה אכן עובד..

מעניין אותי לדעת באיזה דרך אפשר לעשות את ההשוואות בין I לI+1 ? אני תמיד אוהב להשתמש בשיטות שרצות קדימה ולא אחורה

פורסם

אתה יכול לעשות אם תשים בלולאה

i<arr.length-1

ולא מה שרשמת קודם

i<arr.length-i

אבל מדובר על תוספת של פעולות חשבוניות מיותרות

פורסם
  • מחבר

אחלה תודה על העזרה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים