====== سوال ۹ ====== تکه کد زیر را در نظر بگیرید: #include #include #include #include #include #include #include using namespace std; struct Point{ double x, y; }; struct Line { Point p[2]; }; vector polygon; vector vint; map mymap; pair pii; vector > myv; int main() { char c, s[10]; int x; long long m; string str; /* code here! */ return 0; } قرار است هر کدام از شبه‌کد های زیر را در قسمت مشخص شده ‎(''/ * code here! * /'')‎ قرار داده و تا جای ممکن به جواب برسیم. به‌طور دقیق‌تر، برای هر یک از کدهایی زیر * در صورتی که کد کامپایل نمی‌شود، محل و علّت خطای کامپایل (Compilation Error) را مشخّص کرده و معلوم کنید که چگونه باید این خطا را رفع کرد. * سپس (بعد از رفع خطای کامپایل در صورت موجود) اگر برنامه در هنگام اجرا دچار خطای زمان اجرا (Runtime Error‎) می‌شود، محل و علّت آن خطا را مشخّص کرده و مشخّص کنید که چگونه می‌توان از این خطا اجتناب کرد. * در غیر این صورت اگر برنامه به‌درستی کامپایل می‌شود اما به هر دلیلی (اعم از پایان نپذیرفتن به‌خاطر افتادن در حلقه‌ی نامتناهی، فرمت اشتباه خروجی و ‎غیره‎ خواسته‌ی برنامه‌نویس را برآورده نمی‌کند، این مورد را به همراه محل و علّت دقیق و نحوه‌ی رفع مشکل بنویسید. * سپس (بعد از رفع اشکال اجرایی) اگر برنامه ناکارآمد است (برای مثال، پیچیدگی زمانی آن به سادگی قابل کاهش است)، با ذکر نحوه‌ی بهبود کد به این مهم اشاره کنید. * نهایتاً مقدار متغیرها در هر خط از اجرای برنامه و خروجی برنامه را نیز تا حد امکان با ذکر دلیل بنویسید. ===== کد شماره یک ===== char ns[] = "chituz"; int lb = lower_bound(ns, ns+strlen(ns), 'a') - ns; int me = min_element(ns, ns+string(ns).length()) - ns; cout << lb << " " << me << endl; ===== کد شماره دو ===== for (int i=0; i<20; i++) myv.push_back(make_pair(2*i,2*i+1)); pii = *lower_bound(myv.begin(), myv.end(), make_pair(11,12)); cout << pii.second << endl; ===== کد شماره سه ===== Point p; p.x = p.y = 020/0.2; Line line; line.p[0] = p; p.x++; line.p[1] = p; polygon.push_back(line); polygon.resize(10); cout << polygon.begin()->p[1].x << endl; ===== کد شماره چهار ===== ‎ strcpy(s, '010101010'); int i = 0, j = 0; do { x = s[i] + 0XFF; c = ++x; s[i++] = c; j += 1 && str[i] ^ str[i+1]; } while (j < 5) cout << s << endl; ===== کد شماره پنج ===== m = 0; x = (int)&m; for (int i=0; i<8; i++) m = (m << 8) + 120 + i; x = (int)*(char *)x; cout << (x & 254) << endl; ===== کد شماره شش ===== x = 0; strcpy(s,"1234567890"); for (c = s[8]; c != 0; c++) x += c; cout << x << endl; for (c = s[8]; c != '0'; c++) x += c; cout << x << endl; * [[سوال ۱۰|سوال بعد]] * [[سوال ۸|سوال قبل]]