نمونه سوالات سی پلاس پلاس پیشرفته همراه با حل سوالات منتخب

با توجه به نزدیک شدن به ایام امتحانات در این نوشته به طرح سوالات سی پلاس پلاس پیشرفته به همراه حل برخی از کدهای آن پرداخته شده است.  اگر در فهم سوالات مشکل دارید شاید بد نباشد مطالبی که درآموزش ماتریس، استراکچر ، اشاره گر و شی گرایی مطرح شده است را نگاهی دوباره بیندازید. همچنین در قسمت نظرات می‌توانید سوالات یا توضیحات تکمیلی در مورد مثالهای ارائه شده با دوستانتان مطرح کنید.

نمونه سوالات ماتریس

1- برنامه ای بنویسید که از ورودی یک ماتریس دریافت کند و
     a-  مجموع عناصر ماتریس را چاپ کند.
     b-  مجموع عناصر قطر اصلی را چاپ کند.
     c-  مجموع عناصر بالای قطر اصلی را چاپ کند
     d- مجموع عناصر پایین قطر اصلی را چاپ کند.

2- برنامه ای بنویسید که از ورودی یک ماتریس دریافت کند و
     a-  بزرگترین عنصر ماتریس را چاپ کند.
     b- بزرگترین عنصر قطر اصلی را چاپ کند.
     c- بزرگترین عنصر بالای قطر اصلی را چاپ کند
     d- بزرگترین عنصر پایین قطر اصلی را چاپ کند

3- برنامه ای بنویسید که از ورودی یک ماتریس دریافت کند و
     a-  تشخیص دهد که آیا ماتریس قطری است یا خیر
     b- تشخیص دهد که آیا ماتریس بالا مثلثی است یا خیر
     c- تشخیص دهد که آیا ماتریس پایین مثلثی است یا خیر
     d-  تشخیص دهد که آیا ماتریس متقارن است یا خیر

4- برنامه ای بنویسید که از ورودی یک ماتریس دریافت کند و
     a- حاصلجمع عناصر سطر اول ماتریس
     b-  حاصلضرب عناصرستون آخر
     c – تعداد عناصر صفر ماتریس
     d- کوچکترین عنصر قطر فرعی ماتریس

5-  برنامه ای بنویسید که دو ماتریس از ورودی دریافت کند
     a- حاصلجمع دو ماتریس را چاپ کند
     b- حاصلضرب دو ماتریس را چاپ کند
     c- تشخیص دهد که آیا دو ماتریس برابرند یا خیر

اگه دوست دارید به کدهای سوالات این نوشته دسترسی داشته باشید این محصول رو بهتون پیشنهاد میکنم: حل سوالات سی پلاس پلاس پیشرفته

اگه دوست دارید ++C رو اصولی و درست یاد بگیرید پیشنهاد میکنم این دوره رو ببینید، با یه قیمت فوق العاده مناسب:
آموزش C++

با خرید دوره بالا به همه جوابهای این نوشته هم دسترسی خواهید داشت

من رو در اینستاگرام تلگرام یوتیوب دنبال کنید

نمونه سوالات استراکچر - struct

1- برنامه ای بنویسید که:
      a- با استفاده از structure یک تاریخ مشخص از ورودی دریافت کند. سپس همان اطلاعات را در خروجی چاپ کند. (تاریخ شامل روز ماه و سال)
     b- با استفاده از structure یاطلاعات یک دانشجو از ورودی دریافت کند. سپس همان اطلاعات را در خروجی چاپ کند. (اطلاعات دانشجو شامل: نام، شماره دانشجویی، معدل و تاریخ تولد)

2- برنامه‌ای بنویسید که اطلاعات 10 دانشجو (شامل شماره‌ی دانشجویی، نام دانشجو، معدل دانشجو و تاریخ تولد) را دریافت کند و
      a- نام دانشجویی که بیشترین معدل کلاس را دارد چاپ کند.
      b- به معدل دانشجویی که بیشترین سن را دارد (برای احترام به بزرگترها و کسوت مداری) یک نمره اضافه کند!
      c- اطلاعات دانشجویان را بر حسب معدل (به صورت نزولی) نمایش دهد

3- برنامه ای بنویسید که از ورودی اطلاعات 10 کارمند (شامل نام، حقوق و سن) را دریافت کند و
      a- نام کارمندی که بیشترین حقوق دریافت میکند چاپ کند.
      b- میانگین حقوق کارمندان را محاسبه کند.
      c- تعداد کارمندانی که زیر 3 میلیون تومان حقوق دریافت میکنند را چاپ کند
      d-

4- برنامه‌ای بنویسید که ورودی تاریخ تولد کاربر و تاریخ امروز را دریافت کند. سپس سن کاربر را محاسبه کند.

5- برنامه ای بنویسید که از ورودی مختصات 10 نقطه دریافت کند (هر نقطه شامل x و y است)

     a- و مرکز این نقاط را پیدا کند. (منظور از مرکز میانگین همه نقاط است)
     b- سپس یک نقطه دیگر از ورودی دریافت کند و نزدیکترین نقطه (از بین 10 نقطه اول) به نقطه جدید را پیدا کند.

اگه دوست دارید به کدهای سوالات این نوشته دسترسی داشته باشید این محصول رو بهتون پیشنهاد میکنم: حل سوالات سی پلاس پلاس پیشرفته

اگه دوست دارید ++C رو اصولی و درست یاد بگیرید پیشنهاد میکنم این دوره رو تهیه کنید، با یه قیمت فوق العاده مناسب:

 

آموزش C++

با خرید دوره بالا به همه جوابهای این نوشته هم دسترسی خواهید داشت

 

نمونه سوالات سی پلاس پلاس

50 سوال ++C مقدماتی

50 سوال از ساختار تکرار، تابع، آرایه و سوالات چالشی به همراه حل سوالات منتخب

نمونه سوالات اشاره گر - pointer

1- برنامه ای بنویسید که با استفاده از اشاره گرها طول و عرض مستطیلی را دریافت کند و محیط و مساحت آن را محاسبه کند.

2- برنامه ای بنویسید که با استفاده از اشاره گرها یک آرایه دریافت کند و مجموع عناصر آرایه را چاپ کند.
(از دو تابع استفاده کنید: تابع اول آرایه را دریافت میکند و تابع دوم محموع آرایه را چاپ می کند.)

3- خروجی کد زیر چیست؟

void function(int *ptr1,int ptr2)
{
    *ptr1 = 30;
     ptr2 = 40;	
}
int main()
{
  int y = 20,x=10;
  function (&y,x);
  cout<<x+y;
}
 

4- کد زیر را در نظر بگیرید. ترکیبی از استراکچر و اشاره گر. کد زیر یکی از مفاهیم مهم در ساختمان داده هاست (لیست پیوندی). سعی کنید کد زیر را درک کنید که چه اتفاقی می افتند و در خروجی چه چیزی چاپ می شود
نکته آموزشی : وقتی شما یک متغیر از جنس استراکچر تعریف میکنید و آدرس آن را در اشاره گر ptr  قرار میدهید، اگر با استفاده از ptr بخواهید به اعضای استراکچر دسترسی پیدد کنید از دات (نقطه) استفاده نکنید. از این عملگر استفاده میکنیم: <-

struct item{
    string data;
    *item link;
}

int main(){
    item i1,i2;
    
    i1.data = "hamid";
    i2.data = "jahangiri";
    
    i1.link = &i2;

    item *ptr = &i1;

    cout<<ptr->link->data;
} 
اگه دوست دارید به کدهای سوالات این نوشته دسترسی داشته باشید این محصول رو بهتون پیشنهاد میکنم: حل سوالات سی پلاس پلاس پیشرفته

اگه دوست دارید ++C رو اصولی و درست یاد بگیرید پیشنهاد میکنم این دوره رو تهیه کنید، با یه قیمت فوق العاده مناسب:
آموزش C++

با خرید دوره بالا به همه جوابهای این نوشته هم دسترسی خواهید داشت

 

نمونه سوالات شی گرایی

1- کلاسی به نام Date تعریف کنید که شامل پروپرتی های (صفات) day, month,year باشد:

a – متدی به نام set_date تعریف کنید که مقادیر day, month, year را مقدارهی کند
b – متدی به نام print_date بنویسید که تاریخ را در خروجی نمایش دهد (مثلا: 1401/2/11)
c – متد print_date را به شکلی بنویسید که برای روز و ماه چنانچه عدد یک رقمی بود قبل آن صفر قرار دهد (مثلا 1401/02/11 – دقت کنید که 02 نوشته شده است)
برای این کار یا میتوانید از if  استفاده کنید و یا از توابع setw و setfill. در گوگل سرچ کنید و طریقه استفاده از آن را یاد بگیرید.
d- برای کلاس Date سازنده تعریف کنید

 

Date();
Date(int year, int month, int day);
void set_date(int year, int month, int day);
void print_date(); 

 

2-  کلاسی  به نام Rect طراحی کنید که شامل پروپرتی های width  و height است:

a- متدی به نام set_rect تعریف کنید که مقادیر width و height را مقداردهی کند.
b- متدی به نام area تعریف کنید که مساحت مستطیل را برمیگرداند
c- متدی به نام is_square تعریف کنید که مشخص میکند که این مستطیل مربع است یا خیر (نوع بازگشتی bool)
d- برای کلاس Rect سازنده تعریف کنید

در تابع main از کاربر طول و عرض مستطیل را دریافت کنید و با استفاده از کلاسی که تعریف کردید مساحت مستطیل را چاپ کنی.

 

 


Rect(int width, int height);
void set_rect(int width, int height);
int area();
bool is_square(); 

 

 

 

3- کلاسی به نام Account تعریف کنید که قرار است حساب بانکی یک فرد را مدلسازی کند و شامل پروپرتی های name و balance (موجودی) باشد: متدهای زیر را برای این کلاس تعریف کنید:

Account(string n);
Account(string n, int initial_balance);
string get_name();
int get_balance();
void deposit(int amount);
void withdraw(int amount); 

در کلاس بالا، deposit به معنای واریز به حساب و withdraw به معنی برداشت از حساب است.

4- کلاسی به نام Bank تعریف کنید که شامل  اطلاعات حساب مشتریان است (کلاس Acoount سوال قبل). این اطلاعات یا با استفاده از آرایه یا وکتور و یا اشاره گر تعریف می شود. متدهای زیر را برای کلاس تعریف کنید. (روش اصولی و درست آن استفاده از وکتور است اما اگر وکتور بلد نیستید با استفاده از آرایه به شکل زیر استفاده کنید)

class Bank{
private:
    Account accounts[10000];
    int number_of_account;
    
public:
    void add_account(string name , int balance);
    void print_accounts();
    void deposit(string name , int amount);
    void withdraw(string name, double amount);
} 
در کلاس بالا در متد deposit در واقع به حساب name مقدار amount اضافه می شود و در متد withdraw از حساب name مقدار amount  حذف می‌شود.
 
5- کلاسی به نام Movie تعریف کنید که شامل پروپرتی های name و rating(امتیاز فیلم) و watched (تعداد مشاهده فیلم) و متدهای زیر باشد:
class Movie{
private:
    string name;
    int rating,watched;
public:
    Movie(string n, int r, int w);
    string get_name();
    int get_rating();
    int get_watched();
    
    void increment_watched();
} 

