פורסם 2013 בינואר 1312 שנים שלום ושבוע טוב! שמי עידן ואני סטודנט שנה א לה. תוכנה.נתקלתי בכמה שאלות שלא הצלחתי לפתור עקב חיסור ארוך של 4 שיעורים{מושתל כליות..:\}אני יודע שזה לא מקצועי לבקש פתרונות אבל אינני מצליח לפתור 3 מתוך 5 שאלות. אשמח לעזרה.*שימוש בספריות <iostream> ופונקצית strln בלבד.אני כבר אעלה את הדרך שלי לפתרון השאלה הראשונה. .", תו – .פלט – מצביע לתו שבמילה . את כל האיברים וכתובתם אשר באינדקס 0,N,2*N,3*N,4*N עד סוף המערך4,6,7,8,9} – הפונקציה תקבל מצביע לתחילת מערך זה.גודל המערך : 5,פרמטר – 2.ערך כתובת 4 &&( כתובת המשתנה ) 7 &&( כתובת המשתנה ) 9 && ( כתובת המשתנה )void CheckNumber(int* startPointer, int* endPointer, int val); דוגמא :מערך - [table][tr][td] כתובות[/t] [table][tr][td] 1000 [/td] [td] 1004 [/td] [td] 1008 [/td] [td] 1012 [/td] [td] 1014 [/td] [td] ערך [/td] [td] 2 [/td] [td] 3 [/td] [td] 3 [/td] [td] 3 [/td] [td] 3 [/td][/tr][/table] הפונקציה תקבל לדוגמא – 1000,1008,3 ותחזיר במקרה זה – 2CheckNumber(1000,1008,3) = 2;CheckNumber(1008,1014,3) = 3;CheckNumber(1000,1003,3) = 1; [/td][/tr][/table]
פורסם 2013 בינואר 1312 שנים באמת הכל די קל וכולל התעסקות עם פוינטרים. הייתי ממליץ לך לקרוא ברשת על פוינטרים ועל אריתמטיקה של פוינטרים.
פורסם 2013 בינואר 1312 שנים מחבר ישבתי לא מעט וקראתי את חומר הלימוד. לוגית אני מבין איך לפתור תרגילים אך אני לא יודע איך לכתוב את זה.בשימוש בפונקציות strings אני די מצליח לפתור..אבל בלי אני ממש מתבלבל.מישהו יכוללהראות לי איך התרגיל הראשון?כתיבת תוכנית המקבל מצביע למחרוזת תווים ותו בודד ומחזירה א תה מצביע למופע האחרון של התו. במידה והתו לא קיים הפונקציה תחזיר 0.
פורסם 2013 בינואר 1312 שנים הבנת את הקטע של אריתמטיקה של פוינטרים? לבצע dereferencing לפוינטר?תנסה לכתוב פונקציה פשוטה שמקבלת מחרוזת (מסוג מצביע ל-char) ומחזירה את התו השני.
פורסם 2013 בינואר 1312 שנים מחבר זו בערך הדרך למציאת תו..לא האחרון ולא המיקום...אני לא מצליח בדיוק לסדר אותו כמו שצריך:#include<iostream>usingnamespace std;int check_word( char str[], char word[]){ int i=0;while (str !='\0') i++; return i;int j=0;for(j;j!='\0';j++)return j;char* ptrs=&str;char* ptrw=&word[j];if (*ptrs==*ptrw) cout<< str;else cout<< "noo";return 0;}void main(){ char str[]={0};char word[1]={0};int i=0;cout<<" enter str ";cin>> str;cout<< " enter one word";cin>> word;i=check_word(str,word);} תודה גיל!
פורסם 2013 בינואר 1312 שנים הפונקציה צריכה לקבל מחרוזת ותו ולהחזיר מצביע (כלומר מחרוזת).אז למה היא מקבלת שתי מחרוזות ומחזירה מספר?הכרזת הפונקציה צריכה להיות כזאתchar* check_word( char *str, char word){
פורסם 2013 בינואר 1312 שנים מחבר ]מה אני לא עושה נכון עכשיו? אני ממש מצטער שאני שואל שאלות דבליות, אך אין לי את מי לשאול.#include <iostream>usingnamespace std;char* check_word ( char *str, char word){ int i=0;while (str !='\0') i++; return i; char* ptrs=&str;if (*ptrs==word) cout<< str;else cout<< "noo";return 0;}void main(){ char* check_word(char *str, char word);cout<<" enter str ";cin>> str;cout<< " enter one word";cin>> word;}
פורסם 2013 בינואר 1312 שנים עכשיו תנסה להסביר מה המטרה של int i;ואם כבר החזרת אותו אחרי לולאה (מה המטרה של הלולאה הזאת?) אז למה להמשיך את הפונקציה?רמז, צריך להחזיר char * ולא int
פורסם 2013 בינואר 1312 שנים מחבר לוגית אני יודע ש אני צריך להכניס מחרוזת ותו. לרוץ על המחרוזת עד למציאת \0 , לכוון לה פוינטר לתחילת המחרוזת ולהשוות את התו לכל אות במחרוזת. וכאשר מוצאים אות בודקים עד סוף המחרוזת אם יש אות אחריה כלומר רצים עד ה\0 אם אין. מוצאים את המיקום האחרון(&?) . במידה ואין את התו - זה קורה כאשר השוונו את הכל והגענו ל\0 בלי התאמה...התוכנית תוציא NULL-0 אני לא מצליח ליישם את הלוגיקה בשפת C++ אשמח אם מישהו ייתן לי תשובה.
פורסם 2013 בינואר 1312 שנים אוקיקח שתי תשובותהראשונה כמו שאמרת, ריצה על כל המחרוזתchar* check_word( char *str, char word){ char* find=NULL; while (str[0]!='\0') { if (str[0]==word) find=str; ++str; } return find;}והשניה, אמרו לך שמותר להשתמש בstrlen, אז בוא נרוץ מהסוף להתחלהchar* check_word( char *str, char word){ char *Temp = str + strlen(str); while (str!=Temp) { if (Temp[0]==word) return Temp; --Temp; } return NULL;}
פורסם 2013 בינואר 1312 שנים מחבר אוקיקח שתי תשובותהראשונה כמו שאמרת, ריצה על כל המחרוזתchar* check_word( char *str, char word){ char* find=NULL; while (str[0]!='\0') { if (str[0]==word) find=str; ++str; } return find;}והשניה, אמרו לך שמותר להשתמש בstrlen, אז בוא נרוץ מהסוף להתחלהchar* check_word( char *str, char word){ char *Temp = str + strlen(str); while (str!=Temp) { if (Temp[0]==word) return Temp; --Temp; } return NULL;}דבר ראשון תודה רבה !עכשיו int main אני מכניס char str ,char wordchar* check_word( char *str, char word){ושוב אני נותן לה פונקציה כשאני קורא לה char* ?
פורסם 2013 בינואר 1312 שנים מחבר כלומר :int main(){char str[]={0}, char word; cout<<"enter string"; cin>> str; cout<<" enter word"; cin>>word; char* check_word( char *str, char word); }
פורסם 2013 בינואר 1312 שנים מחבר } int main(){char* str={0}; char word={0}; check_word( str, word); cout<<"enter string"; cin>> str; cout<<" enter word"; cin>>word;} זה יותר נכון, אבל בזמן EXE מופיע לי Abort למה? איפסתי את str \word ..?
פורסם 2013 בינואר 1312 שנים מחבר התוכנית ש"ירח אפל" העלה היא תוכנית המוצאת מיקום של תו ומדפיסה מעין תת מחרוזת מן התו הזה...איך מוצאים מיקום אחרון של תו?יום ראשון בפורום מקבל את ההערה עם הדאבל פוסטינג. לשאלת הקוד. באיזה חלק של הקוד אני אומר לו להציג את &str המיקום? אני יודע שחסר לי המון ידע אך סה"כ ביקשתי תשובה, אני לא פה בשביל להציק לאף אחד או להקפיץ הודעות במונה שלי. סה"ב מבקש פתרון לתשובה. תודה על הסבלנות
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.