עבור לתוכן

בבקשה עזרה! שתי שאלות שלא הצלחתי לפתור בשפת C

Featured Replies

פורסם

שלום לכולם

יש שתי שאלות מהשיעורי בית שלא הצלחתי לפתור, ואף אחד בכיתה שלי גם לא, וזה להגשה לשיעורי בית..

בבקשה תעזרו לפתור זה מאוד חשוב לי!

שאלה ראשונה

"מסגרת" במערך דו- מימדי בגודל M*M היא ריבוע של אפסים בתוך המערך שפינתו

השמאלית עליונה היא המשבצת I*I (הריבוע הוא רק המסגרת) .

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

אחרת תחזיר הפונקציה "שקר".

דוגמה : מטריצה עם "מסגרת" שפינתה העליונה השמאלית במשבצת 1,1

3 0 9 2 0

0 0 0 0 7

1 0 7 0 3

8 0 0 0 9

0 7 6 4 5

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

בבקשה מכל מי שיכול שיעזור!!

תודה מראש..

פורסם

אני לא מבין,

איזה חלק של המטריצה נמצא במערך הראשי ואיזה במשני?

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

פורסם
  • מחבר

ראשית כל רציתי להודות לך על התגובה.

שנית, עזוב את השאלה הזאת, הצלחתי לפתור אותה בסוף..

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

העליתי אותה לאינטרנט ויהיה נחמד אם תציץ בה :)

http://s18.yousendit.com/d.aspx?id=24NAJHZ6H32FP0ZBCFITLGEESV

פורסם

טוב אז יש שתי שיטות

הראשונה הפשוטה אבל לא יעילה ולא יפה

לרוץ מהתא הראשון ולספור את מספר התאים עד הרצף המבוקש ושם להדפיס ולסכום

השניה היותר אנטלגנטית

מיקום הJ של המספר שאותו אתה מקבל הוא

שארית החלוקה של המספר המתקבל בJMAX+1 וכל זה פחות אחד

ןמיקום הI של המספר הוא החלק השלם של החלוקה של המספר המתקבל בJMAX+1

כאשר יש לך את הI והJ של שתי המספרים המבוקשים זה לא בעיה להריץ FOR מהנמוך יותר לגבוהה ולהדפיס ולסכום

לפי הדוגמה:

מיקום הJ של המספר 20 שהתקבל הוא:

השארית של 20/7 פחות אחד שזה יוצא 5

והI הוא החלק השלם של 20/7 שזה שווה ל2

וב30 :

השארית של 30/7 פחות אחד שזה יוצא 1

והI הוא החלק השלם של 30/7 שזה שווה ל4

פורסם

בעיות קלות שמשום מה אני לא מצליח להתגבר עליהן:

#include <iostream.h>

int main(){
int nums[15][20];

for(int i=0;i<15;i++)
for(int j=0;j<20;j++){
cout<<"Please enter num for cell number "<<i*15+j+1<<"."<<endl;
cin>>nums[i][j];
}

int start,finish;

cout<<"Please enter number of cell to start print and to finish."<<endl;
cin>>start>>finish;

for(i=start/20;i<=15;i++)
for(int j=start%15;i<=15;j++)
cout<<"Cell number "<<i*15+j<<" contents:"<<nums[i][j];

return 0;
}

פורסם

זה צריך לעבוד:



#define WIDTH 20
#define HEIGHT 15

void fun(int mat[][WIDTH], int a1, int a2)
{
int sum = 0, tmp;
if(a2>=WIDTH*HEIGHT || a2<0 || a1>=WIDTH*HEIGHT || a1<0)
{
printf("\nBad Arguments.\n");
return;
}
printf("\nNum:");
for(; a1<=a2;++a1)
{
tmp = mat[(int)a1/WIDTH][a1%width]
sum+= tmp;
printf(" %d", tmp);
}
printf("\nSum: %d\n", sum);
}

פורסם
  • מחבר

ווי תודה ענקית לכולכם...

ארכיון

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

דיונים חדשים