ABA


"אשמח לעזרה קטנה ב C - תרגיל חידה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13857 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13857
djME

דרג אמינות חבר זה
   15:07   21.01.07   
אל הפורום  
  אשמח לעזרה קטנה ב C - תרגיל חידה  
 
   השאלה היא ככה:
כתוב פונקציה שמקבלת מטריצה בגודל 10 על 10
המטריצה תכיל רק אפסים ואחדות ותחזיר את המספר האיברים שערכם 1 ומוקפים באפסים

דוגמה:
000
010
000

זה א שמוקף באפסים


עכשיו הרעין ברור לי שאני צריך לרוץ על המטריצה עד שאני מוצא אחד ואז לרוץ על מן מטריצה פנימית שהיא תיהיה נגיד i-1 ו- j-1

אני מצליח לעשות זאת אבל הפינות מקשות עליי

אשמח לעזרה

תודה


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  תעלה מה שעשית עד עכשיו... :) Sn00py  21.01.07 15:11 1
     אני כמעט בטוח שעשיתי סבטוחה djME 21.01.07 15:13 2
         עוד לא קראתי את האשכול, אבל... FireAngel 21.01.07 16:11 3
             חח תחשוב שזה רמה יחסית בסיסית ב C djME 21.01.07 16:54 4
  קודם סרוק את המטריצה ב8 על 8 MULI 21.01.07 18:39 5
     למה לסרוק 8 על 8 djME 21.01.07 19:16 6
         אתה בטוח? =\ MULI 21.01.07 20:31 7
             כן זה כל הרעיון djME 21.01.07 21:22 8
                 אתה שם בהתניה גם את התת-סריקות MULI 21.01.07 21:26 9
  1 חייב להיות מוקף ב8 אפסים או שגם פינות וקצוות תופסים? Net_Boy  22.01.07 17:32 10
     תגובה 6 MULI 22.01.07 17:50 11
  יש לי פיתרון מאד יפה ואלגנטי בשבילך Net_Boy  22.01.07 20:20 12

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות, דרג אמינות חבר זה
   15:11   21.01.07   
אל הפורום  
  1. תעלה מה שעשית עד עכשיו... :)  
בתגובה להודעה מספר 0
 
  

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


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

דרג אמינות חבר זה
   15:13   21.01.07   
אל הפורום  
  2. אני כמעט בטוח שעשיתי סבטוחה  
בתגובה להודעה מספר 1
 
   אבל בוא ניראה


#define X 10

int get_mat(int m)
{
int i,j,k,l,f,num;

for(i=0;i<X;i++)
{
for(j=0;j<X;j++)
{
if(m==1)
{
for(k=i-1;k<=i+1;k++)
{
for(l=j-1;l<=j+1;l++)
{
if(k==i-1||k==i+1 || l==j-1||l==j+1)
{
if(m==0)
{
f=1;
}
else
{
f=0;
}
}
}
}
if(f==1)
{
num++;
}
}
}
}
return num;
}


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

דרג אמינות חבר זה
   16:11   21.01.07   
אל הפורום  
  3. עוד לא קראתי את האשכול, אבל...  
בתגובה להודעה מספר 2
 
   אלוהים אני לא רוצה לדעת איזו סיבוכיות יצרת כאן.


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

דרג אמינות חבר זה
   16:54   21.01.07   
אל הפורום  
  4. חח תחשוב שזה רמה יחסית בסיסית ב C  
בתגובה להודעה מספר 3
 
   ככה שלא ניתן להשתמש בפונקציות עזר וכו

רק בסגנון שאני עשיתי

אבל כן אני בטוח שיצרתי סבטוחה

אני אשמח אם תוכלו לעזור לי בזה


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

דרג אמינות חבר זה
   18:39   21.01.07   
אל הפורום  
  5. קודם סרוק את המטריצה ב8 על 8  
בתגובה להודעה מספר 0
 
   כי אין מה לבדוק בשורות/עמודות הכי צדדיות אם הן מכילות 1

ובסריקה של ה8 על 8, כל פעם שאתה מוצא 1 שמור את המקום שלו

נגיד מצאת 1 במקום 4,5
אז אתה סורק ממקום 3,4 עד מקום 3,6 (3 תאים בשורה מעל ה1)
וסורק את מקום 5,3 עד מקום 5,6 (3 תאים בשורה מתחת ל1)
באופן דומה את ה3 תאים בעמודות שליד ה1
ואם הכל נסרק כ0, תוסיף 1 לסוכם


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

דרג אמינות חבר זה
   19:16   21.01.07   
אל הפורום  
  6. למה לסרוק 8 על 8  
בתגובה להודעה מספר 5
 
   אני צריך גם את הקצוות

זאת אומרת גם זה חוקי
100
000
000

זה גם אחד שמוקף באפסים


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

דרג אמינות חבר זה
   20:31   21.01.07   
אל הפורום  
  7. אתה בטוח? =\  
בתגובה להודעה מספר 6
 
   עכשיו זה סתם מעצבן


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

דרג אמינות חבר זה
   21:22   21.01.07   
אל הפורום  
  8. כן זה כל הרעיון  
בתגובה להודעה מספר 7
 
   אם האמצע אני יודע להתמודד אבל עם הדפנות כבר לא


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

דרג אמינות חבר זה
   21:26   21.01.07   
אל הפורום  
  9. אתה שם בהתניה גם את התת-סריקות  
בתגובה להודעה מספר 8
 
   זתומרת את הסריקות שמקיפות את ה1 אתה שם בהתניה אם בכלל יש הקפה באותו איזור
זה לבדוק בקטנות.. סתם מציק


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   17:32   22.01.07   
אל הפורום  
  10. 1 חייב להיות מוקף ב8 אפסים או שגם פינות וקצוות תופסים?  
בתגובה להודעה מספר 0
 
  


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

דרג אמינות חבר זה
   17:50   22.01.07   
אל הפורום  
  11. תגובה 6  
בתגובה להודעה מספר 10
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   20:20   22.01.07   
אל הפורום  
  12. יש לי פיתרון מאד יפה ואלגנטי בשבילך  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 22.01.07 בשעה 20:22 בברכה, Net_Boy
 
זה משמש במשחקי לוח
זה נקרא מטריצת כיוונים

זו מטריצה של 2x8 שכל תא מייצג זוג קורדינטות שמייצגות כיוון

הברירת מחדל שלך זה 0 ואתה יכול ללכת ל8 כיוונים שונים

המטריצה תחיל את כל האפשרויות של -1,0,1
חוץ מ0,0 כי זה בעצם המיקום הנוכחי שלך

לדוגמא הערך (1- , 1 ) בחיבור עם ה X ,Y שלך
יתן לך פינה צפון מזרחית מהתא הנוכחי


עכשיו תעשה פונקצית בדיקה עבור תא שתקבל את המערך ואינדקס X,Y
ותחזיר אמת האם הוא מוקף באפסים

הפונקציה תרוץ על המטריצת כיוונים ותוסיף את הכיוונים ל X,Y
עכשיו אתה סה"כ צריך לעשות 2 בדיקות

בדיקה אחת אם הערך חורג מגבולות המערך (הערך שמתקבל לאחר הוספת הכיוון)
אם כן לא לעשות כלום ולהמשיך בלולאה

בדיקה שנייה אם ישנו ערך 0 אם כן ישר להחזיר FALSE

אחרת אם הלולאה עברה על כל הכיוונים להחזיר TRUE

וזהו

נ.ב
אני יכול לממש את זה צ'יק צ'ק אבל אני משאיר לך את העבודה
אם תצטרך עזרה אל תהסס


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

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

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



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