תרגיל במערכים דו-מימדיים בC - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל במערכים דו-מימדיים בC


Styx

Recommended Posts

יהתרגיל

תמונה מיוצגת במחשב על-ידי מערך דו-מימדי שכל איבר בו הוא ייצוג של פיקסל בתמונה. התוכן/מספר מייצג את הצבע של הנקודה.טשטוש תמונה מתבצע באמצעות החלפה של כל פיקסל בערך הממוצע (המעוגל כלפי מעלה) של הפיקסלים שמסביבו (כולל אותו עצמו)

עכשיו בניתי את רוב התוכנית

רק חסר לי את החלק של ההדפסה של המטריצה החדשה

שקצת אני הסתבכתי מאיפה לקחת אותה-אם מישהו יכול לתת לי כיוון זה יהיה נהדר

ודבר שני

למדנו שבהגדרה של פונקציה שמקבלת מטריצה מספיק לרשום

int fucn (int a[][N]

אבל שאני משאיר את הסוגריים הראשונים ריקים זה לא מסתדר

הקוד

#include <stdio.h>

#define N 6
#define M 8

int ifInside (int rows, int cols);
int avgAroundLocation(int pic[N][M], int rows, int cols);
void copyToNewArr(int fromArr[N][M], int toArr[N][M]);
void blurPicture(int pic[N][M]);



int main()
{
int Matrix[N][M] = //defining the maxtrix(6 by
{
1,2,3,4,5,6,7,8,
8,7,6,5,4,3,2,1,
1,2,3,4,5,6,7,8,
8,7,6,5,4,3,2,1,
1,2,3,4,5,6,7,8,
8,7,6,5,4,3,2,1
};
blurPicture(Matrix);
getch();
return 0;
}


int ifInside (int rows, int cols)//Checking if there are any number around
{
if (rows<0 || rows>=N || cols<0 || cols>=M)
return 1;
return 0;
}

int avgAroundLocation(int pic[N][M], int rows, int cols)//giving the avg for a selected "pixel"
{
int i, j;
int sum=0, next=0;
for (i=rows-1;i<=rows+1;i++)
for (j=cols-1;j<=cols+1;j++)
if (!ifInside(i,j))
{
sum+=pic[i][j];
next++;
}
return (int)((float)sum/next + 0.5);
}

void copyToNewArr(int fromArr[N][M], int toArr[N][M])//copying the the results to the new matrix
{
int i, j;
for (i=0;i<N;i++)
for (j=0;j<M;j++)
toArr[i][j]=fromArr[i][j];
}

void blurPicture(int pic[N][M])//main function which "bluring" the matrix
{
int i, j;
int newArr[N][M];
for (i=0;i<N;i++)
for (j=0;j<M;j++)
newArr[i][j]=avgAroundLocation(pic,i,j);
copyToNewArr(newArr,pic);
}




קישור לתוכן
שתף באתרים אחרים

מה זאת אומרת "זה לא מסתדר"? תפרט.

חוץ מזה, תציין בהודעה ובכותרת באיזו שפה אתה כותב.

רשמתי

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

קישור לתוכן
שתף באתרים אחרים

כן הבנתי בסוף

הנה השינויים

void blurPicture(int pic[N][M])//main function which "bluring" the matrix
{
int i, j;
int newArr[N][M];
for (i=0;i<N;i++)
for (j=0;j<M;j++)
newArr[i][j]=avgAroundLocation(pic,i,j);
copyToNewArr(newArr,pic);
printArray(newArr);
}

void printArray (int newArray[N][M])//printing the array
{
int i, j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
printf("%d\t", newArray[i][j]);
printf("\n\n\n");
}
}

אגב יש מצב אתה עונה לי השאלה השנייה?

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...