שאלה בC++

Mr Vegas

New member
שאלה בC++

כתוב פונקציה swap_values שתקבל כפרמטרים 2 מצביעים מסוג int ותחליף בין ערכים שפרמטרים מצביעים אליהם. התוכנה שכתבתי: # include <iostream.h> void main() int a=5,b=10; cout<< "a="<<a<<" "<<"b="<<b<<endl; swap_values(&a,&b); cout<< "after swap:"<<"a="<<a<<" "<<"b="<<b<<endl; void swap_values(int *a1,int *b1) int temp; temp=*a1; *a1=*b1; *b1=temp; } ההודעות שנרשמות הם: error C2065: 'swap_values' : undeclared identifier c++\work1\work1q2.cpp(12) : error C2373: 'swap_values' : redefinition; different type modifiers Attachment מישהו יודע מה הבעיה?
 

the new L

New member
כמה הערות

קודם כל, קיבלת שגיאה בגלל שהשתמשת בפונקציה לפני שהגדרת אותה (וגם לא הצהרת עליה). דבר שני, פעולה כזאת ב C++ עדיף לעשות עם reference ולא עם pointer. מעבר לכך, הפונקציה swap קיימת כבר בתוך השפה. בנוסף לכך הפונקציה main צריכה להחזיר int ולא void. כמו כן השימוש ב iostream.h הוא deprecated ויש להימנע ממנו ולהשתמש ב iostream קח צורה אלטרניטיבית לתוכנית שלך:
#include <iostream> void swap_values(int &nFirst, int &nSecond); int main() { int a = 5, b = 10; std::cout << "Before swap: a= " << a << " b= " << b << "\n"; swap_values(a,b); std::cout << "After swap: a= " << a << " b=" << b << "\n"; return 0; } void swap_values(int &nFirst, int &nSecond) { const int nTemp = nFirst; nFirst = nSecond; nSecond = nTemp; }​
 
כאן - לא הרבה...

אבל ככלל, 1) הוא מגן עלייך מפני טעויות - ברגע שמשתנה אמור להיות קבוע ובטעות דרסת אותו - אם הגדרתו אותו כ-const, הקומפיילר כבר יצעק עלייך (ויחסוך ממך באג שיתכן ולא תגלה אותו בזמן-ריצה). 2) כתיעוד. ברגע שאתה מגדיר אותו כ-const, כל תוכניתן שיראה את הקוד שלך ידע ישר מה הייתה הכוונה שלך...
 
דבר ראשון:

נתחיל מלהצמיד את הקוד לשמאל באמצעות "תחילת קוד" ו"סיום קוד":
#include <iostream.h> void main() { int a=5,b=10; cout<< "a="<<a<<" "<<"b="<<b<<endl; swap_values(&a,&b); cout<< "after swap:"<<"a="<<a<<" "<<"b="<<b<<endl; } void swap_values(int *a1,int *b1) { int temp; temp=*a1; *a1=*b1; *b1=temp; } error C2065: 'swap_values' : undeclared identifier c++\work1\work1q2.cpp(12) : error C2373: 'swap_values' : redefinition; different type modifiers Attachment​
 
יופי... הקדימו אותי...

אבל בלי קשר - אין לך } בכלל (גם אחרי ה-main וגם אחרי ה-swap_values)...
 

ברנדל

New member
שכחת לרשום אבטיפוס

# include <iostream.h> void swap_values(int *a1,int *b1); void main() { int a=5,b=10; cout<< "a="<<a<<" "<<"b="<<b<<endl; swap_values(&a,&b); cout<< "after swap:"<<"a="<<a<<" "<<"b="<<b<<endl; } void swap_values(int *a1,int *b1) { int temp=*a1; *a1=*b1; *b1=temp; }​
 
למעלה