6- کلاسی به نام Movies تعریف کنید که شامل اطلاعات فیلمهاست (کلاس Movie سوال قبل)  این اطلاعات یا با استفاده از آرایه یا وکتور و یا اشاره گر تعریف می شود. متدهای زیر را برای کلاس تعریف کنید. (روش اصولی و درست آن استفاده از وکتور است اما اگر وکتور بلد نیستید با استفاده از آرایه به شکل زیر استفاده کنید)

class Movies{
private:
    Movie movies[10000];
    int number_of_movie;
    
public:
    void add_movie(string n, int r, int w);
    void display_movie();
    void increment_watched(string name);
} 
اگه دوست دارید به کدهای سوالات این نوشته دسترسی داشته باشید این محصول رو بهتون پیشنهاد میکنم: حل سوالات سی پلاس پلاس پیشرفته

اگه دوست دارید ++C رو اصولی و درست یاد بگیرید پیشنهاد میکنم این دوره رو تهیه کنید، با یه قیمت فوق العاده مناسب:


آموزش C++

با خرید دوره بالا به همه جوابهای این نوشته هم دسترسی خواهید داشت

 

حل سوالات منتخب

سوال 1 ماتریس قست ب:
برنامه ای بنویسید که از ورودی یک ماتریس دریافت کند و
     b-  مجموع عناصر قطر اصلی را چاپ کند.
 
    int const m=3, n=2; //3 satr , 2 sotoon
    int i,j,A[m][n];
   
    cout<<"matrix ra vared kon: ";
    
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            cin>>A[i][j];

    int sum =0;

    for(i=0;i<m;i++)
          sum += A[i][i];

    cout<<"majmoo anasor ghotre asli: "<<sum;
 

سوال 5 ماتریس قسمت a :
برنامه ای بنویسید که دو ماتریس از ورودی دریافت کند و مجموع دو ماتریس را چاپ کند

    int const m=2, n=2; //2 satr , 2 sotoon
    int i,j,A[m][n],B[m][n],C[m][n];
   
    cout<<"matrix A ra vared kon: ";
    
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            cin>>A[i][j];

    cout<<"matrix B ra vared kon: ";
    
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            cin>>B[i][j];

    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            C[i][j]= A[i][j] + B[i][j];

    cout<<"Matrix C: "<<endl;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++)
            cout<<C[i][j]<<" ";
        cout<<endl;
    }
 

سوال 2 استراکچر( قسمت الف):
برنامه‌ای بنویسید که اطلاعات 10 دانشجو (شامل شماره‌ی دانشجویی، نام دانشجو، معدل دانشجو و تاریخ تولد) را دریافت کند و
      a- نام دانشجویی که بیشترین معدل کلاس را دارد چاپ کند

struct date{
    int day,month,year;
};

struct student{
    int number;
    string name;
    float avg;
    date birthday;
};

int main(){

   int const n = 3;
   student s[n];

    //اطلاعات دانشجوبان را از ورودی میخونیم:
   for(int i=0; i<n;i++){
       cout<<"\nEnter name: ";
        cin>>s[i].name;

        cout<<"Enter number: ";
        cin>>s[i].number;

        cout<<"Enter avg: ";
        cin>>s[i].avg;
        

        cout<<"Enter birthday(day): ";
        cin>>s[i].birthday.day;

        cout<<"Enter birthday(month): ";
        cin>>s[i].birthday.month;

        cout<<"Enter birthday(year): ";
        cin>>s[i].birthday.year;
   }

   //a
   int idx = 0;
   for(int i=1;i<n;i++){
       if(s[i].avg > s[idx].avg)
            idx = i;
   }

   cout<<s[idx].name<<endl;
   
  } 

سوال 5 استراکچر (قسمت الف) :

برنامه ای بنویسید که از ورودی مختصات 10 نقطه دریافت کند (هر نقطه شامل x و y است)

     a- و مرکز این نقاط را پیدا کند. (منظور از مرکز میانگین همه نقاط است)

struct point{
    int x,y;
};

