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

در این نوشته تمرینهای مربوط به آموزشهای سی‌پلاس پلاس در کانال یوتیوبِ من رو میتونید ببینید. نکته مهم این تمرینها اینه که در هر جلسه در قالب تمرین و سوال چند تا نکته جدید بهتون میگم. پس تمرینها رو جدی بگیرید
پیشنهاد میکنم از طریق لینک زیر ویدیوهای من در یوتیوب رو مشاهده کنید.

تمرین و نکات جلسه 7

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

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

3- برنامه ای بنویسید که 3 عدد از ورودی دریافت کند و تعداد اعداد زوج را چاپ کند.
(اگر کد این سوال رو نتونستید حل کنید ایراد نداره! در جلسه 11 سی پلاس پلاس یک نکته دیگه از هنر حل مساله بهتون میگم. ولی پیشنهاد میکنم مساله 10 و 11 جلسه دوم الگوریتم و فلوچارت رو ببینید)

4- شما به عنوان برنامه نویس باید این توانایی رو داشته باشید که بتونید یک کدی رو بخونید و ازش سر دربیارید. کد زیر رو ببینید و تحلیل کنیدکه به ازای اعداد 5، 12 و 9 چه چیزی در خروجی چاپ میشه.
(راهنمایی: نکات مربوط به این کد رو در جلسه 10 سی پلاس پلاس بهتون میگم. اما بد نیست ذهنتون رو با این مثال گرم کنید! اگر متوجه نشدید کد رو ببرید تو vscode اجرا کنید و به ازای ورودی های مختلف تستش کنید، فکر کنم سخت نباشه)

5- این اولین تمرین شما در آموزش سی پلاس پلاسه، در قسمت کامنتها حتما به من بگید که چند تا از این 4 سوال رو تونستید حل کنید. جوابهای شما برای تمرینهای بعدی که بهتون میدم خیلی با اهمیته!

int x,y,x;
cin>>x>>y>>z;

if(x>y){
    if(x>z)
        cout<<x;
    else
        cout<<z;
}else{
    if(y>z)
        cout<<y;
    else
        cout<<z;
} 

1- با مفهوم ساختار شرط آشنا میشوید

2- با if، else if و else آشنا می شوید

3- چند نکته مهم در ساختار شرط را یاد میگیرید

19 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 8 : عملگرهای منطقی

1- به نظر شما خروجی کد زیر چیست؟ با دقت تحلیل کنید و با اجرا در  vscode از صحت جواب خود مطمئن شوید.

bool b = true || false && !true;

cout<<b;  

نکته سوال قبل:

وقتی در یک دستور چند عملگر منطقی میبینید (مثل کد بالا) اولویت عملگرها معنی پیدا میکند. با یک مثال اولویت عملگرها را توضیح میدهم. مقدار عبارت زیر چند می‌شود؟

2 + 3 * 6

جواب عبارت بالا 20 میشه، نه 30! چرا؟ چون اولویت عملگر * از + بیشتره و شما اول باید ضرب رو انجام بدید بعد جمع. برای عملگرهای منطقی هم همچین چیزی داریم. اولویت عملگر && از اولویت عملگر || بیشتره و اولویت ! از هر دوتاش بیشتره!

2- خروجی کد زیر چیست؟ با دقت تحلیل کنید و با اجرا در vscode از صحت جواب خود مطمئن شوید.

bool b = true && (false || !true) && !false ;

cout<<b;  

3- میخواهیم انتخاب واحد دانشجو را به این صورت چک کنیم:
   – اگر دانشجو ترم قبل مشروط نشده باشه باید بین 12 تا 20 واحد درس برداره!
   – اگر دانشجو ترم قبل مشروط شده بین 12 تا 14 واحد میتونه درس برداره
   – و اگر ترم آخرش باشه فرقی نمیکنه ترم قبل مشروط شده یا نه تا سقف 24 واحد میتونه درس برداره

برنامه ای بنویسید که از ورودی معدل ترم قبل، تعداد واحدهای اخذ شده و وضعیت ترم آخری دانشجو (که ترم آخر است یا نه!) دریافت کند و مشخص کند که آیا انتخاب واحدش درست است یا خیر

با عملگرهای رابطه ای و منطقی آشنا می شوید:

== , != , > , < , => , =<

&& , || ,!

24 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 9 : switch case

در جلسه 9 سی پلاس پلاس در کانال یوتیوب یک ماشین حساب ساده پیاده سازی کردیم. کد این سوال را در ادامه میبینید:

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{

    char oper;
    float num1, num2;
    cout << "\n\n Enter an operator (+, -, *, /): ";
    cin >> oper;
    cout << "Enter two numbers: " << endl;
    cin >> num1 >> num2;

    switch (oper) {
        case '+':
            cout << num1 << " + " << num2 << " = " << num1 + num2;
            break;
        case '-':
            cout << num1 << " - " << num2 << " = " << num1 - num2;
            break;
        case '*':
            cout << num1 << " * " << num2 << " = " << num1 * num2;
            break;
        case '/':
            cout << num1 << " / " << num2 << " = " << num1 / num2;
            break;
        default:
            cout << "Error! The operator is not correct";
            break;
    }

    
    cout<<endl<<endl;

    getch();
    return 0;
} 

کد اسکی:

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

اما بد نیست کد زیر را در vscode اجرا کنید و مقادیر مختلف را امتحان کنید. در واقع با تبدیل کاراکتر به int کد اسکی کاراکترها را در خروجی چاپ میکنیم

char a = 'a';

       int x = (int) a;
       cout<<x; 

1- برنامه ای بنویسید که از ورودی پیش شماره تلفن دریافت کند و در خروجی نام شهر را بنویسد.
(مثلا اگر کاربر 21 وارد کرد در خروجی تهران، و اگر 71 وارد کرد در خروجی شیراز … چاپ کند. این پیش شماره ها باید در کد شما وجود داشته باشند و اگر کاربر پیش شماره اشتباه وارد کرد در خروجی پیام مناسبی چاپ شود)

 

2- برنامه ای بنویسید که از ورودی یک عدد بین 1 تا 7 (که نماینده روزهای هفته است) دریافت کند و متناسب با آن عدد یکی از روزهای هفته را نمایش دهد. چنانچه عدد در این بازه نبود پیغام مناسبی چاپ کند

(مثلا عدد 1 : شنبه، عدد 2: یک شنبه….)

18 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 11 : حل چند مساله

نکته این جلسه:

