Tp hunters cpp
635 subscribers
69 photos
41 videos
7 files
12 links
📌 چنل متمرکز روی زبان ++C به زبان فارسی

آموزش مفهومی همراه با چالش های جذاب و کاربردی

رفع اشکال در گروه
@Tphunterscpp_Group

ارتباط با ادمین‌ها
@h3li0p4us3_moharami
@systemchemist

زیر مجموعه تیم استارتاپی تی‌پی‌هانترز
@tphunters
Download Telegram
Tp hunters cpp
🧠 #کد_چالش #include<iostream> using namespace std; int main(){ int x; cout<<"lotfan serie adad ra vared konid: "; cin>>x; for(int i=1; i<=x; i++){ for(int j=1; j<=i; j++){ cout<<"*"; } cout<<endl; } } 🟢کد, سوالات و نظرات خود را…
💬 #شرح_کد
خوب مستقیم بریم برای شرح کدمون
اولا که میخواستم با تابع بنویسم که کلا یادم رفت حالا شما سعی کنید برای تمرین بیشتر با تابع بنویسیدش که تسلطتون بره بالا, بریم برای تحلیل
اولا ک ما یه عدد میخوایم که مثل مثال قبل درجه یا terms ما باشه که اینجا با x نشون داده شده و از کاربر میگیریمش این عدد برای اینه که به تعداد اون ضلع اصلی و قاعده و وتر مثلث ما چاپ بشه که توی این مثال مثلا بهش 10 دادیم
خوب این مثال هم دوتا نکته داره که دباره میخوایم وارد مقوله آموزشی بشییم که اون تا نکته اش هم حلقه های تو در تو که خیلی ها مشکل دارند و حلقه های وابسته به هم هست. حلقه های تو در تو که از اسمشون مشخصه یعنی چند تا حلقه داخل هم و حلقه های وابسته به هم که از اسمشون مشخصه ینی کاملا به هم مربوط و وصلن! حالا این وصل ینی چی؟ ینی مثلا فور دومی یا فور پایینی وابسته به بالاییش باشه حالا این وابسته که میگم ینی چی؟
ینی متغییر فور اول توی فور دوم سروکله اش پیدا بشه که اینجا میبینیم i که برای فور اول بوده اومده و شده شرط حلقه فور دوم! میدونم یکم درکش سخته و توضیح این قسمت هم واقعا سخته اما اگر دیدم نامفهوم بود براتون با ویدیو توضیح میدم! بریم سراغ شرح تحلیلی دوتا فورمون
دقت کنید فور اول از 1 شروع میشه تا دنباله سری ما که 10 هست!
به ازای هر عدد از متغییر i حلقه اول, به تعداد i عدد از متغییر فور دوم ستاره(*) چاپ میشه! خیلی سخته چند بار بخونیدش و به شدت شدت شدت شدت شدت این تیکه مهمه چون تو 70 درصد مسعله(از اون عربیا کیبوردم نداره الان هزار تا علامه دهر میان ازمون اشکال املایی میگیرن) هاتون فور های تو در تو و حلقه های وابسته به هم وجود دارن. حالا اون جمله ای ک گفتمو بازش میکنم مثلا وقتی فور اول ما i مقدار 1 میگیره خوب j هم 1 ه و شرط حلقمونم 1 ه پس یک بار ستاره چاپ میشه و یه خط فاصله. حالا متغیر فور اول ما میشه 2 ! پس میریم وارد حلقه دوم میشیم و شرط حلقه دوممونم شده 2 چون وابسته به متغییر i ه! پس اینجا فور دوم 2 بار اجرا میشه و دوتا ستاره میزنه و همین کار ادامه پیدا میکنه تا که حلقه اول ما مقدارش بشه 10 و فور دوممون شرط حلقش میشه 10! پس 10 تا ستاره میزنه و تمام!
امیدوارم که استفاده کرده باشید و براتون مفید بوده باشه! حالا اگر این رو خوب متوجه شدید سعی کنید برای تمرین این مثلث رو برعکسشو بکشید😃
🟢کد, سوالات و نظرات خود را برای ما کامنت یا داخل گروه بفرستید
🧠 #آموزشی #آرایه
{آرایه های یک بعدی}
بخش اول


زمانی که بخواهیم تعدادی متغیر را به صورت دسته بندی شده ذخیره کنیم از آرایه استفاده میکنیم.
گاهی نیز تعداد داده های یک برنامه آنقدر زیاد است که نمیتوانیم برای هر کدام از آنها یک متغیر جداگانه تعریف کنیم بنابراین از یک آرایه با تعداد عناصر زیاد استفاده میکنیم

