פורסם 2010 ביוני 3015 שנים אורך המערך temp1 צריך להתאים למספר המחרוזות שאתה הולך לקרוא (5), ולא לאורך כל מחרוזת (sizeovstring).כל תא במערך צריך להצביע למערך אחר של char, שאותה אתה מקצה באמצעות malloc.
פורסם 2010 ביוני 3015 שנים מחבר בוא נאמר ככה,אני המשתמש והחלטתי שאני רוצה להכניס 7 מחרוזות כל אחת באורך שונהאז איך אני בתור מתכנת עושה שיווצרו דווקא 7 מערכים שונים וכל תא במערך הדינאמי(מצביעים) יצביע לאחד מהם?והרי אם אני מחליט שאני רוצה להכניס 100 מחרוזות אני אצור 100 מערכים שונים? זה יהיה קוד עצום.נורא קשה לי להבין את ההגיון של הדבר הזה ואשמח אם תראה לי דוגמא מוחשית בכדי שהדבר יכנס לראש אחת ולתמיד.
פורסם 2010 ביוני 3015 שנים פשוט מאוד, תפצל את הקוד.פונקציה אחתלא מקבלת נתוניםשואלת את המשתמש אורך מחרוזת.מקצה באופן דינמאי מקום למחרוזת (אורך +1)מבקשת מהמשתמש את המחרוזת ומציבה.מחזירה מצביע למחרוזת הזאת.ברגע שיש לך את הפונקציה הזאת אז לא משנה כמה מחרוזות אתה צריך ליצור.פונקציה שניה:יוצרת מערך של מצביעים בכמות הדרושה (במקרה שלך 5)קוראת לפונקציה הראשונה עבור כל איבר במערך הזה ומציבה את הערך שמתקבל.גם תחליט מחר שאתה צריך 7 או 100 מחרוזות, פשוט אתה משנה את הערך במערך של המצביעים.
פורסם 2010 ביוני 3015 שנים מחבר 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ששם הייתי פותר אותה עם גטצ'ארשהפונקציה רושמת הודעה למשתמש להכניס מחרוזת אך מכניסה אוטומטית וקופצת הלאה זאת אומרת שהיא לא מחכה למשתמש שיכניס את המחרוזת
פורסם 2010 ביוני 3015 שנים אם אתה מכניס נתונים מדוייקים, אז הבעיה היא האנטר בסוף שורה.תנסה ()cin.ignore לפני קבלת הקלט.
פורסם 2010 ביולי 315 שנים 1) תשתמש ב- memset2) תשתמש ב- new3) תבדוק כאן אילו ערכים STRCMP יכולה להחזיר: http://www.cplusplus.com/reference/clibrary/cstring/strcmp/4) תן למשתנים שלך שמות יותר ברורים
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.