ABA


"|C++| לא מצליח למצוא את השגיאות בתוכנית, צריך עזרה..."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10814 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10814
_Poseidon_ 
חבר מתאריך 1.9.02
976 הודעות, דרג אמינות חבר זה
   13:11   18.08.12   
אל הפורום  
  |C++| לא מצליח למצוא את השגיאות בתוכנית, צריך עזרה...  
 
ערכתי לאחרונה בתאריך 18.08.12 בשעה 13:26 בברכה, _Poseidon_
 
התוכנית בגדול צריכה לקלוט 2 מערכים דו-מימדים סטטים מן המשתמש, לאחר מכן לשלוח את ה-2 מערכים האלה לפוקנציה אחרת - הפוקנציה צריך להכפיל את 2 המטריצות.


#include<stdio.h>
#include<stdlib.h>
#define col 3
#define line 3
int* multiplication_matrix(int, int);
void print_din_matrix(int **a ,int ,int );
int** alloc_matrix(int , int );


void main()
{
int matrixA={0}, matrixB={0}, i, j, s=0, *p_matrixSUM;
s=col*line;
printf("enter %d numbers for matrixA\n",s); *\\המשתמש מכניס מטריצה מספר 1 \\*
for(i=0;i<col;i++)
for(j=0;j<line;j++)
scanf("%d",&matrixA);

printf("enter %d numbers for matrixB\n",s); *\\המשתמש מכניס מטריצה מספר 2 \\*
for(i=0;i<col;i++)
for(j=0;j<line;j++)
scanf("%d",&matrixB);

p_matrixSUM = multiplication_matrix(matrixA, matrixB);
print_din_matrix(p_matrixSUM, line ,col);
}

int* multiplication_matrix(int matrixA,int matrixB) *\\הפוקנציה מקבלת 2 כתובות של המטריצות שהגיעו מן המשתמש ומטרתה להכפיל אותן זו בזו ולהחזיר כתובת של המטריצה החדשה\\*
{
int *matrixSUM, i, j;
matrixSUM=alloc_matrix(line,col); *\\יצירת מטריצה חדשה דו מימדית דינאמית \\*
for(i=0;i<col;i++)
for(j=0;j<line;j++)
matrixSUM=(matrixA*matrixB)+(matrixA*matrixB)+(matrixA*matrixB);
for(i=0;i<col;i++)
{
for(j=0;j<line;j++)
printf("%2d", matrixSUM);
printf("\n");
}
return matrixSUM;
}

void print_din_matrix(int **a, int line, int col) *\\הפוקנציה מקבלת 3פרמטרים (גודל שורה, גודל עמודה, כתובת תחילת המטריצה) ומדפיסה את המטריצה שקיבלה\\*
{
int i,j;
for(i=0;i<line;i++)
{
for(j=0;j<col;j++)
printf("%8d",a);
printf("\n");
}
}

int** alloc_matrix(int line,int col) *\\הפוקנציה מקבלת 2 פרמטרים של גודל שורה וגודל עמודה ויוצרת לפי זה מערך דו מימדי חדש\\*
{
int **c, i;
c = (int **)calloc(line, sizeof(int *));
if (!c)
return NULL;
for (i=0; i<line; i++)
{
c = (int *)calloc(col, sizeof(int));
if (!c)
{
free_matrix (c,i);
return NULL;
}
}
return c;
}





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

  האשכול     מחבר     תאריך כתיבה     מספר  
  יש שם דברים ממש מוזרים לדעתי.. כמה זמן אתה מתכנת? inno3D 18.08.12 18:48 1
     לא הרבה, מה מוזר לדעתך? _Poseidon_  18.08.12 18:54 2
         .. inno3D 18.08.12 19:14 3
             הבנתי _Poseidon_  18.08.12 19:25 4
                 כן רגע הכל היה בעיה של סוגריים מרובעים אבל אני רואה שרשמת inno3D 18.08.12 19:27 5
                 יש בעיה עם int *matrixSUM inno3D 18.08.12 19:29 6
                     למה צריך להוסיף שם עוד כוכבית? _Poseidon_  19.08.12 12:35 7
                         כי הוא מצביע למערך דו מימדי.. inno3D 19.08.12 15:44 8

       
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   18:48   18.08.12   
אל הפורום  
  1. יש שם דברים ממש מוזרים לדעתי.. כמה זמן אתה מתכנת?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
_Poseidon_ 
חבר מתאריך 1.9.02
976 הודעות, דרג אמינות חבר זה
   18:54   18.08.12   
אל הפורום  
  2. לא הרבה, מה מוזר לדעתך?  
בתגובה להודעה מספר 1
 
?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   19:14   18.08.12   
אל הפורום  
  3. ..  
בתגובה להודעה מספר 2
 
   אתה בטוח שזה מגדיר מערך דו מימדי?
int matrixA={0}, matrixB={0}

אתה לא ניגש לתאים במערכים..
scanf("%d",&matrixA);

וגם הכפל הזה לא ממש מובן
matrixSUM=(matrixA*matrixB)+(matrixA*matrixB)+(matrixA*matrixB);

והפונקציה int** alloc_matrix(int line,int col)
לא רשומה טוב..
אתה מקצה למשתנה C פעם בתוך מצביע למבציע ופעם בתור מצביע רגיל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
_Poseidon_ 
חבר מתאריך 1.9.02
976 הודעות, דרג אמינות חבר זה
   19:25   18.08.12   
אל הפורום  
  4. הבנתי  
בתגובה להודעה מספר 3
 
שלושת ההערות הראשונות שרשמת תלויות בסוגריים מרובעים, בהעתקה לכאן זה נעלם. אני מצרף קובץ TXT עם התוכנית.
https://rotter.name/User_files/nor/502fc1da7f1fa475.txt

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   19:27   18.08.12   
אל הפורום  
  5. כן רגע הכל היה בעיה של סוגריים מרובעים אבל אני רואה שרשמת  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   19:29   18.08.12   
אל הפורום  
  6. יש בעיה עם int *matrixSUM  
בתגובה להודעה מספר 4
 
   אתה צריך להוסיף שם כוכבית

איפה כתבת את free_matrix


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
_Poseidon_ 
חבר מתאריך 1.9.02
976 הודעות, דרג אמינות חבר זה
   12:35   19.08.12   
אל הפורום  
  7. למה צריך להוסיף שם עוד כוכבית?  
בתגובה להודעה מספר 6
 
?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   15:44   19.08.12   
אל הפורום  
  8. כי הוא מצביע למערך דו מימדי..  
בתגובה להודעה מספר 7
 
   וגם הפונקציה alloc_matrix מחזירה **c


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

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

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



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