در آرایه یک‌ بعدی که نام دیگر آن لیست است ، با یک اندیس میتوان به عناصر آرایه دست یافت .
آرایه هایه یک بعدی در ++c به صورت زیر تعریف میشوند :

[طول آرایه ] نام آرایه نوع آرایه

نوع آرایه یکی از انواع مهم در ++c است .
و برایه مفهوم کلی آرایه ها باید به طور کامل به متغیر ها تسلط داشته باشید .
نام آرایه ، برایه دسترسی به عناصر آرایه مورد استفاده قرار می گیرد .
طول آرایه با یک عدد مثبت مشخص میشود .
به طور مثال دستور زیر آرایه ای به نام x و به طول ۵ از اعداد صحیح تعریف می کند .
int x [5];
اندیس آرایه ها در ++c از صفر شروع میشود . به این ترتیب ، عناصر آرایه x به صورت زیر بازیابی میشوند و عناصر آرایه در محلهای متوالی حافظه ذخیره می‌شوند .
x = x[0] , x[1] , x[2] , x[3] , x[4]
میزان حافظه ای که به آرایه اختصاص داده میشود ، به طریق زیر محاسبه میشود :

طول آرایه * (طول نوع آرایه) = میزان
حافظه آرایه

به عنوان مثال ، میزان حافظه آرایه x عبارت است از ۱۰ = ۵ * ۲
با فرض اینکه طول int برار با ۲ بایت باشد ، با استفاده از اندیس آرایه می توان به عناصر آرایه مقدار داد. به عنوان مثال ، دستور زیر مقدار ۵ را در دومین عنصر آرایه قرار می دهد ، که در آن ، x نام آرایه ، ۱ اندیس و ۵ مقداری است که در [1]x قرار می گیرد .
x[1] = 5;
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید
🧠 #آموزشی #آرایه
{آرایه های یک بعدی}
بخش دوم


مثال (۱)

برنامه ای که معدل ۵ دانشجو را از ورودی خوانده در آرایه قرار می دهد و بیشترین معدل و محل وجود آن را پیدا می کند و به خروجی می برد ؟


توضیخ برایه مثال ==>

حلقه تکرار اول ، معدل دانشجویان را خوانده در آرایه قرار می دهد . برای پیدا کردن بیشترین معدل ، فرض میکنیم که اولین عنصر آرایه ، بزرگترین معدل است . به همین دلیل قبل از حلقه تکرار دوم ، [0]avg در amax و اندیس آن ، یعنی ۰ در p قرار می گیرد . سپس amax را در یک حلقه تکرار با عناصر آرایه مقایسه کرده ، عنصر بزرگتر در amax و اندیس آن در p قرار می دهیم .

متغیر هایه برنامه ==>
n = ثابتی به طول ۵ برای تعیین طول آرایه
ave = آرایه ای به طول n برای نگهداری معدل
amax = بزرگترین معدل
i = شمارنده حلقه تکرار
p = محل وجود بزرگترین عنصر در آرایه

