C++ program آموزش
#تمرین برنامه ای بنویسید که توسط یه تابع دو عدد دریافت کند سپس تابع آن دو عدد را جمع کنید و حاصل را به خروجی ارسال کند سپس در تابع اصلی اگر خروجی کمتر از ۱۰ بود دو برابر آن را چاپ کند در غیر این صورت خروجی را چاپ کند ->نکته :: از عبارت کنترلی goto استفاده…
#پاسخ #تمرین
using namespace std;
int get_and_add_numbers();
int main()
{
int a,b=0,flag=0;
a=get_and_add_numbers();
under_ten:
b+=a;
if(!flag)
{
if(a<10)
{
flag=1;
goto under_ten;
}
}
int wait;
return 0;
}
int get_and_add_numbers()
{
int a,b,c;
c=a+b;
return c;
}
#include <iostream>
using namespace std;
int get_and_add_numbers();
int main()
{
int a,b=0,flag=0;
a=get_and_add_numbers();
under_ten:
b+=a;
if(!flag)
{
if(a<10)
{
flag=1;
goto under_ten;
}
}
cout<<"result is "<<b;
int wait;
cin>>wait;
return 0;
}
int get_and_add_numbers()
{
int a,b,c;
cout<<"Enter number a:"<<endl;
cin>>a;
cout<<"Enter number b:"<<endl;
cin>>b;
c=a+b;
return c;
}
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال دوم با حالت دوم
using namespace std;
int prime();
int main()
{
int num, i, flag = 0;
// No argument is passed to prime()
num = prime();
{
{
flag = 1;
break;
}
}
if (flag == 1)
{
}
else
{
}
return 0;
}
// Return type of function is int
int prime()
{
int n;
return n;
}
#include <iostream>
using namespace std;
int prime();
int main()
{
int num, i, flag = 0;
// No argument is passed to prime()
num = prime();
for (i = 2; i <= num/2; ++i)
{
if (num%i == 0)
{
flag = 1;
break;
}
}
if (flag == 1)
{
cout<<num<<" is not a prime number.";
}
else
{
cout<<num<<" is a prime number.";
}
return 0;
}
// Return type of function is int
int prime()
{
int n;
printf("Enter a positive integer to check: ");
cin >> n;
return n;
}
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال سوم با حالت سوم
using namespace std;
void prime(int n);
int main()
{
int num;
// Argument num is passed to the function prime()
prime(num);
return 0;
}
// There is no return value to calling function. Hence, return type of function is void. */
void prime(int n)
{
int i, flag = 0;
{
{
flag = 1;
break;
}
}
if (flag == 1)
{
}
else {
}
}
#include <iostream>
using namespace std;
void prime(int n);
int main()
{
int num;
cout << "Enter a positive integer to check: ";
cin >> num;
// Argument num is passed to the function prime()
prime(num);
return 0;
}
// There is no return value to calling function. Hence, return type of function is void. */
void prime(int n)
{
int i, flag = 0;
for (i = 2; i <= n/2; ++i)
{
if (n%i == 0)
{
flag = 1;
break;
}
}
if (flag == 1)
{
cout << n << " is not a prime number.";
}
else {
cout << n << " is a prime number.";
}
}
C++ program آموزش
قسمت ۱۸ انواع تابع به طور کلی توابع به چهار حالت تقسیم بندی می شوند که ایجاد تابع به حالت تابع بستگی دارد ۱- تابعی که ورودی ندارد و خروجی نیز ندارد ۲- تابعی که ورودی ندارد اما خروجی دارد ۳- تابعی که ورودی دارد اما خروجی ندارد ۴- تابعی که هم ورودی دارد…
مثال چهارم با حالت چهارم
using namespace std;
int prime(int n);
int main()
{
int num, flag = 0;
// Argument num is passed to check() function
flag = prime(num);
else
return 0;
}
/* This function returns integer value. */
int prime(int n)
{
int i;
{
return 1;
}
return 0;
}
#include <iostream>
using namespace std;
int prime(int n);
int main()
{
int num, flag = 0;
cout << "Enter positive integer to check: ";
cin >> num;
// Argument num is passed to check() function
flag = prime(num);
if(flag == 1)
cout << num << " is not a prime number.";
else
cout<< num << " is a prime number.";
return 0;
}
/* This function returns integer value. */
int prime(int n)
{
int i;
for(i = 2; i <= n/2; ++i)
{
if(n % i == 0)
return 1;
}
return 0;
}
قسمت ۱۹
ایجاد overload یک تابع
همانطور که در عکس بالا مشاهده می کنید overload به این معنی است که شما چند تابع با نام های یکسان اما ورودی و یا خروجی متفاوت داشته باشید .
این عمل در بسیاری از موارد می تواند کمک خوبی برای ایجاد برنامه های کاربر محور باشد
به مثال های زیر توجه کنید
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
در صورتی که تابع تست را به صورت های بالا تعریف کنید از عمل overload استفاده کرده اید اما توجه داشته باشید که هیچکدام از این توابع در ورودی های خود به یک صورت عمل نکرده اند
پس نتیجه اینکه اگر تابع های زیر را استفاده کنید دچار خطا خواهید شد
// Error code
int test(int a) { }
double test(int b){ }
چون هر دو تابع ورودی شان یک عدد صحیح است و تنها خروجی هایشان متفاوت است و این عمل overload نیست .
مثال زیر یک نمونه از استفاده از overload می باشد
void display(int);
void display(float);
void display(int, float);
int main() {
int a = 5;
float b = 5.5;
display(a);
display(b);
display(a, b);
return 0;
}
void display(int var) {
}
void display(float var) {
}
void display(int var1, float var2) {
}
ایجاد overload یک تابع
همانطور که در عکس بالا مشاهده می کنید overload به این معنی است که شما چند تابع با نام های یکسان اما ورودی و یا خروجی متفاوت داشته باشید .
این عمل در بسیاری از موارد می تواند کمک خوبی برای ایجاد برنامه های کاربر محور باشد
به مثال های زیر توجه کنید
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
در صورتی که تابع تست را به صورت های بالا تعریف کنید از عمل overload استفاده کرده اید اما توجه داشته باشید که هیچکدام از این توابع در ورودی های خود به یک صورت عمل نکرده اند
پس نتیجه اینکه اگر تابع های زیر را استفاده کنید دچار خطا خواهید شد
// Error code
int test(int a) { }
double test(int b){ }
چون هر دو تابع ورودی شان یک عدد صحیح است و تنها خروجی هایشان متفاوت است و این عمل overload نیست .
مثال زیر یک نمونه از استفاده از overload می باشد
#include <iostream>
using namespace std;
void display(int);
void display(float);
void display(int, float);
int main() {
int a = 5;
float b = 5.5;
display(a);
display(b);
display(a, b);
return 0;
}
void display(int var) {
cout << "Integer number: " << var << endl;
}
void display(float var) {
cout << "Float number: " << var << endl;
}
void display(int var1, float var2) {
cout << "Integer number: " << var1;
cout << " and float number:" << var2;
}
مثالی از کاربرد overloading
using namespace std;
int absolute(int);
float absolute(float);
int main() {
int a = -5;
float b = 5.5;
return 0;
}
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
// Program to compute absolute value
// Works both for integer and float
#include <iostream>
using namespace std;
int absolute(int);
float absolute(float);
int main() {
int a = -5;
float b = 5.5;
cout << "Absolute value of " << a << " = " << absolute(a) << endl;
cout << "Absolute value of " << b << " = " << absolute(b);
return 0;
}
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
مثالی از مقدار اولیه
خروجی مثال را در سیستم خود بررسی کنید و مثال های بیشتری را برای ما ارسال کنید
int main()
{
display();
return 0;
}
void display(char c, int n)
{
{
}
}
خروجی مثال را در سیستم خود بررسی کنید و مثال های بیشتری را برای ما ارسال کنید
// C++ Program to demonstrate working of default argument
#include <iostream>
using namespace std;
void display(char = '*', int = 1);
int main()
{
cout << "No argument passed:\n";
display();
cout << "\nFirst argument passed:\n";
display('#');
cout << "\nBoth argument passed:\n";
display('$', 5);
return 0;
}
void display(char c, int n)
{
for(int i = 1; i <= n; ++i)
{
cout << c;
}
cout << endl;
}
C++ program آموزش
https://cdn.programiz.com/sites/tutorial2program/files/how-recursion-works-c%2B%2B.jpg
قسمت ۲۱
توابع بازگشتی
فرض کنید نیاز به تابعی دارید که باید بر روی مقدار ورودی ، عملی را تا زمان مشخصی و نه نامحدود ، تکرار کند .
به نظر شما چگونه باید این کار را انجام دهیم
در ساده ترین حالت باید از کد زیر استفاده کنید:
int a,b;
while(true){
b=func(a);
if(b<100)
a=b;
else
break;
}
اما این مورد را می توان با تابع بازگشتی به صورت هوشمند تری باز نویسی کرد
تابع بازگشتی به تابعی گفته می شود که در داخل خود تابع ، تابع مجددا صدا زده می شود و استفاده شده است
مثلا اگر بخواهید فاکتوریل یک عدد کمتز از ۳۰ را محاسبه کنید با استفاده از توابع بازگشتی می توانید از روش زیر استفاده کنید
using namespace std;
int factorial(int);
int main()
{
int n;
return 0;
}
int factorial(int n)
{
{
}
else
{
return 1;
}
}
دقت کنید که در این حالت شرط در داخل خود تابع قرار دارد و با رسیدن مقدار ورودی به عدد ۱ تابع شروع به بازگشت مقدار نهایی خود به فراخوانی های قبلی می کنید و به این ترتیب مقدار های ضرب شده از ۱ تا عدد مورد نظر به سمت اولین فراخوانی ارسال می شوند
در نهایت شما مقدار فاکتوریل عدد مورد نظر را در خروجی تابع در تابع main خواهید داشت
مثال های بیشتر در ادامه ارسال خواهد شد
توابع بازگشتی
فرض کنید نیاز به تابعی دارید که باید بر روی مقدار ورودی ، عملی را تا زمان مشخصی و نه نامحدود ، تکرار کند .
به نظر شما چگونه باید این کار را انجام دهیم
در ساده ترین حالت باید از کد زیر استفاده کنید:
int a,b;
while(true){
b=func(a);
if(b<100)
a=b;
else
break;
}
اما این مورد را می توان با تابع بازگشتی به صورت هوشمند تری باز نویسی کرد
تابع بازگشتی به تابعی گفته می شود که در داخل خود تابع ، تابع مجددا صدا زده می شود و استفاده شده است
مثلا اگر بخواهید فاکتوریل یک عدد کمتز از ۳۰ را محاسبه کنید با استفاده از توابع بازگشتی می توانید از روش زیر استفاده کنید
// Factorial of n = 1*2*3*...*n
#include <iostream>
using namespace std;
int factorial(int);
int main()
{
int n;
cout<<"Enter a number to find factorial: ";
cin >> n;
cout << "Factorial of " << n <<" = " << factorial(n);
return 0;
}
int factorial(int n)
{
if (n > 1)
{
return n*factorial(n-1);
}
else
{
return 1;
}
}
دقت کنید که در این حالت شرط در داخل خود تابع قرار دارد و با رسیدن مقدار ورودی به عدد ۱ تابع شروع به بازگشت مقدار نهایی خود به فراخوانی های قبلی می کنید و به این ترتیب مقدار های ضرب شده از ۱ تا عدد مورد نظر به سمت اولین فراخوانی ارسال می شوند
در نهایت شما مقدار فاکتوریل عدد مورد نظر را در خروجی تابع در تابع main خواهید داشت
مثال های بیشتر در ادامه ارسال خواهد شد
C++ program آموزش
قسمت ۲۱ توابع بازگشتی فرض کنید نیاز به تابعی دارید که باید بر روی مقدار ورودی ، عملی را تا زمان مشخصی و نه نامحدود ، تکرار کند . به نظر شما چگونه باید این کار را انجام دهیم در ساده ترین حالت باید از کد زیر استفاده کنید: int a,b; while(true){ b=func(a);…
#تکمیلی قسمت ۲۱
مثالی از جمع اعداد به صورت نزولی
مثال ۱۰=۱+۲+۳+۴
using namespace std;
int add(int n);
int main()
{
int n;
return 0;
}
int add(int n)
{
return 0;
}
تابع add در مثال بالا ابتدا عدد ورودی کاربر را دریافت می کند و سپس در حالت بازگشتی تا زمانی که به عدد صفر نرسیده است تابع خود را دوباره صدا می زند
و در نهایت مقدار ها به صورت بازگشتی به فراخوانی اولیه خودشان باز می گردند
شکل #بازگشتی این مورد را به صورت نمایه نمایش می دهد
مثالی از جمع اعداد به صورت نزولی
مثال ۱۰=۱+۲+۳+۴
#include<iostream>
using namespace std;
int add(int n);
int main()
{
int n;
cout << "Enter a positive integer: ";
cin >> n;
cout << "Sum = " << add(n);
return 0;
}
int add(int n)
{
if(n != 0)
return n + add(n - 1);
return 0;
}
تابع add در مثال بالا ابتدا عدد ورودی کاربر را دریافت می کند و سپس در حالت بازگشتی تا زمانی که به عدد صفر نرسیده است تابع خود را دوباره صدا می زند
و در نهایت مقدار ها به صورت بازگشتی به فراخوانی اولیه خودشان باز می گردند
شکل #بازگشتی این مورد را به صورت نمایه نمایش می دهد
قسمت ۲۲
#ساختار
تعریف : به مجموعه ای از متغیر ها که دارای #نوع_داده متفاوت می باشند گفته می شود که این مجموعه به وسیله یک نام مشخص می شود که در هنگام ایجاد آن برای آن استفاده می کنیم
عکس #ساختار ، ساختار یک عدد را نشان می دهد که دارای دو قسمت حقیقی و غیر حقیقی می باشد و هر کدام دارای نوع داده متفاوت می باشند
مثال :
فرض کنید می خواهید اطلاعات یک شخص حقیقی را جمع آوری کنید مثلا نام ، سن و حقوق
برای این کار شما نیاز به یک ساختار به نام person دارید این ساختار در ساده ترین حالت می تواند مانند زیر باشد :
struct Person
{
};
به حالت نوشتن یک ساختار دقت کنید
struct به معنی ساختار می باشد
این ساختار را می توانید در تابع main استفاده کنید اما باید به نکاتی زیر دقت کنید
*دقت کنید که ساختار نیز همانند تابع باید قبل از تابع main تعریف شده باشد تا در خود تابع main قابل استفاده باشد *
به کد زیر دقت کنید :
using namespace std;
struct Person
{
char name[50];
int age;
float salary;
};
int main()
{
Person p1;
return 0;
}
همانطور که در کد مشاهده می کنید برای دسترسی به متغیر های داخلی یک ساختار که عضو های ان می باشند
باید از اسمی که برای متغیر با نوع داده ساختار استفاده کردید استفاده کنید
متغیر p1 در کد بالا نوع داده person دارد و دارای عضو های name , age , salary می باشد
برای دسترسی به هر عضو کافیست بعد از نوشتن نام متغیر یک نقظه قرار دهید و سپس نام عضو را بنویسید
دقت کنید که تمامی توابع برای نوع داده رشته char برای p1.name نیز قابل استفاده می باشد
تمامی عضو های ساختار می توانند همانند یک متغیر معمولی دریافت ، مقدار گذاری ، عملیات های ریاضی ، یا حتی نمایش داده شوند
تنها تفاوت با متغیر های معمولی این است که شما ابتدا باید یک ساختار ایجاد کنید تا بتوانید به وسیله نام متغیر به عضو ان دسترسی داده باشید
#ساختار
تعریف : به مجموعه ای از متغیر ها که دارای #نوع_داده متفاوت می باشند گفته می شود که این مجموعه به وسیله یک نام مشخص می شود که در هنگام ایجاد آن برای آن استفاده می کنیم
عکس #ساختار ، ساختار یک عدد را نشان می دهد که دارای دو قسمت حقیقی و غیر حقیقی می باشد و هر کدام دارای نوع داده متفاوت می باشند
مثال :
فرض کنید می خواهید اطلاعات یک شخص حقیقی را جمع آوری کنید مثلا نام ، سن و حقوق
برای این کار شما نیاز به یک ساختار به نام person دارید این ساختار در ساده ترین حالت می تواند مانند زیر باشد :
struct Person
{
char name[50];
int age;
float salary;
};
به حالت نوشتن یک ساختار دقت کنید
struct به معنی ساختار می باشد
این ساختار را می توانید در تابع main استفاده کنید اما باید به نکاتی زیر دقت کنید
*دقت کنید که ساختار نیز همانند تابع باید قبل از تابع main تعریف شده باشد تا در خود تابع main قابل استفاده باشد *
به کد زیر دقت کنید :
#include <iostream>
using namespace std;
struct Person
{
char name[50];
int age;
float salary;
};
int main()
{
Person p1;
cout << "Enter Full name: ";
cin.get(p1.name, 50);
cout << "Enter age: ";
cin >> p1.age;
cout << "Enter salary: ";
cin >> p1.salary;
cout << "\n Information." << endl;
cout << "Name: " << p1.name << endl;
cout <<"Age: " << p1.age << endl;
cout << "Salary: " << p1.salary;
return 0;
}
همانطور که در کد مشاهده می کنید برای دسترسی به متغیر های داخلی یک ساختار که عضو های ان می باشند
باید از اسمی که برای متغیر با نوع داده ساختار استفاده کردید استفاده کنید
متغیر p1 در کد بالا نوع داده person دارد و دارای عضو های name , age , salary می باشد
برای دسترسی به هر عضو کافیست بعد از نوشتن نام متغیر یک نقظه قرار دهید و سپس نام عضو را بنویسید
دقت کنید که تمامی توابع برای نوع داده رشته char برای p1.name نیز قابل استفاده می باشد
تمامی عضو های ساختار می توانند همانند یک متغیر معمولی دریافت ، مقدار گذاری ، عملیات های ریاضی ، یا حتی نمایش داده شوند
تنها تفاوت با متغیر های معمولی این است که شما ابتدا باید یک ساختار ایجاد کنید تا بتوانید به وسیله نام متغیر به عضو ان دسترسی داده باشید