נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלה עם מטריצה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
זיו1
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 30 November 2007
משתמש: מנותק/ת
הודעות: 66
נשלח בתאריך: 30 November 2007 בשעה 19:29 | IP רשוּם
ציטוט זיו1

אם תוכלו לעזור

 

אז חשבתי על משהו כזה לN אי זוגי

מישהו יכול לתקן?


 

קוד:
public boolean diamond()
    {
     int n = getNumberOfRows();
     int i = 0;
   
     if ((n % 2) != 0)
     {
         if(n<=3)
         {
         for (;i <= (n-1)/2;i++)
        
            if (_data[((n-1)/2)+i] != 0)
            return false;
           
            if (_data[((n-1)/2)-i] != 0)
            return false;
           
            if (_data[((n-1)/2)+i] != 0)
            return false;
        
         return true;
         }
         else
    
         {
         for (;i <= (n-1)/2;i++)
        
           if (_data[((n-1)/2)+i] != 0)
           return false;
        
           if (_data[((n-1)/2)-i] != 0)
           return false;
          
           if (_data[((n-1)/2)+i] != 0)
           return false;
          
           if (_data[((n-1)/2)-i][i+1] != 0)
           return false;
          
         return true;
         }
     }

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו1 חפש הודעות אחרות של זיו1
 
inHaze
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 23 November 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 119
נשלח בתאריך: 01 December 2007 בשעה 10:49 | IP רשוּם
ציטוט inHaze

ממבט ראשון יכול להיות ששכחת את הסוגריים של הלולאות?

דבר שני, למה אתה צריך לבדוק את התנאי שאם מספר השורות קטן או שווה ל-3 כי הגודל המינימלי שיכול לקיים את היהלום זאת מטריצה 3x3. לכן כל התנאי הראשון לא רלוונטי, מה שכן אתה יכול להוסיף שאם מספר השורות קטן מ-3 החזר false. עוד משהו, שאתה בודק מטריצה אי-זוגית אתה יודע שיהיה לך אלכסון שיחלק את כל הצלעות של המטריצה שווה בשווה, לכן אתה יכול לבדוק בצורה הבאה:

 

קוד:

int half = (n-1) / 2;

int i = 0;

int j = 0;

for( ; j <= half ; j++)

{

if( _data[half+i][j] !=0 )

return false;

if( _data[half-i][j] !=0 )

return false;

i++;

}

i = half;

j = half + 1;

for( ; j <= half * 2 ; j++)

{

if( _data[half+i-1][j] !=0 )

return false;

if( _data[half-i+1][j] !=0 )

return false;

i--;

}



__________________
הבלוג שלי
חזרה לתחילת העמוד הצג את כרטיס החבר של inHaze חפש הודעות אחרות של inHaze
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה