c++-מערך דינאמי של מצביעים - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

c++-מערך דינאמי של מצביעים


TecNodRom

Recommended Posts

בוא נאמר ככה,

אני המשתמש והחלטתי שאני רוצה להכניס 7 מחרוזות כל אחת באורך שונה

אז איך אני בתור מתכנת עושה שיווצרו דווקא 7 מערכים שונים וכל תא במערך הדינאמי(מצביעים) יצביע לאחד מהם?

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

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

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

פשוט מאוד, תפצל את הקוד.

פונקציה אחת

לא מקבלת נתונים

שואלת את המשתמש אורך מחרוזת.

מקצה באופן דינמאי מקום למחרוזת (אורך +1)

מבקשת מהמשתמש את המחרוזת ומציבה.

מחזירה מצביע למחרוזת הזאת.

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

פונקציה שניה:

יוצרת מערך של מצביעים בכמות הדרושה (במקרה שלך 5)

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

גם תחליט מחר שאתה צריך 7 או 100 מחרוזות, פשוט אתה משנה את הערך במערך של המצביעים.

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

char*first(int sizeovstring){
char*tem;
int i;
tem=(char*)malloc((sizeovstring+1)*sizeof(char));
for(i=0;i<(sizeovstring+1);i++){
tem[i]='\0';
}
cout<<"Enter string"<<endl;
cin.getline(tem,sizeovstring);
//test if work
cout<<tem;
return tem;
}

char**strfunc(int sizeovstring2){
char**temp;
int i,flag;
char *tempf1;
int sizeovstring;

temp=(char**)malloc(sizeovstring2*sizeof(char*));
for(i=0;i<(sizeovstring2);i++){
cout<<"Enter Length of string"<<endl;
cin>>sizeovstring;
temp[i]=first(sizeovstring);
}

do{
flag=0;
for(i=0;i<(4);i++){
if (strcmp(temp[i],temp[i+1])==1){
tempf1=temp[i];
temp[i]=temp[i+1];
temp[i+1]=tempf1;
flag=1;
}
}
}while(flag==1);

for(i=0;i<5;i++){
cout<<temp[i]<<endl;
}

return temp;


}
int main(){
int sizeovstring2;
char**r;

cout<<"Enter Length of Pointer Array"<<endl;
cin>>sizeovstring2;
r=strfunc(sizeovstring2);

}

זה אכן מצליח לקלוט אך ישנה בעיה כמו שהייתה בC

ששם הייתי פותר אותה עם גטצ'אר

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

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

ארכיון

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

×
  • צור חדש...