שרשור שאלות ב++C

cerr ב c++

לא אמור לעצור את ריצת התוכנית ברגע שאני עושה פלט שכזה? למה הוא עדין עובר על השורות הבאות? cerr<<"bye";
 
בקשה לחכמים מבינכם שמבינים בC++

יודעים איך מתכנתים פונקציה למשוואה ריבועית??
 
כמה שאלות ב C++

1. התנאי בif יתקיים שם יש break זה אומר שהוא יצא מה if לא יכנס ל else וימשך לשורה הבאה? 2. אם יש לי רשימה של if-ים ואני רוצה לעשות else שהכוונה שאם לא נכנסת בכל הרשימה שראית , זה לא יראה כאלו אני עושה else רק לif האחרון? 3. חיב לשים else על כל if (-הבדיחה עם הכוס מים ואחת ריקה, אמת לאמיתה ;) ?) תודה רבה!!!!
 
משהו יכול לעזור לי

יש לי פונקציה שמתעקשת להחזיר לי false גם כשאמורה להחזיר אמת, אני לא יכולה להמשיך בעבודה שלי בגללה. אם משהו יכול לראות מה קורה כאן אלפי תודות bool Token:: correctExp() { //the first check does: //if this right input, incloding right sograim stackList<char> soger; int z=0;cout<<"mone: "<<mone<<endl; while (z<mone) { //if it's not number or letter if((arrExp[z]!='*')&&(arrExp[z]!='+') &&(arrExp[z]!='/')&&(arrExp[z]!='(')&&(arrExp[z]!='-')&&(arrExp[z]!=')') &&(arrExp[z]!=';')&&(!((arrExp[z]>='a')&&(!((arrExp[z]>='0')&&(arrExp[z]<='9'))) &&(arrExp[z]<='z'))) ) return 0; if(arrExp[z]=='(') soger.Push('('); if((arrExp[z]==')')&& (soger.IsEmpty())) return 0; if(arrExp[z]==')') soger.Pop(); z++; } if(!(soger.IsEmpty())) { return 0; } //end first check for(int i=0;((i<mone)&&(arrExp!=';'));i++) { if((arrExp>='0')&&(arrExp<='9')) { //after number will come only number operator or point if(!(((arrExp[i+1]>='0')&&(arrExp[i+1]<='9'))|| ((arrExp[i+1]>='*')&&(arrExp[i+1]<='/'))||(arrExp[i+1]=='^')||(arrExp[i+1]>='.'))) return false; } if(((arrExp=='*')||(arrExp=='/')||(arrExp=='^')||(arrExp=='+')||(arrExp='-')||(arrExp=='(')||(arrExp=')'))) { //after an operator or soger will come only numbers or '-'or letters if((arrExp[i+1]>='0')&&(arrExp[i+1]<='9')|| (arrExp[i+1]=='-')||((arrExp[i+1]>='a') && (arrExp[i+1]<='z'))) return false; } if(arrExp=='.') { //after a point will come only a numbers while((arrExp[i+1]>='0')&&(arrExp[i+1]<='9')) i++; if(arrExp[i+1]=='.')//check that we have only a one point in the number. return false; } if((arrExp>='a') && (arrExp<='z')) { char name[20]; int j=0; while((arrExp>='a') && (arrExp<='z')) { name[j]=arrExp; i++; j++; } name[j]=NULL; //after the mishtane will come only operator if(!((arrExp[i+1]=='*')||(arrExp[i+1]=='/')|| (arrExp[i+1]=='^')||(arrExp[i+1]=='+')||(arrExp[i+1]=='-'))) return false; } } return 1; } *צריך להעביר את זה לווורד או משהו... רק בשביל להצליח לקרוא מה שיש פה, זה בדיקת קלט שאני מקבלת ביטוי מתמטי ואם הוא ביטוי תקין משמע- אין 2 נקודות במספר וכו' בדיקות כאלה בהם אם נכנס לif מחזיר שקר. בסופו של דבר מחזיר אמת. משום מה אני מקבלת שקר על ביטוי נכון, יש פה ענין עם אסקיי כמובן , עם []arrExp שהוא שדה במחלקה ובו נמצא הביטוי זה לגמרי מאתגר עד שזה ממש מתיש. בהצלחה
 
שאלה של #include

הרי אי אפשר לעשות include לשני הכיוונים למשל : שקובץ a משתמש ב b והפוך b משתמש ב a ואם אין לי ברירה שקורה לי ש a משתמש ב b ובb אני חייבת להצביע על אוביקט מסוג a וכך להכליל את הinclude של a ל-b משהו יודע איך מתמודדים, ?
 

vinney

Well-known member
לא, למה שיעצור את התוכנית?

cerr זה קובץ הודעות שגיאה, ברירת מחדל - המסך. אתה כותב לשם הודעות כשאתה רוצה שהמשתמש יוכל לסנן אותן בתור הודעות שגיאה (בניגוד להודעות אחרות שאתה כותב לcout).
 

vinney

Well-known member
תיישרי לשמאל בבקשה

מתחת לחלון כתיבת ההודעה יש כפתורים "התחל קוד" ו"סיום קוד" - תשתמשי בהם ליישור.
 

vinney

Well-known member
שמעי

קודם כל השאלות שאת שואלת פה לא קשורות למדעי המחשב, אלה שאלות טכניות שמקומן בפורום שפות תכנות. אנחנו נשמח לענות על השאלות האלה מדי פעם, אבל לא כשזה מציף את כל הפורום. דבר שני - אלה דברים בסיסיים בשימוש בשפה. מה שאת מחפשת זה forward declaration, ואני בטוח שזה מוסבר בספר שאת עובדת איתו. אם לא עובדת עם ספר - הגיע הזמן שתתחילי, בשאלות נפוצות של פורום שפות תכנות יש המלצות על ספרים טובים מאוד (וחינמיים) ללימוד השפה.
 

vinney

Well-known member
בכיף../images/Emo13.gif

תדאגי לשרשר שאלות נוספות לפה, היו לך איזה חמישה שרשורים בדף הפורום, אז איחדתי את כולם
 
הינה, תודה לך

bool Token:: correctExp() { //the first check does: //if this right input, incloding right sograim stackList<char> soger; int z=0;cout<<"mone: "<<mone<<endl; while (z<mone) { //if it's not number or letter if((arrExp[z]!='*')&&(arrExp[z]!='+') &&(arrExp[z]!='/')&&(arrExp[z]!='(')&&(arrExp[z]!='-')&&(arrExp[z]!=')') &&(arrExp[z]!=';')&&(!((arrExp[z]>='a')&&(!((arrExp[z]>='0')&&(arrExp[z]<='9'))) &&(arrExp[z]<='z'))) ) return 0; if(arrExp[z]=='(') soger.Push('('); if((arrExp[z]==')')&& (soger.IsEmpty())) return 0; if(arrExp[z]==')') soger.Pop(); z++; } if(!(soger.IsEmpty())) { return 0; } //end first check for(int i=0;((i<mone)&&(arrExp!=';'));i++) { if((arrExp>='0')&&(arrExp<='9')) { //after number will come only number operator or point if(!(((arrExp[i+1]>='0')&&(arrExp[i+1]<='9'))|| ((arrExp[i+1]>='*')&&(arrExp[i+1]<='/'))||(arrExp[i+1]=='^')||(arrExp[i+1]>='.'))) return false; } if(((arrExp=='*')||(arrExp=='/')||(arrExp=='^')||(arrExp=='+')||(arrExp='-')||(arrExp=='(')||(arrExp=')'))) { //after an operator or soger will come only numbers or '-'or letters if((arrExp[i+1]>='0')&&(arrExp[i+1]<='9')|| (arrExp[i+1]=='-')||((arrExp[i+1]>='a') && (arrExp[i+1]<='z'))) return false; } if(arrExp=='.') { //after a point will come only a numbers while((arrExp[i+1]>='0')&&(arrExp[i+1]<='9')) i++; if(arrExp[i+1]=='.')//check that we have only a one point in the number. return false; } if((arrExp>='a') && (arrExp<='z')) { char name[20]; int j=0; while((arrExp>='a') && (arrExp<='z')) { name[j]=arrExp; i++; j++; } name[j]=NULL; //after the mishtane will come only operator if(!((arrExp[i+1]=='*')||(arrExp[i+1]=='/')|| (arrExp[i+1]=='^')||(arrExp[i+1]=='+')||(arrExp[i+1]=='-'))) return false; } } return 1; }
 

HaifaMan

New member
טיפ קטן

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

uvdude

New member
תשמעי

אף אחד לא יכול לדבג לך את הדבר הזה על עיוור... מה גם שהפונקציה הזאת באמת כתובה בצורה מבולגנת, ואני הייתי לוקח את ההמלצה שנאמרה פה קודם, ומפרק את מה שקורה פה לתתי-שגרות. ככה גם עושים code reuse נכון, וגם הזרימה של הפונקציה תהיה הרבה יותר ברורה. לעניין, תדבגי את הפונקציה הזאת באחת השימושים שלך שלה, ותראי בדיוק לאיזה תנאי את מגיעה, תביני למה הגעת לשם, ואז תקבלי את התשובה למה את נזרקת משם עם התוצאה הלא נכונה
 

נופרבלע

New member
מה?

תנסח את השאלות שלך בצורה קצת יותר ברורה לא הבנתי מה אתה רוצה ב1 ו2 לגבי 3..לא
 
למעלה