int main(){

    int const n = 3;
    point p[n];

    for(int i = 0; i<n ;i++)
    {
        cout<<"Enter point "<<i+1<<": ";
        cin>>p[i].x>>p[i].y;
    }


    float sum_x = 0;
    float sum_y = 0;

    for(int i=0;i<n;i++){
        sum_x += p[i].x;
        sum_y += p[i].y;
    }

    cout<<"x: "<<sum_x/n<<" y: "<<sum_y/n<<endl;
    
} 

سوال 2 اشاره گر:

 برنامه ای بنویسید که با استفاده از اشاره گرها یک آرایه دریافت کند و مجموع عناصر آرایه را چاپ کند.

(از دو تابع استفاده کنید: تابع اول آرایه را دریافت میکند و تابع دوم محموع آرایه را چاپ می کند.)

int *input(int n){
    int *array = new int[n];

    for(int i=0;i<n;i++)
        cin>>*(array+i);

    return array;
}

int sum(int *array, int n){
    int s=0;
    for(int i=0;i<n;i++)
        s += *(array+i) ;

    return s;


}

int main(){
    //soal 2 - ravesh 2
    int n;
    cout<<"chan ta adad dari?";
    cin>>n;
    cout<<"Adad ro vared kon: ";
    int *numbers = input(n);
    cout<<"majmoo: "<<sum(numbers,n);

    getch();
    return 0;
} 

سوال 1 شی گرایی (الف و ب):

1- کلاسی به نام Date تعریف کنید که شامل پروپرتی های (صفات) day, month,year باشد:

a – متدی به نام set_date تعریف کنید که مقادیر day, month, year را مقدارهی کند
b – متدی به نام print_date بنویسید که تاریخ را در خروجی نمایش دهد (مثلا: 1401/2/11)

class Date
{
private:
    int year, month, day;
public:
    Date();
    Date(int y, int m, int d);
    void set_date(int y, int m, int d);
    void print_date();
};

void Date::set_date(int y, int m, int d){
    
    if(y<1300){
        cout<<"sal na motabar ast-";
        return;
    }

    if(m<=0 || m>=13){
        cout<<"mah na motabar ast";
        return;
    }

    if (d <=0 || d >= 32){
        cout<<"rooz na motabar ast";
        return;
    }

    if(m >6 and d == 31){
        cout<<"rooz na motabar ast";
        return;
    }

    year = y;
    month = m;
    day = d;
    
}

void Date::print_date(){
    cout<<year<<" / ";
    if(month < 10)
        cout<<"0";
    cout<<month<<" / ";
    if(day < 10)
        cout<<"0";
    cout<<day<<endl;
} 
اگه دوست دارید به کدهای سوالات این نوشته دسترسی داشته باشید این محصول رو بهتون پیشنهاد میکنم: حل سوالات سی پلاس پلاس پیشرفته

اگه دوست دارید ++C رو اصولی و درست یاد بگیرید پیشنهاد میکنم این دوره رو تهیه کنید، با یه قیمت فوق العاده مناسب:
آموزش C++

با خرید دوره بالا به همه جوابهای این نوشته هم دسترسی خواهید داشت

 

اگه دوست داری میتونی آموزشهای من رو از سایت و یوتیوب هم دنبال کنی

نمونه سوالات سی پلاس پلاس

نمونه سوالات برنامه نویسی مقدماتی

اگه دوست داری نمونه سوالات تابع، حلقه تکرار for و while و آرایه رو به همراه حل سوالات منتخبشون رو ببینی رو دکمه زیر کلیک کن:

ممنون که تا اینجا همراه من بودید. اگر از آموزش این پست خوشتون اومد و یا سوالی داشتید حتما در قسمت نظرات با من درمیون بذارید. اگر هم به یوتیوب و یا اینستاگرام دسترسی دارید من رو در این دو پلتفرم دنبال کنید و با لایک ها و کامنتاتون به من انرژی بدید. در کانال تلگرام هم میتونید بیشتر با من در ارتباط باشید