یکی از دستوراتی که در این آموزش مطرح شد تابع sqrt بود که رادیکال را محاسبه میکند. در آموزش cout<<sqrt(4) نوشته شده بود که اگر شما هم این دستور را تست کنید خواهید دید عدد 2 در خروجی چاپ می شود. اما نکته ای که وجود دارد این است که اگر بخواهید sqrt(x) را الگوریتمتان استفاده کنید متغیر x باید از جنس double باشد. (البته اگر در محیط  vscode کدنویسی کنید و x را int تعریف کنید به شما خطایی نمیدهد ولی در محیطهای دیگر ممکن است خطا مشاهده کنید) علاوه بر آن خروجی sqrt(x) از جنس double است. پس اگر میخواهید دستور y = sqrt(x) داشته باشید متغیر y باید از جنس double باشد (البته میتوانید y  را از جنس int تعریف کنید ولی باید در نظر داشته باشید که اگر  sqrt(x) خروجی اعشاری داشته باشد قسمت اعشاری در y ذخیره نمیشود.

 

تمرین این جلسه:

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

در قالب چند مثال مباحث ساختار شرط را با هم مرور میکنیم و دو نکته از هنر حل مساله را به شما آموزش میدهم

24 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 12: ساختار while

نکته این جلسه:

در آموزش این جلسه با استفاده از ساختار while تعدادی عدد مشخص از ورودی دریافت کردیم. با استفاده از while میتوان تعداد نامشخصی عدد از ورودی نیز دریافت کرد. مثلا فرض کنید میخواهیم تعدادی نمره از کاربر دریافت کنیم. چنانچه عدد وارد شده منفی یک بود به معنی پایان برنامه است و دیگر نمیخواهیم نمره ای از ورودی دریافت شود. برای این کار ما باید تا زمانی که نمره ی وارد شده توسط کاربر مخالف منفی یک است از ورودی نمره دریافت کنیم. با این توضیحات تمرین زیر را انجام دهید

 

تمرین این جلسه:

1- برنامه ای بنویسید که از ورودی تعدادی عدد دریافت کند و همان نمرات را در خروجی چاپ کند. کاربر برای پایان وارد کردن نمرات عدد منفی یک را وارد میکند.

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

3- برنامه ای بنویسید که تعدادی عدد دریافت کند و بزرگترین عدد را در بین آنها پیدا کند. (راهنمایی در مثال 19 از آموزش ساختار تکرار در الگوریتم و فلوچارت این مساله حل شده است، الگوریتم حل مساله را آنجا یاد بگیرید)

یکی از پایه ای ترین مفاهیم هر زبان برنامه نویسی ساختار تکرار است در این جلسه با مفهوم ساختار تکرار آشنا میشوید و while ؤا یاد میگیرید

15دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 13: ساختار do while

نکته و تمرین این جلسه:

در آموزش این جلسه در مورد یکی از کاربردهای do while صحبت شد (اعتبارسنجی داده های ورودی) یکی دیگه از کاربردهای do while پیاده سازی منو هست. ما در جلسه 11 (ویدیو جلسه 11 در یوتیوب) و در مساله 4 یک منوی ساده طراحی کردیم که فقط یک بار میتوانستیم از کاربر ورودی دریافت کنیم. فرض کنید از ورودی 2 عدد دریافت کردیم و خروجی زیر به ما نمایش داده شده است. برنامه جلسه 11 را چنان تغییر دهید که امکان انتخاب های مجدد در منو داشته باشد. یعنی مثلا اگر کاربر S را وارد کرد جمع دو عدد در خروجی نمایش دهد و دوباره منو نمایش داده شود و کاربر امکان انتخاب های دیگر داشته باشد.
(این مثال را با while  هم میتوانید پیاده سازی کنید ولی do while انتخاب بهتری است. چرا؟)

P - Print numbers
S - Display sum of numbers
X - Display max of numbers
N - Display min of numbers
Q- Quit 

Enter your choice: 

درسی پلاس پلاس سه نوع ساختار تکرار داریم، در این آموزش با ساختار do while آشنا می شوید

15دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 14: ساختار for

در تمرین های این جلسه شما باید کدها را  trace کنید و حدس بزنید در خروجی چه چیزی چاپ می شود. میتوانید کدها را در vscode اجرا کنید و درستی ادعای خود را بررسی کنید.
(مفهوم trace در آموزش این جلسه توضیح داده شده است.)
 
1- خروجی کد زیر چیست؟ این الگوریتم چه کاری انجام می دهد؟ اگر n=10 باشد خروجی چند می شود؟
int i,s=0, n=5;
for(i=1; i<=n;i++)
    s = s + i;
    
cout<<s; 

2- خروجی کد زیر چیست؟
(راهنمایی: در آموزش switch case (جلسه 9) در مورد کد اسکی صحبت شده است (دقیقه 15:55))

char c;
for(c = 'a'; c<='z';c++)
    cout<<c; 

در قالب 4 مثال با ساختار for آشنا میشوید

12 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 15

تمرین 1: برنامه ای بنویسید که معدل 10 دانشجو از ورودی دریافت کند و تعداد دانشجویان مشروط شده را چاپ کند

(راهنمایی:
در مثال 1 جلسه 11 تعداد طرفداران پرسپولیس و استقلال را محاسبه کردیم. ایده حل این تمرین شبیه به آن سوال است.)

تمرین 2: برنامه ای بنویسید که معدل 10 دانشجو از ورودی دریافت کند و میانگین معدل دانشجویان مشروط شده را چاپ کند

در قالب 3 مثال در مورد اینکه چطور یک مساله را حل کنیم صحبت می شود

17 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 16

سوال زیر، یکی از سوالات مسابقه برنامه نویسی است. سوالی که در آموزش یوتیوب مشاهده کردید در واقع ساده شده مساله زیر است! ابتدا سوال زیر را بخوانید و با مقایسه سوالی که در ویدیو مطرح شد مدل بندی این مساله را درک کنید. مدل بندی میتواند ساده سازی یک مساله هم باشد. مثلا من مساله عباسقلی که در ادامه میبیند را مدل کردم به مساله دست انداز که در ویدیو مشاهده کردید. بعد از درک مدل بندی مساله در قدم بعدی سعی کنید مساله را حل کنید و کدنویسی کنید.

 

1- قبیله‌ی «گاوچران‌های بی‌ادعا» یک رئیس مقتدر به نام «عباسقلی» دارد. در پی فشارهای زیاد کاری که در این چند روز اخیر بر روی عباسقلی بود، او تصمیم گرفته تا آخر هفته به همراه اهل و عیال، راهی شهرستان خوش آب و هوای «جدولستان» شود.
جاده‌ای که به شهرستان جدولستان می‌رود، خود به صورت یک جدولِ  ۱×n است که در هر خانه‌ی آن یک عدد طبیعی نوشته‌شده. می‌گوییم این جاده دارای دست‌انداز است، اگر خانه‌ای در جدول وجود داشته باشد که عددِ آن از عدد دو خانه‌ی مجاورش اکیداً بیشتر باشد.

عباسقلی و اهل و عیال هم‌اکنون در خانه‌ی اول از این جدول قرار دارند و می‌خواهند به خانه‌ی آخر جاده برسند. آیا می‌توانید با گرفتنِ جاده‌ای که به شهرستان جدولستان می‌رود، بگویید که عباسقلی و خانواده‌اش می‌توانند تا آخر هفته در شهرستان جدولستان، در کنار هم جوج بزنند یا نه؟ توجه کنید ماشین عباسقلی قابل اعتماد نیست و در جاده‌هایی که دست‌انداز دارند، دچار نقص فنی می‌شود.

ورودی: در سطر اول ورودی، عدد طبیعی  n که نشان‌دهنده‌ی طول جاده‌ی جدولستان است، آمده. در سطر دوم به ترتیب n  عدد که نشان‌ دهنده‌ی مقدار نوشته‌شده در خانه‌های جاده‌ی جدولستان است، می‌آید.

خروجی: اگر عباسقلی و اهل و عیال می‌توانند به خانه‌ی آخر جدول برسند، عبارت Bah Bah! Ajab jooji!  و در غیر این صورت، عبارت Ey baba    را چاپ کنید
 
2-  برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و بزرگترین آنها را چاپ کند
3- برنامه ای بنویسید که از ورودی 100 عدد دریافت کند و مشخص کند بزرگترین عدد چند بار تکرار شده است.

در قالب دو مثال فیبوناچی و ب م م با هنر حل مساله آشنا می شوید.

21 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 17

در تمرین این جلسه چند سوال مطرح می‌شود. شما بررسی کنید که آیا برای حل این سوالات به آرایه نیاز داریم یا بدون آرایه هم میتوان حل کرد:

(نیاز به کد نویسی این سوالات نیست)

1- برنامه ای بنویسید که از ورودی 20 عدد دریافت کند و برعکس ترتیب ورودی اعداد را چاپ کند.
(مثلا اگر اعداد به ترتیب 10 و 18 و 13 وارد شده باشد باید بر عکس ترتیب ورودی چاپ شود، بعنی 13 و 18 و 10)

2- برنامه ای بنویسید که از ورودی 100 عدد دریافت کند و بزرگترین عدد را چاپ کند

3- برنامه ای بنویسید که از ورودی 100 عدد دریافت کند و واریانس اعداد را چاپ کند.
(تعریف واریانس)

در این آموزش با مفهوم آرایه آشنا میشوید:

چرا به آرایه نیاز داریم؟

تعریف آرایه

نکات مهم آرایه

9 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 18

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

1- برنامه ای بنویسید که از ورودی 20 عدد دریافت کند و برعکس ترتیب ورودی اعداد را چاپ کند.
(مثلا اگر اعداد به ترتیب 10 و 18 و 13 وارد شده باشد باید بر عکس ترتیب ورودی چاپ شود، بعنی 13 و 18 و 10)

2- برنامه ای بنویسید که با استفاده ازآرایه 100 عدد دریافت کند و میانگین اعداد را چاپ کند.

3- برنامه ای بنویسید که از ورودی 100 عدد دریافت کند و واریانس اعداد را چاپ کند.
(تعریف واریانس)

 

در این آموزش این موارد رو یاد میگیرید:

تعریف آرایه در ++c

مقداردهی اولیه به آرایه

مفهوم پیمایش

17دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 19

تعداد تمرینات این جلسه بیشتر از جلسات قبله. هر چقدر در آرایه تمرین بیشتری حل کنید به موضوع مسلط تر میشید. سوال 4 را میتوانید به عنوان نکته به آن نگاه کنید. یعنی ابتدا خروجی کدها را تشخیص دهید و در سوالات بعدی از این پیمایشها برای حل سوالات استفاده کنید:
 
1- برنامه‌ای بنویسید که ۱۰۰ عدد دریافت کند و مشخص کند چند تای آنها از میانگین ۱۰۰ عدد بزرگتر است.
 
2- برنامه‌ای بنویسید که از ورودی نمره ۲۰ دانشجو دریافت کند و به همه دانشجویان چنان به طور مساوی نمره اضافه کند که بالاترین نمره ۲۰ شود.

3-  برنامه ای بنویسید که یک آرایه از ورودی دریافت کند و تشخیص دهد که آرایه به صورت صعودی مرتب است یا خیر.
 
4- کدهای زیر را روی آرایه [15, 14, 13, 12, 11, 10] = A اجرا کنید و دقیقا خروجی هر پیمایش را تشخیص دهید:
//پیمایش 1

for(i=0; i<n; i++)
    cout<<A[i]<<" ";
    
//پیمایش 2

for(i=0;i<n;i++)
    for(j=0; j<n ; j++)
        cout<<A[i]<<" ";
        
//پیمایش 3
for(i=n-1 ; i>=0; i--)
    for(j=0; j<=i ; j++)
        cout<<A[i]<<" ";

//پیمایش 4

for(i=0; i<n; i++)
    for(j=i; j<n;j++)
        cout<<A[i]<<" "; 
5- برنامه‌ای بنویسید که ۱۰۰ عدد مثبت از ورودی دریافت کند (اعداد می‌توانند تکراری باشند) و در نهایت مشخص کند که هر عدد چند بار تکرار شده است.
 
6- برنامه‌ای بنویسید که ۱۰۰ عدد از ورودی دریافت کند و فقط اعداد تکراری را نشان دهد.
 
7- برنامه‌ای بنویسید که از ورودی نمره ۱۰۰ دانشجو دریافت کند. سپس عددی را که بیشترین بار تکرار شده است چاپ کند
 
8- برنامه‌ای بنویسید که از ورودی یک آرایه ۵۰ تایی دریافت کند. سپس یک آرایه  5 تایی دریافت کند و تشخیص دهد آرایه دوم در آرایه اول وجود دارد یا خیر.

در این آموزش این موارد رو یاد میگیرید:

با یک نکته دیگه از هنر حل مساله آشنا میشید و در قالب 4 مثال جالب با مفهوم پیمایش و حل مساله های مربوط به آرایه آشنا میشید

18 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

جستجوی ترتیبی و دودویی

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

2- در سوال قبل الگوریتم را به گونه ای تغییر دهید که تعداد مقایسه ها را هم چاپ کند (مثلا عدد 37 در آموزش بعد از 4 مقایسه پیدا میشد)

2- برنامه ای بنویسید که شماره دانشجویی و معدل دانشجویان را در دو آرایه متفاوت ذخیره کند (مثلا آرایه ای به نام number برای شماره دانشجویی و avg برای معدل) سپس از ورودی یک شماره دانشجویی دریافت کند و معدل آن دانشجو را چاپ کند.


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

18 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین جلسه 20 - ماتریس

در تمرینهای این جلسه با این دید فکر کنید که برای حل هر سوال به چه پیمایشهایی نیاز دارید:
 
برنامه ای بنویسید که:

1- یک ماتریس از ورودی دریافت کند و مجموع عناصر سطر اول را چاپ کند
2- یک ماتریس از ورودی دریافت کند و مجموع عناصر ماتریس را چاپ کند
3- دو ماتریس از ورودی دریافت کند و مجموع دو ماتریس را چاپ کند
4- از ورودی یک ماتریس دریافت کند و تشخیص دهد که آیا متقارن است یا خیر
5-  از ورودی یک ماتریس دریافت کند و تشخیص دهد که آیا بالا مثلثی است یا خیر
6- دو ماتریس از ورودی دریافت کند و حاصلضرب دو ماتریس را چاپ کند.

در این آموزش شما با مفهوم ماتریس آشنا می شوید و 5 پیمایش مهم در ماتریسها رو یاد میگیرید

19 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین جلسه 22 - تابع در سی پلاس پلاس

تمرینهای این جلسه با این دید طراحی شده است که شما نحوه استفاده از تابع را تمرین کنید و با این موضوع که چطور تشخیص دهیم که یک مساله به تابع نیاز دارد یا خیر بیشتر آشنا شوید. در جلسه بعدی بیشتر در مورد این موضوع صحبت می‌شود.
 
1- تابعی به نام add_numbers تعریف کنید که دو عدد به عنوان پارامتر ورودی دریافت کند و مجموع دو عدد را برگرداند. سپس در int main دو عدد از ورودی دریافت کنید و این تابع را فراخوانی کنید و نتیجه را در خروجی چاپ کند.
 
2- تابعی به نام sum_digits تعریف کنید که  یک عدد به عنوان پارامتر ورودی دریافت و مجموع ارقام آن عدد را برگرداند. سپس همه اعداد سه رقمی که مجموع ارقام آنها بر 3 بخش پذیر است را چاپ کند
 
در جلسه 22 در مورد تابع فاکتوریل صحبت شد، در 2 سوال بعدی نیاز است که از این تابع استفاده کنید:
 

3- برنامه ای بنویسید که از ورودی n را دریافت کند و مجموع فاکتوریل ارقام آن را بدست آورد (مثلا اگر کاربر 125 را وارد کرد !5 + !2 +!1که برابر 123 است را چاپ کند.
4- یک عدد جالب‌انگیز است،اگر مجموع فاکتوریل ارقام آن با خود عدد برابر باشد، به طور مثال: !۵ + !۴ + !۱ = ۱۴۵
برنامه ای بنویسید که مجموع تمام اعداد جالب‌انگیز کوچکتر از 1000 را چاپ کند.

در این آموزش شما با مفهوم تابع و نحوه پیاده سازی تابع آشنا می شوید

19 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 23

تمرینات این جلسه سخت نیست. فقط باید باید نکته هر سوال را یاد بگیرید.

1- کد زیر را در را در vscode اجرا کنید. چرا خطا داریم؟ چگونه میتوان این خطا را برطرف کرد؟

void A(){
    cout<<"print from A";
    B();
}

void B(){
    cout<<"print from B";
}

int main(){
    A();
} 

2- در کد ششم مفهوم overloading رو بهتون گفتم و مثال add_numbers رو زدم. این مثال قشنگ از default value رو ببینید تا ذهنتون بازتر شه که بعضی وقتا اینجوری هم میشه کد زد و نیازی به overloading نیست

int sum(int x, int y, int z = 0, int w = 0)
{
    return (x + y + z + w);
}
 
int main()
{
    // Statement 1
    cout << sum(10, 15) << endl;
   
    // Statement 2
    cout << sum(10, 15, 25) << endl;
   
    // Statement 3
    cout << sum(10, 15, 25, 30) << endl;
    return 0;
} 

3- ابتدا بررسی کنید خروجی این کد چیست؟ سپس کد را در vscode اجرا کنید و از صحت کار حود مطمئن شوید

void swap(int x, int y);
 
int main () {
 
   int a = 100;
   int b = 200;
 
   cout << "Before swap, value of a :" << a << endl;
   cout << "Before swap, value of b :" << b << endl;
 
   swap(a, b);
 
   cout << "After swap, value of a :" << a << endl;
   cout << "After swap, value of b :" << b << endl;
 
   return 0;
}

void swap(int x, int y) {
   int temp;

   temp = x; 
   x = y;    
   y = temp; 
  
   return;
} 

در این آموزش شما با 6 نکته مهم در تابع آشنا میشوید:

فرق آرگوماتن و تابع چیه؟
voidچیه؟

19 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

تمرین و نکات جلسه 24

تمرین این جلسه هیچ ربطی به آموزش این جلسه نداره! ازتون میخوام یکی از مفاهیمی که در تابع وجود داره رو سرچ کنید و یاد بگیرید. این مفهوم رو در آموزشهای بعدی یوتیوب بهتون آموزش نمیدم و باید خودتون یاد بگیرید.

ازتون میخوام مفهوم inline function رو یاد بگیرید و صریحا جواب این سوالات رو پیدا کنید:
1- در چه مواقعی بهتره از inline استفاده کنیم؟
2- در چه مواقعی پیشنهاد نمیشه از inline استفاده کنیم؟
3- در چه شرایطی کامپایلر ممکن است inline را نادیده بگیرد و تابع را به صورت معمولی اجرا کند؟

میتوانید مفهوم inline را در این لینک یاد بگیرید و یا در گوگل و در منابع فارسی جستجو کنید.

در دوره یوتیوب پلاس ++C این مفهوم آموزش داده شده است.

در آموزش امروز در مورد مفهوم مهم scope صحبت کردم و متغیرهای محلی و عمومی رو براتون توضیح دادم، علاوه بر اون در مورد متغیر استاتیک هم صحبت کردم که البته در بحث شی گرایی بیشتر در موردش صحبت میکنیم.

15 دقیقه آموزش، مختصر و مفید!

به زودی جواب تمرین ها در قالب دوره یوتیوب پلاس سی پلاس پلاس منتشر می شود

این آموزش براتون مفید بود؟ میتونید بقیه آموزشهای من رو هم اینجا ببینید

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

کلی سوال برنامه نویسی!

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

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