נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

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

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
mendyeta
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 03 September 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 03 September 2010 בשעה 18:15 | IP רשוּם
ציטוט mendyeta

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

שורות אלו בתוכנית הם אילוץ:

typedef int pArr[COLS];

void GetMatrix(pArr* ,int , int );

M[ROWS][COLS];


זה קוד התוכנית:

#pragma warning ( disable: 4996 )
#include <stdio.h>     
#include <string.h>
#define ROWS 2
#define COLS 3

typedef int pArr[COLS];

void MergeStrings(char* str1,char* str2,char* strRes);
void StrReverse(char* strRes,char* strRev);
void GetMatrix(pArr* M ,int rows , int cols);

void main()
{
     char str1[256],str2[256],strRes[256],strRev[256];
     int M[ROWS][COLS];

     printf("Please enter first string:\n");
     flushall();
     gets(str1);
     printf("\nPlease enter second string:\n");
     flushall();
     gets(str2);

     printf("\nMerge of: %s\n",str1);
     printf("with: %s\n",str2);

     MergeStrings(str1,str2,strRes);

     StrReverse(strRes,strRev);
     
     printf("is:\n");
     printf("==> %s\n",strRes);
     
     printf("\nthe reversed merged string is:\n");
     printf("==> %s\n\n",strRev);
     
     GetMatrix(M,ROWS,COLS);
}

void MergeStrings(char* str1,char* str2,char* strRes)
{
     int i=0,j=0,a=0,flag=0,flag2=0;

     do
     {

          while( *(str1+i)==' ')
               i++;

          while( *(str2+j)==' ')
               j++;

          while( *(str1+i)!=' ' && *(str1+i)!='\0')
          {
               *(strRes+a)=*(str1+i);
                i++;
                a++;
          }

          if(flag!=1)
          {
          *(strRes+a)=' ';
          a++;
          }

          if(*(str1+i)=='\0')
          flag=1;

          while( *(str2+j)!=' ' && *(str2+j)!='\0')
          {
               *(strRes+a)=*(str2+j);
               j++;
               a++;
          }
          
          if(flag2!=1)
          {
          *(strRes+a)=' ';
          a++;
          }

          if(*(str2+j)=='\0')
          flag2=1;

     }while( (*(str1+i)!='\0') || (*(str2+j)!='\0') );

     *(strRes+a)='\0';

}

void StrReverse(char* strRes,char* strRev)
{
     int size,i=0,j=0;
     size=strlen(strRes);

     for(i=size-2 ; i>=0 ;i--)
     {
          *(strRev+j)=*(strRes+i);
          j++;
     }

     *(strRev+size-1)='\0';

}

void GetMatrix(pArr* M ,int rows , int cols )
{
     
}



הבנתי שהשימוש ב
*((*mat+i)+j)
שקול ל
mat[j]

רציתי גם להבין את השקילות הזאת

ראיתי גם נוסחה אחרת באתר הבא
http://stackoverflow.com/questions/1276520/matrix-
pointer-and-function
אבל עם כוכבית אחת
שם זה יותר מובן אבל כאשר אני משתמש בפקודה לקליטה אני מקבל
error

ניסיתי להכניס את הקוד הבא לפונקציה
        int i,j;
     for(i=0; i<rows ; i++)
     {
          for(j=0; j<cols; j++)
          scanf("%d",*(M+cols*i+j) )
          
     }     
חזרה לתחילת העמוד הצג את כרטיס החבר של mendyeta חפש הודעות אחרות של mendyeta
 
mendyeta
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 03 September 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 03 September 2010 בשעה 18:21 | IP רשוּם
ציטוט mendyeta

שכחתי לציין שאסור לי להשתמש בסוגריים מרובעים...
חזרה לתחילת העמוד הצג את כרטיס החבר של mendyeta חפש הודעות אחרות של mendyeta
 
mendyeta
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 03 September 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 11 September 2010 בשעה 00:55 | IP רשוּם
ציטוט mendyeta

טוב קיבלתי כבר תשובה מאתר אחר..

אני רואה שהפורום די יבש

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

חזרה לתחילת העמוד הצג את כרטיס החבר של mendyeta חפש הודעות אחרות של mendyeta
 
אוריה
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 29 January 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 230
נשלח בתאריך: 11 September 2010 בשעה 20:13 | IP רשוּם
ציטוט אוריה

יבש?!
לא תמיד תמצא אנשים משועממים מספיק בשביל לעזור לך בשיעורי
בית..

__________________
SmartProgramming
נא לא להגיב בשבת על מה שאני כותב

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

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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