פורסם 2006 בפברואר 319 שנים שלום לכולם עשיתי פונקציה שמעבירה את המילים שבשורה לתוך מערך של מחרוזות כל מילה בנפרד למחרוזתאין שום בעיה עם הפונקציה ועם התוכנית זאת אומרת שהקומפיילר לךא מראה שום שגיאה אבל שאני מריץ את זה אז אחרי הקלט של השורה זה מביא לי חלון קטן כזה של מיקרוסופט שיש בעיה עם התוכנית ואם אני רוצה לשלוח את הבעיה..או לא תראו בתמונה...אני משתמש ב ויזואל c++ של מיקרוסופט#include<iostream.h>#include<string.h>void enter_words(char *s,char *str[15]);int main(){ char ch[100]; char* arr[15]; cout<<"put mila"<<endl; cin.getline(ch,100,'\n'); enter_words(ch,arr); for(int i=0;i<15;i++) { cout<<arr[i]; } return 0;}void enter_words(char *s,char *str[15]){ int pos=0,pos_w=0,x=0; char word[20]; while(s[pos]!='\0') { if(s[pos]==' ') { word[pos_w]='\0'; str[x]=new char[strlen(word)+1]; strcpy(str[x++],word); pos++; pos_w=0; } else { word[pos_w]=s[pos]; pos_w++; pos++; } }}תודה למי שעוזר...[attachment deleted by admin]
פורסם 2006 בפברואר 319 שנים ההדעה אומרת שיש לך איזה בעיה בתוכנית שלך שהיא מנסה לגשת למקום לא חוקי בזיכרון ולכן הוינדוס מחסל אותהאין לי כוח ממש להריץ ולראות מה לא בסדר אבל בתור התחלה בלולאה שאתה מדפיס 15 מילים לא בהכרח יש 15 מילים (ורוב הסיכויים שאין 15 מילים) ולכן תנסה להדפיס שם מכתובת שלא שייכת לך ולכן הוינדוס יחסום אותך.
פורסם 2006 בפברואר 319 שנים מחבר אני יודע שלא תמיד יש 15 מילים אז מה אפשר לעשות בשביל לפתור את הבעיה??
פורסם 2006 בפברואר 319 שנים מחבר זאת אומרת לעשות עוד פונקציה שמחזירה לי את מספר המילים שהיא קלטה ולשים את זה במקום ה "15" בקליטה של הפונקציה ..אבל אני זוכר שהמורה שלי אמר לי שיש כמה אפשרויות לכתיבה הזאת של מערך מחרוזות ואחד מהם זה ע"י "**" ואז נראה לי שלא יהיה את הבעיה כי אני לא מגדיר לו מראש כמה מילים יש..זה יכול לפתור את הבעיה או שלא?
פורסם 2006 בפברואר 319 שנים מה עשית מזה כזה סיפורשהפונקציה enter_words תחזיר int של מספר המילים שנקלטו (x)
פורסם 2006 בפברואר 319 שנים או שתקצה עוד איבר ותשים בו נאל.אני מציע לך לעשות דיבאג ולראות איפה הבעיה.
פורסם 2006 בפברואר 419 שנים או שתאתחל את המערך עם nulls, ולפני שאתה מדפיס כל מילה תבדוק אם היא לא null.
פורסם 2006 בפברואר 419 שנים אתה יכול להשתמש בהקצאה דינאמית ולהקצות עבור כל תו חדש במילה תא נוסף בגודל char..ובסוף לשים לו null.....זה נקרא dynamic allocation נדמה לי.....בשפת C יש את פקודת הסיפרייה malloc שבתוך malloc.h, אבל בC++ יש מנגנון יותר טוב, שדומה לג'אווה....אני ממליץ על חיפוש קצר בגוגל.......
פורסם 2006 בפברואר 419 שנים HEYDADO - מה?! למה?!להקצות כל פעם תו זה פשוט ביזבון טיפשי של זמןאתה יודע כמה זמן לוקח לעשות הגדלה/הקצאה מחדש של זיכרון דינאמי?
פורסם 2006 בפברואר 419 שנים מחבר מה עשית מזה כזה סיפורשהפונקציה enter_words תחזיר int של מספר המילים שנקלטו (x)אבל אני צריך להשתמש במילים האלו אח"כ לבצע עליהם פעולות..בגלל זה אמרתי שאני אעשה עוד פונקציה..
פורסם 2006 בפברואר 419 שנים שובמה הקשר?אני עדיין לא מבין את הבעיה שהפונקציה תחזיר את מספר המילים שהיא קלטה ותשמור את זה איפשהו ותעשה עם זה מה שבא לך
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.