SpiritKnight פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 שלום,התכנית הנ"ל אמורה להרגיל מספרים בין -10 ל+10 לתוך מטריצה של 6x5, כשהזוגיים בהתחלה והאי זוגיים בסוף. הקומפיילר אומר שהתוכנית תקינה, אך היא לא מבצעת את המשימה כמו שצריך!רעיונות? #include <stdio.h>#include <stdlib.h>#define rowsize 6#define colsize 5void main (){ int row,col,mat[rowsize][colsize],num; randomize (); for(row=0;row<rowsize;row++) { for(col=0;col<colsize;col++) { num=random(20)-10; if(num%2==0) mat[row][col]=num; else mat[rowsize-1-row][colsize-1-col]=num; } }for(row=0;row<rowsize;row++){for(col=0;col<colsize;col++)printf("%d",mat[row][col]);}} קישור לתוכן שתף באתרים אחרים More sharing options...
BURTON פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 השיטה שאתה משתמש לא מי יודע מה טובה.היא פותחת מקום לבעיות של מה קורה אם יוצאים לך בהתחלה 16 מספרים אי זוגיים ואחר כך 14 זוגיים או כל קומבינציה אחרת שלא שווה.אני הייתי הולך דבר ראשון על הזוגיים, ומכניס ערך למטריצה רק עם הוא עומד בקריטריון(קרי - זוגי). אם הוא אי זוגי, אתה פשוט ממשיך להגריל עד שייצא זוגי.אחריי שאתה מסיים עם הזוגיים, אתה עובר לעשות את אותו דבר רק עם אי זוגי. קישור לתוכן שתף באתרים אחרים More sharing options...
SpiritKnight פורסם 2006 בפברואר 11 מחבר Share פורסם 2006 בפברואר 11 ייתכן שלא הבנתי אותך, אבל בעקרון התוכנית אמורה להגריל 30 מספרים, וללא שימוש במערך עזר, להכניס אותם למטריצה. הקומבינציה יכולה להיות גם 29 זוגיים ואחד אי זוגים, 20 זוגיים ועשרה אי זוגיים וכו'. אני לא יכול לדעת מתי להפסיק להגריל זוגיים- המטרה היא שבסופו של דבר האי זוגי הראשון יהיה באינדקס העוקב לזה של הזוגי האחרון. קישור לתוכן שתף באתרים אחרים More sharing options...
BURTON פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 אה...אני חשבתי שזה צריך להיות 15 זוגיים ואחרייהם 15 אי זוגיים.בכל מקרה מה שאתה עושה זה רץ מ-1 עד 15 נניח, ומגריל מספרים, ככה שאם יוצא זוגי, אתה מכניס אותו למטריצה ואם לא יוצא זוגי, אתה לא מכניס למטריצה וגם לא מקדם את המשתנה ספירה.עכשיו במקום שתי לולאות, אתה פשוט יכול להעביר את משתנה הספירה לבסיס 6 או בסיס 5(תלוי אם המטריצה שוכבת או עומדת).כמובן שאפשר גם בשיטה של למלא זוגיים מההתחלה ולמלא אי זוגיים מהסוף אבל אז אתה לא שולט בכמה מספרים זוגיים/אי זוגיים יש לך. איך שבא לך. אני אוהב את השיטה הראשונה קישור לתוכן שתף באתרים אחרים More sharing options...
SpiritKnight פורסם 2006 בפברואר 11 מחבר Share פורסם 2006 בפברואר 11 בכל מקרה מה שאתה עושה זה רץ מ-1 עד 15 נניח, ומגריל מספרים, ככה שאם יוצא זוגי, אתה מכניס אותו למטריצה ואם לא יוצא זוגי, אתה לא מכניס למטריצה וגם לא מקדם את המשתנה ספירה.פה בדיוק הבעיה. התרגיל לא אומר שאני צריך לרוץ עד 15. אני באמת לא שולט בכמה זוגיים\אי זוגיים יש לי. קישור לתוכן שתף באתרים אחרים More sharing options...
BURTON פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 אז תעשה בשיטה השנייההבעיה שלך, לפי מה שאני רואה היא שאתה לא מחזיק משתנה לכמות המספרים האי זוגיים שיצאו לך, ומשתנה לכמות המספרים הזוגיים, ואז בטח יוצאים לך מקומות ריקים במטריצה. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 הבעיה שלך נובעת מזה שאתה לא דואג "לזכור" באיזה מקום היית מההתחלה ומהסוף.מה הכוונה?נניח שהמספר הראשון שהגרלת יצא זוגי - אז הוא ישב בתא 0,0.המספר הבא שהגרלת יצא אי זוגי - אז הוא ישב בתא איפשהו בסוף.המספר הבא יצא זוגי שוב - אז הוא ישב בתא 0,2.שים לב שדילגת על תא 0,1.נניח שהמספר האחרון שהגרלת יצא אי זוגי, אז הוא יישב בתא 0,0, וידרוך על מה שהגרלת בהתחלה.אתה צריך להחזיק שני row ו-col - זוג אחד שמתחיל מ-0,0 ועולה (עבור המספרים הזוגיים) וזוג אחד שמתחיל מ-5,4 ויורד (עבור האי זוגיים).וחוץ מזה אינדקס שרץ מ-0 עד 29 בשביל הלולאה עצמה. קישור לתוכן שתף באתרים אחרים More sharing options...
HEYDADO פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 לדעתי, אתה צריך לאתחל את המטריצה עם מספר שלא הולך להיות אפשרי מפלט, כלומר -30 למשל....אז אתה בודק עם לולאת While כל עוד הערך במקום שאתה רוצה להכניס אליו הוא -30, אז אפשר להכניס...אחרת, סיים..... קישור לתוכן שתף באתרים אחרים More sharing options...
SpiritKnight פורסם 2006 בפברואר 11 מחבר Share פורסם 2006 בפברואר 11 שניצל, עזרת מאוד!גרסא מעודכנת:#include <stdio.h>#include <stdlib.h>#define rowsize 2#define colsize 3void main (){ int row,col,row1,col1,row2,col2; int mat[rowsize][colsize],num,count=0; randomize (); while(count<6) { num=random(2)+1; printf("%d\n",num); count++; if(num%2==0) { for(row1=0;row1<rowsize;row1++) for(col1=0;col1<colsize;col1++) mat[row1][col1]=num; } else if(num%2!=0) { for(row2=rowsize-1;row2<=0;row2--) for(col2=colsize-1;col2<=0;col2--) mat[row2][col2]=num; } } //test: for(row=0;row<rowsize;row++) for(col=0;col<colsize;col++) printf("%d",mat[row][col]);}כרגע הוא לא נתקע, לא משאיר מקומות ריקים ולא מוציא מספרים מוזרים. מצד שני, הוא לא מכניס מספרים אי זוגיים-אם הוא מגריל רק אי זוגיים, המערך מכיל "זבל". אם הוא מגריל זוגי כלשהו רק הוא נמצא במערך.הוא גם דורס זוגיים אחרים, אם יש כאלו.איך אני מתקדם מפה? קישור לתוכן שתף באתרים אחרים More sharing options...
HEYDADO פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 לדעתי, אתה צריך לאתחל את המטריצה עם מספר שלא הולך להיות אפשרי מפלט, כלומר -30 למשל....אז אתה בודק עם לולאת While כל עוד הערך במקום שאתה רוצה להכניס אליו הוא -30, אז אפשר להכניס...אחרת, סיים.....תשתמש בעצה שלי.... זה עוזר, מניסיון....... ככה גם לא משנה הגודל של המטריצה......... וככה את גם יודע מתי הגעת לסוף, והמטריצה תהיה מלאה ומסודרת...... קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 לא נראה כל כך יעיל מה שעשית שם.תנסה: int num, i1, i2, j1, j2, mat[rowsize][colsize]; for(i1=j1=0, j2=colsize-1, i2=rowsize-1;i1<i2 || i1==i2 && j1<=j2;) { num = random(20)-10; if(num%2==0) { mat[i1][j1] = num; j1+=1; if(j1>=colsize) { j1=0; i1+=1; } } else { mat[i2][j2] = num; j2-=1; if(j2<0) { j2=colsize-1; i2-=1; } } } קישור לתוכן שתף באתרים אחרים More sharing options...
SpiritKnight פורסם 2006 בפברואר 11 מחבר Share פורסם 2006 בפברואר 11 לא הבנתי כ"כ מה עשית, אני חושב שאנחנו לא על אותה גרסא של C.יש אפשרות שתוכל להטמיע את השינויים שלך לגרסא שלי?(בעמוד הקודם)תודה. קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בפברואר 11 Share פורסם 2006 בפברואר 11 השתמשתי בANSI-C אותה גירסה.אתה רק צריך להוסיף את הMAIN.ד.א. מה שעשית אצלך עובד(בתגובה האחרונה שלך עם הפתרון)? קישור לתוכן שתף באתרים אחרים More sharing options...
SpiritKnight פורסם 2006 בפברואר 12 מחבר Share פורסם 2006 בפברואר 12 עובד חלקית. הוא לא נתקע אבל כרגע הוא לא מכניס מספרים אי זוגיים למערך. קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2006 בפברואר 12 Share פורסם 2006 בפברואר 12 רשמת RANDOMIZE בהתחלה? קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.