You are not allowed to perform this action
سوال ۴
تکه کد زیر را در نظر بگیرید:
#include <iostream> #include <cstring> #include <string> using namespace std; int main() { char c, s[10]; int x, *p; long long m; /* code here! */ return 0; }
قرار است هر کدام از شبهکدهای زیر را در قسمت مشخص شده (/ * code here! * /) قرار داده و تا جای ممکن به جواب برسیم. بهطور دقیقتر، برای هر یک از کدهایی زیر
- در صورتی که کد کامپایل نمیشود، محل و علّت خطای کامپایل (Compilation Error) را مشخّص کرده و معلوم کنید که چگونه باید این خطا را رفع کرد.
- سپس (بعد از رفع خطای کامپایل در صورت موجود) اگر برنامه در هنگام اجرا دچار خطای زمان اجرا (Runtime Error) میشود، محل و علّت آن خطا را مشخّص کرده و مشخّص کنید که چگونه میتوان از این خطا اجتناب کرد.
- در غیر این صورت اگر برنامه بهدرستی کامپایل میشود اما به هر دلیلی (اعم از پایان نپذیرفتن بهخاطر افتادن در حلقهی نامتناهی، فرمت اشتباه خروجی و غیره خواستهی برنامهنویس را برآورده نمیکند، این مورد را به همراه محل و علّت دقیق و نحوهی رفع مشکل بنویسید.
- سپس (بعد از رفع اشکال اجرایی) اگر برنامه ناکارآمد است (برای مثال، پیچیدگی زمانی آن به سادگی قابل کاهش است)، با ذکر نحوهی بهبود کد به این مهم اشاره کنید.
- نهایتاً مقدار متغیرها در هر خط از اجرای برنامه و خروجی برنامه را نیز تا حد امکان با ذکر دلیل بنویسید.
کد شمارهیک
c = 1000 / float(10) - 35; cout << c << endl;
کد شماره دو
x = (1 << 32) - 1; cout << x << endl;
کد شماره سه
strcpy(s, "hello0\n"); s[1] = 'A' / 1LL + 0X00; p = (int *)(s + 1); if (*p == 'A') cout << c << endl;
کد شماره چهار
char c2 = -1; c2++; if (c2 == 0) cout << "Yes!" << endl;
کد شماره پنج
strcpy(s, "welcome"); x = s[strlen(s)]; x++; x++; p = &x; if (x & (*p == 2)) cout << "Bah Bah!" << 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;
کد شماره هفت
int &q = x; x = 5; *p = q; x++; x = *(&q); cout << x << " " << p << " " << &q << endl;
کد شماره هشت
x = 1; do { c = -2; for ( ; ; x++,c++) if (x == 10) break; else continue; } while (c < -1); cout << "akheysh! " << x << endl;