עזרב בC++

נבטכהן

New member
עזרב בC++

התחלתי ללמוד C++ מספר ישן ("C++ כשפת אם"). רציתי לתרגל קצת, ובניתי מחשבון קטן, עברתי הרהב פעמים על כולו ולא הבנתי את השגיאות. מה הבעיה בקוד? #include <iostream.h> main() { int a,b; char c,out; cin>> a; cin>> c; cin>> b; if (c == +) cout<< a+b; else if (c == -) cout<< a-b; cin>>out; }
 

galh

New member
גרש מכל צד, לא גרשיים.

כלומר '+' ולא "+". גרש מציין תו בודד, גרשיים מציינות מחרוזת null-terminated כלומר ה- "+" הוא בעצם שני char-ים, + שאחרי 0 (אפס/NULL).
 

נבטכהן

New member
עוד שאלה.

מצתער על כל ההטרדות. #include <iostream.h> main() { start: int a[3],b[3],out,x=1; char c; cin>> a[x]; cin>> c; cin>> b[x]; if (c == '+') cout<< a[x]+b[x]; else if (c == '-') cout<< a[x]-b[x]; else if (c == '*') cout<< a[x]*b[x]; else if (c == '/') cout<< a[x]/b[x]; x++ cin>>out; if(out == 'again') goto start; }
 

galh

New member
מה השאלה?

ותשתמש ב- "תחילת קוד" ו- "סיום קוד" בשביל לישר את הדוגמא לשמאל.
 

alexrait1

New member
הקוד שלך

קודם כל פונקציה main צריכה להיות מסוג כלשהו, כלומר int וצריכה להחזיר 0 בסוף. כל הקוד הזה כתוב כמו בייסיק העתיק... מה זה הgoto הזה...
 

נבטכהן

New member
אוקי...

הפחתי את הmain לInt, איך אתה רוצה שאני יחזיר את בקוד להתחלה?
 

vinney

Well-known member
לולאה

על while וfor שמעת פעם? אין שום סיבה שבעולם להשתמש ב goto.
 

נבטכהן

New member
אופס (למה אין סמיילי ביישן?)

גם עכשיו יש בעיה... "error C2015: too many characters in constant" יש גם בעיה עם המערכים, אי אפשר להגדיר מערך עם מס' משתנים לא קבוע.
#include <iostream.h> int main() { start: int a[5],b[5],out,x=1; char c; do { cin>> a[x]; cin>> c; cin>> b[x]; if (c = '+') cout<< a[x]+b[x]; else if (c = '-') cout<< a[x]-b[x]; else if (c = '*') cout<< a[x]*b[x]; else if (c = '/') cout<< a[x]/b[x]; x++; cin>>out; } while(out = 'again'); return 0; }​
 

vinney

Well-known member
אולי תקח ספר?

אתה לא יכול לעשות out='again', זה לא VB! מערך לא עובד עם אופרטור =, וגרש בודד תוחם תו, לא מחרוזת, כבר כתבו לך את זה. אתה שואל שאלות של תחביר שפה בסיסי, אני מציע לך לקחת ספר ולקרוא מהתחלה איך כותבים בC.
 

alexrait1

New member
אי אפשר כך

אתה לא יכול להשוות שתי מחרוצות סתם כך. חוץ מזה שכשאתה שם מחרוזת אז לפחות בגרשיים כפולות. כלומר "again" ולא 'again'. כדי להשוות בקלות, תשתמש ב מחלקה string. תוסיף למעלה
#include <string.h> string str("again"); do { } while (str!="again")​
משהו בסגנון כזה.
 
למעלה