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

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

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

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

زیر مجموعه تیم استارتاپی تی‌پی‌هانترز
@tphunters
Download Telegram
💬 #چالش

این سوال بیشتر برای آشنایی با ساختار آرایه و استراکچر هستش

🟥درجه سختی: آسان
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
Tp hunters cpp
💬 #چالش این سوال بیشتر برای آشنایی با ساختار آرایه و استراکچر هستش 🟥درجه سختی: آسان 🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید. @tphunterscpp
🧠 #کد_چالش

#include <stdio.h>
#include <string.h>

#define NAME 20
#define CONTENT 100
#define CAPACITY 30

struct book {
char author[NAME];
char content[CONTENT];
int year;
int flag;
};

struct library{
struct book books[CAPACITY];
char name[NAME];
};

void add_book(struct library lib , struct book book){
for(int i = 0; i < CAPACITY;i++){
if(lib.books[i].flag = 1){
strcpy(lib.books[i].author , book.author);
strcpy(lib.books[i].content , book.content);
lib.books[i].year = book.year;
lib.books[i].flag = 0;
return;
}
}
}

int search_book(struct library lib , char author[NAME] , int year){
for(int i = 0;i < CAPACITY;i++){
if((lib.books[i].flag == 1) && strcmp(lib.books[i].author , author) == 0 && (year == lib.books[i].year)){
return i;
}
}
return -1;
}
void remove_book(struct library lib , char author[NAME] , int year){
int id = search_book(lib , author , year);

if(id == -1)
return;

lib.books[id].flag = 1;
}
int main(){
struct library centeral_library;

return 0;
}

🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
#نکته
#معماری

معماری به ما کمک میکنه که کد تمیز تر و حرفه تر داشته باشیم.
در معماری ما برنامه رو به لایه های مختلفی تقسیم میکنیم که در معماری های مختلف این لایه ها وظایف مشخص خودشونو دارن.
بهترین مزیتی که معماری داره اینه که اگه روزی بخواین به برنامه تون یک فیچر اضافه کنین، کد های کمتری رو تغییر میدین
دلیلش هم این هست که کد ها لایه بندی شدن.

مزیت های دیگه رو شما کامنت کنید
در ادامه به معرفی معماری های مختلف میپردازیم

🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
💬 #چالش
جمله عمومی دنباله: n^2 + 4n

🟥درجه سختی: آسان
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
Tp hunters cpp
💬 #چالش جمله عمومی دنباله: n^2 + 4n 🟥درجه سختی: آسان 🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید. @tphunterscpp
🧠 #کد_چالش
#include <iostream>
using namespace std;
int main(){
int n;
cout << "Enter the number: ";
cin >> n;

for (int i=1; i<= n+2; i++){
for(int j=1; j<= n+2; j++){
if( i==1 && j==1 || i==1 && j==n+2 || i==n+2 && j==1 || i==n+2 && j==n+2){
cout<<" ";
}
else{
cout<<"*";
}
}
cout << endl;
}
}
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
💬 #شرح_کد
همانطور که مشاهده میکنید برنامه فقط به یک ورودی n نیاز دارد.
حلقه for اول برای انجام دستور endl تعریف شده و حلقه داخلی برای چاپ * و space

از آنجایی که ما در خروجی مربعی به ضلع n+2
داریم (با در نظر نگرفتن گوشه های مربع) پس از شرط i<= n+2 در حلقه های for استفاده میکنیم.

برای چاپ space بجای * در گوشه های بالا و پایین از شرط استفاده میکنیم بنابراین اگر این گوشه هارا درایه هایی از ماتریس در نظر بگیریم؛ دستورهای طرفین || هر کدام به یک درایه (به یک گوشه از مربع) اشاره دارند.

برای مثال i==1 && j==1 به گوشه بالا سمت چپ اشاره دارد. پس بجای آن space چاپ میشود.

🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید یا داخل گروه بفرستید.
@tphunterscpp
#نکته
#معماری_MVP

یکی از پرکاربرد ترین معماری ها در برنامه نویسی MVP هستش.
درواقع MVP مخفف عبارت زیر است.
( model - view - presenter)
در لایه presenter منطق برنامه وجود داره و در لایه view داده ها نمایش داده میشه.
رابط بین این دو تا لایه، presenter هستش.
به این صورت که لایه view یک درخواست اطلاعات ارسال میکنه به presenter و این لایه اطلاعات رو از model میگیره و به view پاس میده

🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
#نکته
در ساختما داده و در درخت دودویی یا binary tree یک مفهومی هست به اسم height یا ارتفاع!
که به اشتباه اون رو تعداد کل node ها یا گره های درخت میگن یا متوجه میشن😅!
اما height یا ارتفاع یک درخت , بیشترین تعداد node ها در یک path یا مسیره!
همونطورم میدونید یک مسیر یعنی اینکه از ریشه شروع کن و همینطوری بیا پایین تا به یه گره ای برسی که نه فرزند راست داشته باشه نه فرزند چپ! پس ارتفاع شد تعداد بیشترین گره هایی که در یک مسیر وجود داره👌
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
#نکته
#mvp
#mvc

این دو معماری تا حدودی شبیه هم هستند
ولی یک سری تفاوت های جزئی ای تو روند انتقال دیتا بین لایه ها وجود داره

تو معماری MVP همون طور که قبلا گفته شده بود درخواست دیتا از لایه view به presenter صورت میگیره
در این مرحله لایه presenter هم به لایه model درخواست میفرسته
وقتی که لایه presenter دیتا از model دریافت کرد، اون رو به لایه view پاس میده.
اینجا میشه گفت روابط بین لایه ها در MVP دوطرفه هستش

اما در لایه mvc روابط یک طرفه هستش
درخواست دیتا از لایه view به controller صورت میگیره
از controller به model و در این مرحله لایه model دیتا رو مستقیم به view پاس میده.
البته این موارد کلی هستن و در مواقعی این روند تغییر میکنه

به نظر شما تفاوت های دیگه ای داره این دو معماری؟

🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
#نکته
در برنامه نویسی و ریاضی تفاوت هایی برای حل یک سری مسایل وجود داره, مثلا شما فرض کنید ما برای بدست اوردن ب.م.م یا همون GCD داخل ریاضیات مایم تقسیم میکنیم و مشترک هارو ضرب در هم میکنیم با توان کوچکتر , حالا برای نوشتن این توی زبان های برنامه نویسی باید بیاید از چند تا فور استفاده کنید یا وایل یا .... و ممکنه منطقش اذیت کننده و سخت باشه, حالا آقای اقلیدس اومد یه الگوریتمی ارایه داد
 function GCD(int a, int b){
return b==0 ? a: GCD(b, a%b)
به همین راحتی ! ینی این داداشمون اقلیدس میاد میگه شما فرض کن دوتا عدد داری, اگر یکیش صفر بود ک خب اون یکی میشه جوابت, اما اگر نبود جای اون دوتارو عوض کن و اولی رو اونقدر به دومی تقسیم کن و باقی موندشو بدست بیار تا به صفر برسی و عددی ک میمونه بشه جوابت😆 امیدوارم استفاده کرده باشید
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
مدرس: محمدصالح حق محمدلو
قسمت 19: اشاره گر به کلاس و اشیای و عضو های آن
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
#نکته
اجرای حلقه بی نهایت یا infinity loop ها وقتی اتفاق میفتن که شرط ادامه دادن حلقه هیچوقت اشتباه یا false نشه!
این باعث میشه که حلقه تو خودش گیر کنه و هی تکرار بشه و بیرون نیاد , علاوه بر اینکه قسمت های دیگه از از کد اجرا نمیشه, حجم زیادی از رم هم گرفته میشه, برای اینکه مطمعن بشید به این مشکل نمیخورید حتما شرط حلقه رو چک کنید که همیشه به مقدار false برسه.
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
دوستان دقت داشته باشید جلساتی که از قسمت ۲۰ به بعد(که از امروز ضبط خواهند شد)، مربوط به مفاهیم پایه ای شی گرا و پیشرفته (مثل ارث بری، پولیمورفیزم کنترل جریان و سربارگزاری و.... ) هستند، که کاملا مفهومی خواهند بود و شما هر زبانی که کار میکنید میتونید ویدیو هارو ببینید و بر اساس اونها برید جلو👌
اما پیاده سازی ما با زبانی که مربوط به چنل هست خواهد بود(شما با هر زبانی دوس داشتید میتونید پیاده کنید😃)
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
مدرس : محمدصالح حق محمدلو
قسمت 20 : مفاهیم ارث بری و انواع آن(الف)
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
💬 #چالش
به هر زبانی که بنویسید و بهترین جواب داخل چنل پین میشه
🟥درجه سختی : متوسط
🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید.
@tphunterscpp
Tp hunters cpp
💬 #چالش به هر زبانی که بنویسید و بهترین جواب داخل چنل پین میشه 🟥درجه سختی : متوسط 🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید. @tphunterscpp
🧠 #کد_چالش
حل توسط : یخ فروش جهنم
#include <stdio.h>
#include <math.h>
#include <stdbool.h>

bool is_prime(int number) {

bool result = number < 2 ? false : true;

for (int i = 2; i <= sqrt(number); ++i) {
if (number % i == 0)
return false;
}

return result;
}

int main()
{
printf("Limit: ");
int n = 0;
scanf("%d", &n);

for (int i = 0; i < n; ++i) {
if (is_prime(i) && is_prime(i + 6))
printf("(%d, %d)\n", i, i + 6);
}

return 0;
}
🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید.
Tp hunters cpp
🧠 #کد_چالش حل توسط : یخ فروش جهنم #include <stdio.h> #include <math.h> #include <stdbool.h> bool is_prime(int number) { bool result = number < 2 ? false : true; for (int i = 2; i <= sqrt(number); ++i) { if (number % i == 0) return false; …
💬 #شرح_کد
توضیحات توسط : یخ فروش جهنم
خب جفت اعداد Sexy Prime اعداد اولی هستن که اختلاف شون ۶ تا هست. مثلا اعدادی مثلِ
(5, 11) (7, 13) (11, 17) (13, 19) (17, 23) (23, 29) (31, 37)
همگی جفت‌ها در واقع Sexy Prime هستند.

پس ما دنبال اعدادی می‌گردیم که خودش اول باشه و اگه با ۶ جمع کنیم هم اول باشه. به عبارتی اگه P یک عدد اول باشه درصورتی که P + 6 هم عدد اول باشه یک جفت Sexy Prime هست.

پس عملا ما نیازمند یک تابع هستیم که یک عدد بگیره و بهمون بگه که عدد اول هست یا نه. که تابع is_prime این کارو برای ما انجام می‌ده. یه الگوریتم ساده تشخیص عدد اوله که احتمالا خیلی هاتون باهاش آشنایید. کافیه اعدادی که توی بازه ۲ تا جزر اون عدد هستن رو بررسی کنیم اگه عدد به حداقل یکی از اون اعداد بخش‌پذیر باشه یعنی عدد اول نیست.

توی تابع main هم ما یک عدد از کاربر می‌گیریم که به همون تعداد جفت اعداد Sexy Prime اش رو پیدا کنیم. کافیه یک for ساده تا قبل از اون عدد بزنیم و همه اعداد اولی که خودشون اول هستن و به علاوه‌ی ۶ اون‌ها هم اوله رو چاپ کنیم.

for (int i = 0; i < n; ++i) {

if (is_prime(i) && is_prime(i + 6))
printf("(%d, %d)\n", i, i + 6);

}

پ.ن: چون این چنل آموزش زبان سی++ هست و این برنامه هم با زبان سی هست برای اون دوستانی که در جریان توابع printf و scanf نیستن بگم که printf برای چاپ به صورت فرمت شده (std::cout توی سی++) و scanf برای خوندن مقادیر به صورت فرمت شده (std::cin توی سی++) توی زبان سی هستش. پس عملا سه خط اول تابع main در واقع "Limit: " رو چاپ می‌کنه و یک عدد از ورودی برنامه (stdin) می‌خونه و توی متغیر n ذخیره‌اش می‌کنه.
🟢لطفا سوالات , نظرات و کد های خود را برای ما کامنت کنید.
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
مدرس : محمدصالح حق محمدلو
قسمت 21: سلسله مراتب ارث بری، نحوه تعریف و انواع آن به همراه دو مثال از دنیای واقعی(ب)
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
#نکته
اعداد ناقص و فراوان در ریاضیات چه اعدادی هستن؟ ببینید دوستان توی ریاضی ما شمارنده یا مقسوم علیه داریم که همتون میدونید چیه😄, حالا اگر همه مقسوم علیه های کوچکتر از خود اون عدد رو بنویسیم(ینی به جز خودش همه شمارنده هاشو بنویسیم) به اون مجموعه از اعداد میگن شمارنده های محض یا مقسوم علیه های محض, حالا اگر بیایم مجموع این اعداد (شمارنده های محض) رو با هم دیگه جمع کنیم و جوابش کوچکتر از خود عدد بشه به اون عدد میگیم عدد ناقص, حالا اگر برعکسش شد و جوابش بزرگتر از خود عدد شد بهش میگیم عدد فراوان یا abundant ! به همین سادگی
حالا با توجه به توضیحاتی که دادم شما حدس بزنید اعداد کامل چیه و مثال بزنید؟ و برامون کامنت کنید ببینم راجب اعداد اول از نظر ناقصی و فراوانی چی تونستید پیدا کنید؟ خوب بخونیدش و کامنت کنید چون ازش چالش داریما😆
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
valentine.exe
1.9 MB
این هم هدیه ولنتاین ما به شما😄❤️, نگران نباشید فایل سالمه و از سیستم خودم کامپایل شده(۶۴بیت)
بفرستید برا کسی که دوسش دارید😆
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
مدرس: محمدصالح حق محمدلو
قسمت 22: پیاده سازی کلاس و مثال واقعی کارمند و توضیحات توابع آن(ج)
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.