#include <iostream>
using namespace std;
int main(){
const int n = 5;
float ave[n] , amax = 0;
int i , p;
for(i = 0; i < n ; i++){
cout << "Enter average : " ;
cin >> ave[i] ;
}
amax = ave[0];
p = 0;
for(i = 1; i < n ; i++){
if( ave[i] > amax ){
amax = ave[i];
p = i;
}
cout << "\n" << "max = " << amax << "position = " << p + 1 ;
return 0;
}

🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید
🧠 #آموزشی #آرایه
{آرایه یک بعدی به عنوان آرگومان تابع}
بخش سوم


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

۱- آرایه با طول مشخص

۲- آرایه ای با طول نامشخص که در این صورت بهتر است طول آرایه به عنوان آرگومان دیگری منتقل شود .

۳- اشاره گر

void func1(int x[]);
void func2(int x[] , int len);
int main(){
int x[10];
..........
func1 (x);
..........
func2 (x , 10);
return 0;
}
void func1(int x[10]){
..........
}
void func2(int x[] , int len)
{
..........
}


آرایه x به عنوان آرگومان دو تابع func1 ، func2 انتخاب شد و پارامترهای معا‌دل آن در هر دو تابع تعریف شده اند. ‌در تابع ()func1 ، پارامتر به صورت آرایه ای با طول معین و در تابع ()func2 به صورت آرایه ای با طول نامعین تعریف شده است .

🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید
💬 #چالش
این چالش بسیار بسیارررر مهمه که هر کسی که برنامه نویسی میکنه یا کامپیوتر میخونه باید بلد باشه
چالش مرتب سازی حبابی یا bubble sort . برای اطمینان میتوانید اعداد مثال بالارو وارد کنید
🟥درجه سختی: معمولی
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
Tp hunters cpp
💬 #چالش این چالش بسیار بسیارررر مهمه که هر کسی که برنامه نویسی میکنه یا کامپیوتر میخونه باید بلد باشه چالش مرتب سازی حبابی یا bubble sort . برای اطمینان میتوانید اعداد مثال بالارو وارد کنید 🟥درجه سختی: معمولی 🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت…
🧠 #کد_چالش
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
int main(){
int array[5];
int temp;
cout<<"araye khod ra por konid: "<<endl;
for(int i=0; i<5; i++){
cout<<"array ["<<i<<"]=";
cin>>array[i];
}
for(int i=0; i<5; i++){
for(int j=0; j<4-i; j++){
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
cout<<"after sort"<<endl;
for(int i=0; i<5; i++){
cout<<array[i]<<" ";
}
}
Tp hunters cpp
🧠 #کد_چالش #include<iostream> using std::cout; using std::endl; using std::cin; int main(){ int array[5]; int temp; cout<<"araye khod ra por konid: "<<endl; for(int i=0; i<5; i++){ cout<<"array ["<<i<<"]="; cin>>array[i]; } for(int i=0;…
💬 #شرح_کد
ترجیحا قبل از اینکه آموزش و شرح کد رو مطالعه کنید برای این مثال بهتره ک اول کد بالارو در کنار کامپایلرتون داشته باشید و مرحله به مرحله که توضیح میدم ببینید که چه اتفاقی میفته چون مثال به شدت مهمیه و برای کارایی مثل جستجوی دو دویی نیز کاربرد داره! خوب بریم برای شرح کد! اول از همه یه آرایه با 5 خونه ساختیم و بعدش هم یه متغییر به اسم temp تعریف کردیم(فعلا بهش فکر نکنید بعدا میگم چرا ساخته شده این تمپ)! خوب با فور اول که میایم آرایه هامونو از کاربر و ورودی میگیریم و پرش میکنیم این که خیلی سادس!
حالا میرسیم به توضیح کد مرتب سازی حبابی!
ببینید مرتب سازی حبابی به این شکله که هر آرایه با خونه کناریش(ینی یدونه جلوییش مقایسه میشه) و اگه خونه جلویی کوچیکتر از قبلی بود جاشونو عوض میکنه! حالا این مرحله یبار انجام میشه کامل تا بزرگترین عدد ما شناخته بشه و به خونه آخر بره! حالا فرضا خونه آخر ما حذف میشه و دباره حلقمون از اول دوتا دوتا چک و مقایسه میکنه و در صورت نیاز دباره جاهاشونو عوض میکنه!
ینی چی؟این ینی که به دوتا حلقه نیاز داریم دیگه آقا جان! حلقه فور اول که مرحله کلی یا هر pass رو میره و حلقه دوم که میاد آرایه هارو مقایسه میکنه و جاشونو عوض میکنه! خوب بریم سراغ شرح این دوتا فور! دوستان دقت کنید این کد نیمه بهینه است که در آخر به بهینه ترین صورت این مرتب سازی حبابی اشاره میکنم! فور اولمون که باید تا تعداد خونه های آرایمون بره! این که هیچ میایم داخل فور دوم دقت کنید این از صفر میره تا 4-i ! چرا این منهای i میشه؟ یادتونه اون بالا بهتون گفتم تو هر مرحله که عدد آخر ینی بزرگترین عدد مشخص میشه فرض میکنیم دیگه وجود نداره؟ خوب این منهای i بخاطر اینه که اون عدد آخررو حساب نکنه دیگه عزیز دل من😄ینی تو هر دور از صفر میره تا یکی مونده به آخری! دقت کنید اگر داخل کد منهای i رو هم نزارید برنامه درست جواب میده اما یکم سرعت برنامه میاد پایین تر!(اونقدری که انسان متوجهش نمیشه ولی خوب...) بخاطر این سرعت میاد پایین که هر بار اون عدد آخری هم مقایسه میشه! و حالا میایم بیرون و میریم داخل اون if! این هم که مشخصه دیگه وقتی خونه ها کنار به کنار مقایسه شدن و اگرخونه قبلی از خونه بعدیش بزرگتر باشه میاد جاشونو عوض میکنه! حالا برا عوض کردن جای دوتا متغییر ما به یه متغییر اضافه نیاز داریم که اون اسمش temp ه دیگهههههه که اون بالا تعریفش کردیم! حالا که کل این مرحله انجام شد یه مرحله یا یک pass انجام شده! میایم بیرون و حلقه فور اول ما میشه 1 و دباره همینطور ادامه پیدا میکنه!
دقت کنید من گفتم راجب بهینه سازی این کد بهتون بگم!
ببینید ما حلقه اولمون تا خونه آخرمون ینی 4م میره دیگه درسته؟
فرض کنید ما دادیم
5 1 4 2 8
این میاد مرتب میشه و میشه
1 2 4 5 8
حالا اون عدد اخر ما ینی 5 داخل فور اول میاد یبار دیگه کلش رو چک میکنه ببینه آیا این مرتب شده یا نه؟(خوب آره دیگه دانشمند مرتب شده دیگه! درواقع میاد یکار اضافه انجام میده که بگه آره منم بلدم!😎) و همین شاخ بازیش باعث میشه دباره سرعت برنامه بیاد پایین😞
پس برای این حل مشکل و بهینه سازی کامل کد شما فکر کنید یه آرایه n خونه ای دارید!
برای مرتب سازیش داخل فور اولتون میزارید n-1 !
و داخل فور دومتون میزارید n-i-1!
امیدوارم که کامل متوجه شده باشید و استفاده کرده باشید!
🟢لطفا سوال, کد و نظرات خود را برای ما کامنت کنید یا داخل گروه بفرستید
💬 #چالش
باید یه برنامه بنویسید که یه لیستی از اعداد بگیره یا چند عدد بگیره تفاوت بزرگترین و کوچیکترین عدد رو در خروجی نمایش بده
🟥درجه سختی: آسان
🟢لطفا سوالات, کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
Tp hunters cpp
💬 #چالش باید یه برنامه بنویسید که یه لیستی از اعداد بگیره یا چند عدد بگیره تفاوت بزرگترین و کوچیکترین عدد رو در خروجی نمایش بده 🟥درجه سختی: آسان 🟢لطفا سوالات, کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
🧠 #کد_چالش
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
int max(int a[],int n);
int min(int a[], int n);
int difference(int a[], int n);
int main(){
cout<<"araye haye khod ra por konid "<<endl;
int array[6];
for(int i = 0; i<6 ; i++){
cout<<"array["<<i<<"]= ";
cin>>array[i];
}
cout<<"MAX = "<<max(array,6)<<endl;
cout<<"MIN = "<<min(array,6)<<endl;
cout<<"DIFFERENCE = "<<difference(array,6);

}
int max(int a[],int n){
int max=a[0];
for(int i=0 ;i<n ;i++){
if(a[i]>max){
max = a[i];
}
}
return max;
}
int min(int a[], int n){
int min=a[0];
for(int i=0; i<n; i++){
if(a[i]<min){
min = a[i];
}
}
return min;
}
int difference(int a[], int n){
return max(a,n)-min(a,n);
}

🟢نظرات, سوالات و کد های خود را برای ما کامنت کنید
Tp hunters cpp
🧠 #کد_چالش #include<iostream> using std::cout; using std::endl; using std::cin; int max(int a[],int n); int min(int a[], int n); int difference(int a[], int n); int main(){ cout<<"araye haye khod ra por konid "<<endl; int array[6]; for(int i = 0; i<6…
💬 #شرح_کد
خوب دوستان این چالش آنچنان چیز خاصی نداشت اما خودش درونش ۴ ۵ تا سوال و نکته های آموزشی خیلی ریز و مبتدی بود. اولا ک سعی کنید همه برنامه هاتون با تابع باشه مهم ترینش‌از نظر‌من زیبا تر شدن و خوانا تر شدن کد هست و اینکه خیلی راحت تره کلا و از اون مهم تر برای شی گرایی و پیشرفته توی هر زمانی شما کار با توابع رو نیاز دارید! پس بشینید و تمرینش کنید😃
خوب این برنامه از ۳ تا تابع تشکیل شده که یکیش ماکزیمم میده یکیش مینیمم و یکیشم تفاوت اونا ک برنامه خواسته خوب فور داخل حلقه مین میاد اول آرایمونو پر میکنه که خیلی سادس!
حالا میایم داخل تابع ماکزیمم یه نکته ای ک باید تو پیدا کردن ماکزیمم یا مینیمم بین اعداد زیاد بدونید اینه که اول میاید یه عدد(اولین یا آخرین باشه) رو به عنوان کوچیکترین یا بزرگترین در نظر میگیرید(دقیقا کاری که اینجا کردیم خونه اول آرایه رو ماکزیمم فرض کردیم) بعدش اومدیم دونه دونه خونه های آرایرو چک کردیم ک اگر هر خونه بزرگتر از اون مقدار فرضی ما بود اون خونه رو بیاد تو بزرگترین قرار بده و در آخر برگردونه به تابع! حالا تابع مینیمم دقیقا همینه و همینطوریه الگوریتمش اما فرقش رو خودتون پیدا کنید دیگه😃👌
تابع دیفرنس یا تفاوت ما هم میا این دوتا رو منهای هم میکنه و برمیگردونه
خوب دیگه اینم از این شرح من که دیگه خسته شدم خیلی ساده بود😊 امیدوارم متوجه شده باشید و استفاده کرده باشید
🟢سوالات، کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
آیا موافق برگزاری دوره سی پلاس کاربردی به صورت کاملا متفاوت و ویدیویی هستید؟
Anonymous Poll
82%
بله موافقم و استفاده میکنم
18%
خیر و دیگر هیچ
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
قسمت 1: کامپایلر، لینکر و نگاه کلی به دوره
مدرس: محمدصالح حق محمدلو
🟢لطفا سوالات،کد و نظرات خود را برای ما کامنت کنید
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
قسمت 2: ساختار کلی، فضا نام، انواع داده ای و تعریف متغییر ها و مقدار دهی
مدرس: محمد صالح حق محمدلو
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید
Media is too big
VIEW IN TELEGRAM
حجم ویدیو ها از این به بعد برای راحتی دوستان بسیار کم خواهد بود و با کیفیت بهتر
#سی_پلاس_ساده_و_خوشمزه
قسمت 3: ساختار شرطی،عملگر افزایشی و کاهشی، نوع داده ای بول
مدرس: محمدصالح حق محمدلو
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید.
💬 #چالش
برای خروجی این کد کدام یک از دستورات درست است
🟥درجه سختی: آسان
🟢لطفا سوالات, کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
Tp hunters cpp
💬 #چالش برای خروجی این کد کدام یک از دستورات درست است 🟥درجه سختی: آسان 🟢لطفا سوالات, کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
💬 #شرح_کد

مبحث اصلی در این چالش استفاده کردن از اشاره گر ها است
ما یک تابع به نام f داریم که اولین آرگومان¹ ورودی آن، یک تابع دیگر است

تابع f یک تابع اشاره گر به یک یا چندین تابع دیگه است

برای استفاده از تابع در تابع اشاره گر باید نوع داده ها هر دو یکی باشه

در تابع اشاره گر نوع داده ورودی و نوع داده خروجی تعیین شود

مثال :

int f(int (*p) (int a,int b), int c , int d){
return (*p) (c,d);
}

خب در این تابع اول باید نوع داده اشاره گر را تعیین کنید که اینجا از نوع داده int هست و در گام بعدی شما باید نوع ورودی تابعی که از تابع اشاره گر استفاده می‌کند را وارد کنید

(int a, int b)

اینجا نوع داده تابع jam را وارد میکنیم
و در گام بعدی شما باید نوع ورودی خود تابع اشاره گر را وارد کنید❗️حتما باید نوع داده همه تابع ها یکی باشد

int c , int d

در‌اینجا نوع داده ورودی خود تابع را مشخص کردیم

و در آخر از تابع بازگشی return استفاده میکنیم‌ که اولین آرگومان ما باید یک تابع دیگر باشد و آرگومان های دیگر هم به طور عادی هستند

-----------------------------------------
1. آرگومان همون مقادیر و اطلاعاتیه که موقع فراخوانی تابع بهش داده میشه

🟢 لطفا سوالات, کد ها و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
💬 #چالش

مشکل این کد چیست ؟

🟥درجه سختی: آسان
🟢لطفا سوالات, کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
قسمت 4: دستور شرطی، تایپ کستینگ،نوع char, نوع جدید char در سی پلاس 11, نحوه اد کردن c++11 به dev
مدرس: محمدصالح حق محمدلو
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید