12-01-2012, 09:30
|
|
|
חבר מתאריך: 12.01.12
הודעות: 3
|
|
עזרה דחופה בשפת c
שלום לכולם,
אודה לעזרתכם בפתרון הבעיה הבאה (כיוןן שלצערי נתקלתי בבעיות).
כתבו הפונקציה המקבלת כקלט מערך של מחרוזות )המיוצגת על ידי מערך דו מימדי של תווים, כבסעיף א(,
מערך של מצביעים וכן את מספר המחרוזות. הפונקציה ממלאת את מערך המצביעים כך שהוא מצביע
למחרוזות שברשימת המחרוזות – המקום הראשון מצביע על המחרוזת הראשונה, השני על השניה וכן הלאה.
ניתן להניח שמערך המצביעים הוא בגודל מתאים.
חתימת הפונקציה:
void pointStrings (char strings[][COL_SIZE], char* pointers[], int num);
להלן הקוד:
קוד PHP:
#include <stdio.h>
#define COL_NUM 3 // number of chars
// num= number of strings
void readStrings (char strings[][COL_NUM], int num)
{
int i;
for (i=0; i < num; i++){
printf ("Enter string\n");
scanf ("%s", strings[i]);
}
}
void printArray(char strings[][COL_NUM], int num)
{
int i,j;
for (i=0; i < num; i++)
{
for (j=0; j<COL_NUM;j++)
printf ("%c", strings[i][j]);
printf("\n");
}
}
void pointStrings (char strings[][COL_NUM], char* pointers[], int num)
{
char *p, *q;
q= strings;
for (p=pointers; p < pointers+COL_NUM; p++)
{
*p=q;
q+strlen(q);
}
}
void printPoints (char* pointers[], int num)
{
char *p;
for (p=pointers; p < pointers+COL_NUM; p++)
{
printf ("%s\n", *p);
}
}
void swap(char* pointers[],int i,int j)
{
int *px = i;
int *py = j;
int temp;
temp = *px;
*px = *py;
*py = temp;
i= px;
j= py;
}
void main()
{
char strings[100][COL_NUM];
char* pointers[COL_NUM];
/* int x = 5, y = 10;
printf("%d %d\n", x, y);
swap(&x, &y);
printf("%d %d\n", x, y); */
readStrings(strings,3);
printArray(strings,3);
pointStrings (strings, pointers, 3);
printPoints (pointers, 3);
}
מסיבה מסויימת זה "עף" בסוף התוכנית, אומנם זה מדפיק והכל טוב אבל זה לא עובד תקין.
אני חושב שיש בעיה של איתחול/ הגדרת הרשימה של המצביעים אבל אני לא מצליח להבין מה הבעיה ואיך לפתור אותה.
אודה לעזרתכם.
|