Tp hunters cpp
💬 #چالش با آرایه های پویا برنامه ای بنویسید که تا وقتی کاربر حرفی وارد نکرده، نمره هارا بگیرد و میانگین حساب کند(اگر حرف یا کارکتر وارد شد برنامه متوقف شود) 🟥درجه سختی: آسان 🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید
🧠 #کد_چالش
🔴 لطفا این چالش رو تمرین کنید که بسیار مهم و کاربردی است
#include <iostream>
using namespace std;
int main(){
int x;
int *p;
int *a = NULL;
int size = 0 , c = 0;
cout << "Enter Number : ";
while(cin >> x){
if(c >= size){
p = new int[size+3];
for(int i =0;i < size;++i)
p[i] = a[i];
delete[]a;
a = p;
size+=3;
}
a[c++] = x;
}
if(c == 0){
cout << "No invalid input !" << endl;
} else {
int sum = 0;
for(int i = 0;i < c;i++)
sum += a[i];
cout << "The average : " << (float)sum / c << endl;
}
delete[]a;
}
🟢لطفا سوالات, نظرات و کدهای خود را برای ما کامنت کنید
🔴 لطفا این چالش رو تمرین کنید که بسیار مهم و کاربردی است
#include <iostream>
using namespace std;
int main(){
int x;
int *p;
int *a = NULL;
int size = 0 , c = 0;
cout << "Enter Number : ";
while(cin >> x){
if(c >= size){
p = new int[size+3];
for(int i =0;i < size;++i)
p[i] = a[i];
delete[]a;
a = p;
size+=3;
}
a[c++] = x;
}
if(c == 0){
cout << "No invalid input !" << endl;
} else {
int sum = 0;
for(int i = 0;i < c;i++)
sum += a[i];
cout << "The average : " << (float)sum / c << endl;
}
delete[]a;
}
🟢لطفا سوالات, نظرات و کدهای خود را برای ما کامنت کنید
Tp hunters cpp
#چالش برنامهای بنویسید که عددی را از ورودی گرفته و جمع نهایی آن را، تا وقتی یک رقمی شود، در خروجی نمایش دهد. (مثلاً 34 را به عنوان ورودی گرفته و 7 را در خروجی نمایش دهد) 🟥 درجه سختی: دشوار 🟢 لطفا کد، سوالات و نظرات خود را برای ما کامنت کنید.
🧠 #کد_چالش
حل توسط جناب: s1n4m
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید
حل توسط جناب: s1n4m
#include <iostream>
int digitSum(int n) { return (n < 10) ? n : digitSum(n % 10 + n / 10); }
int main() {
int number{};
std::cin >> number;
std::cout << digitSum(number) << "\n";
return 0;
}🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید
Tp hunters cpp
💬 #چالش 🟥 نکته : این سوال بیشتر جنبه آموزش داره تا چالشی پس لطفا دقت کنید برنامه ای بنویسید که تعدادی عدد از کاربر دریافت کرده و به صورت سورت شده عدد هارو چاپ کند 🟥 نکات مهم برای نوشتن این برنامه : 1- حتما برای لیست عدد ها باید از وکتور استفاده کنید…
🧠 #کد_چالش
🔴 لطفا این چالش رو تمرین کنید که بسیار مهم و کاربردی است
#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> Number;
void sort(Number& sort_number){
int hold;
for(int r = 0;r < sort_number.size() - 1;r++){
for(int j = 0; j < sort_number.size() - 1;j++){
if(sort_number[j] > sort_number[j + 1]){
hold = sort_number[j];
sort_number[j] = sort_number[j + 1];
sort_number[j + 1] = hold;
}
}
}
}
Number input(int num){
cout << endl << endl;
Number number;
for(int i = 0;i < num;i++){
int tmp;
cout << "Enter number " << i + 1 << " : ";
cin >> tmp;
number.push_back(tmp);
}
return number;
}
void print(Number num){
for (int i=0; i <num.size(); i++) {
cout<<num[i]<<" ";
}
cout<<endl;
}
int main(){
int number;
cout << "Enter number : ";
cin >> number;
Number input_sort = input(number);
print(input_sort);
sort(input_sort);
print(input_sort);
}
🟢لطفا سوالات, نظرات و کدهای خود را برای ما کامنت کنید
🔴 لطفا این چالش رو تمرین کنید که بسیار مهم و کاربردی است
#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> Number;
void sort(Number& sort_number){
int hold;
for(int r = 0;r < sort_number.size() - 1;r++){
for(int j = 0; j < sort_number.size() - 1;j++){
if(sort_number[j] > sort_number[j + 1]){
hold = sort_number[j];
sort_number[j] = sort_number[j + 1];
sort_number[j + 1] = hold;
}
}
}
}
Number input(int num){
cout << endl << endl;
Number number;
for(int i = 0;i < num;i++){
int tmp;
cout << "Enter number " << i + 1 << " : ";
cin >> tmp;
number.push_back(tmp);
}
return number;
}
void print(Number num){
for (int i=0; i <num.size(); i++) {
cout<<num[i]<<" ";
}
cout<<endl;
}
int main(){
int number;
cout << "Enter number : ";
cin >> number;
Number input_sort = input(number);
print(input_sort);
sort(input_sort);
print(input_sort);
}
🟢لطفا سوالات, نظرات و کدهای خود را برای ما کامنت کنید
Tp hunters cpp
💬 #چالش برنامه ای بنویسید که شیر آبی بطور اتوماتیک پس از a ثانیه یک بطری آب 2.5 لیتری، سپس در ثانیه a+b یک بطری 1 لیتری، و به همین ترتیب پس از a+b+a+... ثانیه، L تعداد بطری را پر کند. ✅انجام این عملیات چند ثانیه به درازا می انجامد؟ (راهنمایی: مدت زمان پر…
🧠 #کد_چالش
حل توسط جناب: amir
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید.
حل توسط جناب: amir
#include<iostream>
using namespace std;
bool isAval(int number)
{
for (size_t i = 3; i < number; i += 2)
{
if(number % i == 0){
return false;
}
}
return true;
}
int main()
{
int first_number, second_number;
cout << "Enter first number" << endl;
cin >> first_number;
cout << "Enter second number" << endl;
cin >> second_number;
string result = "";
if(first_number < 2 && second_number > 2){
result += "2,";
}
first_number = first_number % 2 == 0 ? first_number + 1 : first_number + 2;
second_number = second_number % 2 == 0 ? second_number - 1 : second_number - 2;
for (size_t i = second_number; i >= first_number; i -= 2)
{
if(isAval(i)){
result += to_string(i) + ",";
}
}
cout << result.substr(0, result.length() - 1) << endl;
}🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید.
Tp hunters cpp
💬 #چالش برنامه ای بنویسید که به ازای هر کلمه n حرفی که از کاربر دریافت میکند؛ n کلمه چاپ شود؛ بطوریکه هر بار یک حرف از اول کلمه که قبلا حذف نشده حذف می شود سپس حرف بعدی کلمه جایگزین حرف حذف شده، می شود.(برای درک بهتر سوال به عکس بالا مراجعه کنید) 🟥درجه سختی:…
🧠 #کد_چالش
حل توسط جناب: S1N4M
#include <algorithm>
#include <iostream>
#include <string>
int main() {
std::string word;
std::cin >> word;
for (unsigned i{}; i < word.size(); ++i) {
std::fill_n(word.begin(), i, word.at(i));
std::cout << word << "\n";
}
return 0;
}
🟢لطفا سوالات،نظرات و کد های خود را برای ما کامنت یا داخل گروه ارسال کنید.
حل توسط جناب: S1N4M
#include <algorithm>
#include <iostream>
#include <string>
int main() {
std::string word;
std::cin >> word;
for (unsigned i{}; i < word.size(); ++i) {
std::fill_n(word.begin(), i, word.at(i));
std::cout << word << "\n";
}
return 0;
}
🟢لطفا سوالات،نظرات و کد های خود را برای ما کامنت یا داخل گروه ارسال کنید.
Tp hunters cpp
💬 #چالش 🟥درجه سختی: آسان 🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید. @tphunterscpp
🧠 #کد_چالش
🟢 لطفا سوالات، نظرات و کدهای خود را برای ما کامنت کنید.
#include<iostream>
using namespace std;
void printPascal(int n) {
for (int line = 1; line <= n; line++) {
int C = 1;
for (int i = 1; i <= line; i++) {
cout<<C<<" ";
C = C * (line - i) / i;
}
cout<<endl;
}
}
int main(){
int n=0;
cin>>n;
printPascal(n);
}
🟢 لطفا سوالات، نظرات و کدهای خود را برای ما کامنت کنید.
Tp hunters cpp
💬 #چالش توضیحات بیشتر: معکوس 123: 321 معکوس 221: 122 که 321 بزرگتر از 122 است طبق سوال عددی که معکوسش بزرگتر از معکوس عدد دیگر باشد، آن عدد بزرگتر است. پس: 221 < 123 🟥درجه سختی: آسان 🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال…
🧠 #کد_چالش
#include <iostream>
using namespace std;
int main(){
int n1, n2, a1, a2;
int rvrs1=0, rvrs2=0;
cin>>n1>>n2;
int num1=n1;
int num2=n2;
while (n1 > 0){
a1 = n1 % 10;
rvrs1 = rvrs1 * 10 + a1;
n1 = n1 / 10;
}
while (n2 > 0){
a2 = n2 % 10;
rvrs2 = rvrs2 * 10 + a2;
n2 = n2 / 10;
}
if( rvrs1 > rvrs2 ){
cout<<num1 << " > " <<num2;
}
else if( rvrs2 > rvrs1 ){
cout<<num2 << " > " <<num1;
}
else if (rvrs1 == rvrs2 ){
cout<<num1 << " = " <<num2;
}
}
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@tphunterscpp
#include <iostream>
using namespace std;
int main(){
int n1, n2, a1, a2;
int rvrs1=0, rvrs2=0;
cin>>n1>>n2;
int num1=n1;
int num2=n2;
while (n1 > 0){
a1 = n1 % 10;
rvrs1 = rvrs1 * 10 + a1;
n1 = n1 / 10;
}
while (n2 > 0){
a2 = n2 % 10;
rvrs2 = rvrs2 * 10 + a2;
n2 = n2 / 10;
}
if( rvrs1 > rvrs2 ){
cout<<num1 << " > " <<num2;
}
else if( rvrs2 > rvrs1 ){
cout<<num2 << " > " <<num1;
}
else if (rvrs1 == rvrs2 ){
cout<<num1 << " = " <<num2;
}
}
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه ارسال کنید.
@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
#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
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
#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
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;
}
🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید.🧠 #کد_چالش
حل توسط : خانم the lovely me
🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید
حل توسط : خانم the lovely me
#include <iostream>
using namespace std;
int is_abundant(int n)
{
int sum = 0;
for (int i = 1; i < n; i++)
if (n % i == 0)
sum += i;
if (sum > n)
return sum - n;
else
return 0;
}
int main()
{
int n;
cin >> n;
for (int i = 12; i <= n; i++)
if (is_abundant(i))
cout << i << " - abundance: " << is_abundant(i) << endl;
return 0;
}
🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید
Tp hunters cpp
💬 #چالش 🟥درجه سختی : متوسط رو به سخت 🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید.
🧠 #کد_چالش
حل توسط : خانم the lovely me
حل توسط : خانم the lovely me
#include <iostream>🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید.
using namespace std;
string doubleSwap(string str, char c1, char c2);
int main()
{
string s;
char c1, c2;
cin >> s >> c1 >> c2;
cout << doubleSwap(s, c1, c2);
}
string doubleSwap(string str, char c1, char c2)
{
for (int i = 0; i < str.size(); i++)
{
if (str[i] == c1)
str[i] = c2;
else if (str[i] == c2)
str[i] = c1;
}
return str;
}
Tp hunters cpp
💬 #چالش 🟥درجه سختی : متوسط رو به سخت(البته بنظر من که خیلی راحته و میتونید حلش کنید😆) 🟢لطفا سوالات , نظرات و کد های خود را برای ما کامنت کنید.
🧠 #کد_چالش
حل توسط : alireza zera
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
حل توسط : alireza zera
#include <iostream>
#include <string>
#include <regex>
using namespace std;
bool isValidHexCode(string input);
int main() {
string str;
cin >> str;
cout << isValidHexCode(str);
}
bool isValidHexCode(string input) {
return regex_search(input, regex("^#[a-fA-f0-9]{6}$"));
}🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
Tp hunters cpp
💬 #چالش 🟥درجه سختی : متوسط 🟢لطفا سوالات , نظرات و کد های خود را برای ما کامنت کنید.
🧠 #کد_چالش
حل توسط : چند نفر از دوستان, اما ساده و بهترین کد کد زیر میباشد.
حل توسط : چند نفر از دوستان, اما ساده و بهترین کد کد زیر میباشد.
// C++ implementation of the approach🟢لطفا سوالات, نظرات و کد های خود را برای ما کامنت کنید.
#include <bits/stdc++.h>
using namespace std;
// Function to return the count of
// valid indices pairs
int countPairs(string s1, int n1, string s2, int n2)
{
// To store the frequencies of characters
// of string s1 and s2
int freq1[26] = { 0 };
int freq2[26] = { 0 };
// To store the count of valid pairs
int i, count = 0;
// Update the frequencies of
// the characters of string s1
for (i = 0; i < n1; i++)
freq1[s1[i] - 'a']++;
// Update the frequencies of
// the characters of string s2
for (i = 0; i < n2; i++)
freq2[s2[i] - 'a']++;
// Find the count of valid pairs
for (i = 0; i < 26; i++)
count += (min(freq1[i], freq2[i]));
return count;
}
// Driver code
int main()
{
string s1 = "geeksforgeeks", s2 = "platformforgeeks";
int n1 = s1.length(), n2 = s2.length();
cout << countPairs(s1, n1, s2, n2);
return 0;
}
🧠 #کد_چالش
حل توسط : آقای SIN4M
🟢لطفا سوالات، نظرات و کدهای خود را برای ما ارسال کنید.
حل توسط : آقای SIN4M
#include <algorithm>
bool isInOrder(std::string& s){
std::string norm_str{std::tolower(s)};
return std::is_sorted(norm_str.begin(), norm_str.end());
}
🟢لطفا سوالات، نظرات و کدهای خود را برای ما ارسال کنید.
🟩 شروع سریع
▪️پارت اول
سلام دوباره به تو دوست خوب من. خوشحالم که تا اینجا همراه من بودی بریم ساختن و ذخیره کردن فایلو باهم یادبگیریم که خیلی مهمه!
بریم که اولین فایل ++C مون رو بسازیم. Codeblocks رو باز کنید و این مسیر رو طی کنید:
File > New > Empty File
کد زیر را در آن نوشته و فایل را با نام زیر ذخیره کنید: myfirstprogram.cpp
(File > Save File as)
—————————
—————————
احسنت ، اره میدونم چقد مشتاقی برای ادامه ولی بهم اعتماد کن. ادامه مطالبو فردا بهت میگم.
موفق باشی!
━━━━━━━━━━━━━━━
🆔 @tphunterscpp
🆔 @Tphunterscpp_Group
▪️پارت اول
سلام دوباره به تو دوست خوب من. خوشحالم که تا اینجا همراه من بودی بریم ساختن و ذخیره کردن فایلو باهم یادبگیریم که خیلی مهمه!
بریم که اولین فایل ++C مون رو بسازیم. Codeblocks رو باز کنید و این مسیر رو طی کنید:
File > New > Empty File
کد زیر را در آن نوشته و فایل را با نام زیر ذخیره کنید: myfirstprogram.cpp
(File > Save File as)
—————————
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
return 0;
}—————————
احسنت ، اره میدونم چقد مشتاقی برای ادامه ولی بهم اعتماد کن. ادامه مطالبو فردا بهت میگم.
موفق باشی!
━━━━━━━━━━━━━━━
🆔 @tphunterscpp
🆔 @Tphunterscpp_Group
#include <regex>
std::regex ip_ex("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
این کدیه که استفاده کردیم. حالا بیاید توضیح بدم که چطوری کار میکنه و بخش به بخش بریم جلو👇
درس روز 1: مقدمهای بر Regex در C++ و کاربردهای آن
1. تعریف Regex:
از Regular Expressions یا Regex برای تطابق و پردازش الگوهای رشتهای استفاده میشود. از کلاسهای مختلفی مثل
2. کاربرد Regex:
- اعتبارسنجی ورودی کاربر: مثلاً بررسی کنید آیا فرمت یک ایمیل یا شماره تلفن صحیح است.
- جستجو در متن: پیدا کردن کلمات خاص یا الگوهای مشخص در یک متن طولانی.
- جایگزینی متن: تغییر دادن بخشهای خاصی از متن با یک مقدار جدید.
3. کتابخانه مورد نیاز:
برای استفاده از Regex در C++، باید کتابخانه
4. مثال ساده از استفاده Regex در C++:
ابتدا به یک مثال ساده نگاه کنیم تا نحوه استفاده از Regex در C++ را درک کنید:
مثال 1: تطابق یک کلمه با استفاده از
در این کد، اگر رشته
مثال 2: جستجوی یک الگو در متن با استفاده از
در اینجا، برنامه در متن
5. تمرین عملی روز 1:
1. یک برنامه ساده بنویسید که یک رشته ورودی از کاربر بگیرد و با استفاده از
2. سپس از
1. تعریف Regex:
از Regular Expressions یا Regex برای تطابق و پردازش الگوهای رشتهای استفاده میشود. از کلاسهای مختلفی مثل
std::regex برای ایجاد الگوها و std::regex_match و std::regex_search برای تطابق الگو با رشتهها استفاده میشود.2. کاربرد Regex:
- اعتبارسنجی ورودی کاربر: مثلاً بررسی کنید آیا فرمت یک ایمیل یا شماره تلفن صحیح است.
- جستجو در متن: پیدا کردن کلمات خاص یا الگوهای مشخص در یک متن طولانی.
- جایگزینی متن: تغییر دادن بخشهای خاصی از متن با یک مقدار جدید.
3. کتابخانه مورد نیاز:
برای استفاده از Regex در C++، باید کتابخانه
<regex> را وارد برنامه کنید:#include <regex>
4. مثال ساده از استفاده Regex در C++:
ابتدا به یک مثال ساده نگاه کنیم تا نحوه استفاده از Regex در C++ را درک کنید:
مثال 1: تطابق یک کلمه با استفاده از
std::regex_match#include <iostream>
#include <regex>
int main() {
std::string text = "hello";
std::regex pattern("hello");
if (std::regex_match(text, pattern)) {
std::cout << "Matched!" << std::endl;
} else {
std::cout << "Not Matched!" << std::endl;
}
return 0;
}
در این کد، اگر رشته
"hello" با الگوی hello مطابقت داشته باشد، پیام "Matched!" چاپ میشود.مثال 2: جستجوی یک الگو در متن با استفاده از
std::regex_search#include <iostream>
#include <regex>
int main() {
std::string text = "hello world";
std::regex pattern("world");
if (std::regex_search(text, pattern)) {
std::cout << "Pattern found!" << std::endl;
} else {
std::cout << "Pattern not found!" << std::endl;
}
return 0;
}
در اینجا، برنامه در متن
"hello world" به دنبال الگوی "world" میگردد و اگر پیدا کند، پیام "Pattern found!" را چاپ میکند.5. تمرین عملی روز 1:
1. یک برنامه ساده بنویسید که یک رشته ورودی از کاربر بگیرد و با استفاده از
std::regex_match بررسی کند که آیا ورودی با یک الگوی ساده مثل "hello" مطابقت دارد یا خیر.2. سپس از
std::regex_search استفاده کنید تا در یک رشته بزرگتر به دنبال کلمه خاصی بگردید.
Tp hunters cpp
درس روز 1: مقدمهای بر Regex در C++ و کاربردهای آن 1. تعریف Regex: از Regular Expressions یا Regex برای تطابق و پردازش الگوهای رشتهای استفاده میشود. از کلاسهای مختلفی مثل std::regex برای ایجاد الگوها و std::regex_match و std::regex_search برای تطابق الگو…
درس روز 2: حروف عادی و کاراکترهای ویژه در Regex
1. حروف عادی (Literal Characters):
حروف عادی به هر کاراکتری گفته میشود که معنای خاصی در Regex ندارد و دقیقاً همان چیزی است که در رشته به دنبال آن میگردیم.
برای مثال: a به معنای تطبیق با حرف کوچک a یا 1 به معنای تطبیق با عدد 1
مثال:
در این مثال، الگوی
2. کاراکترهای ویژه (Special Characters):
کاراکترهای ویژه در Regex معنای خاصی دارند و برای ایجاد الگوهای پیچیدهتر استفاده میشوند. برخی از مهمترین کاراکترهای ویژه عبارتاند از:
- `.` (نقطه): به معنای تطبیق با هر کاراکتر (به جز خط جدید).
مثال: الگوی
- `^` : تطابق با ابتدای رشته.
مثال: الگوی
- `$` : تطابق با انتهای رشته.
مثال: الگوی
- `\d`: تطابق با هر عدد (0-9).
مثال: الگوی
- `\w`: تطابق با هر کاراکتر الفبایی عددی (حروف، اعداد و زیرخط
مثال: الگوی
- `\s`: تطابق با هر کاراکتر فاصله (space، tab، newline).
مثال: الگوی
3. نحوه استفاده از کاراکترهای ویژه در C++:
برای استفاده از کاراکترهای ویژه مثل
مثال: تطبیق یک عدد در رشته
در این مثال، الگوی
4. فرار دادن کاراکترهای ویژه (Escaping Special Characters):
اگر میخواهید یک کاراکتر ویژه را به عنوان یک کاراکتر عادی تطبیق دهید، باید آن را با یک
مثال: تطبیق نقطه به عنوان کاراکتر عادی
5. تمرین عملی روز 2:
1. یک برنامه بنویسید که با استفاده از
2. یک الگو بنویسید که بررسی کند آیا رشته ورودی شما با یک کلمه خاص شروع و با یک عدد خاص تمام میشود یا نه. برای این کار از
1. حروف عادی (Literal Characters):
حروف عادی به هر کاراکتری گفته میشود که معنای خاصی در Regex ندارد و دقیقاً همان چیزی است که در رشته به دنبال آن میگردیم.
برای مثال: a به معنای تطبیق با حرف کوچک a یا 1 به معنای تطبیق با عدد 1
مثال:
#include <iostream>
#include <regex>
int main() {
std::string text = "hello123";
std::regex pattern("hello");
if (std::regex_search(text, pattern)) {
std::cout << "Pattern found!" << std::endl;
}
return 0;
}
در این مثال، الگوی
hello به دنبال رشته "hello" در متن میگردد.2. کاراکترهای ویژه (Special Characters):
کاراکترهای ویژه در Regex معنای خاصی دارند و برای ایجاد الگوهای پیچیدهتر استفاده میشوند. برخی از مهمترین کاراکترهای ویژه عبارتاند از:
- `.` (نقطه): به معنای تطبیق با هر کاراکتر (به جز خط جدید).
مثال: الگوی
a.c با رشتههای "abc"، "a1c" و "a_c" تطبیق دارد.- `^` : تطابق با ابتدای رشته.
مثال: الگوی
^hello فقط با رشتههایی که با "hello" شروع میشوند، تطبیق دارد.- `$` : تطابق با انتهای رشته.
مثال: الگوی
world$ فقط با رشتههایی که با "world" تمام میشوند، تطبیق دارد.- `\d`: تطابق با هر عدد (0-9).
مثال: الگوی
\d با هر عددی تطبیق دارد.- `\w`: تطابق با هر کاراکتر الفبایی عددی (حروف، اعداد و زیرخط
_). مثال: الگوی
\w با حروف و اعداد تطبیق دارد.- `\s`: تطابق با هر کاراکتر فاصله (space، tab، newline).
مثال: الگوی
\s با فاصلهها تطبیق دارد.3. نحوه استفاده از کاراکترهای ویژه در C++:
برای استفاده از کاراکترهای ویژه مثل
\d و \w در C++، باید از دو \\ استفاده کنید، زیرا در C++ کاراکتر \ خودش یک کاراکتر ویژه است. بنابراین به جای \d از \\d استفاده کنید.مثال: تطبیق یک عدد در رشته
#include <iostream>
#include <regex>
int main() {
std::string text = "My number is 1234";
std::regex pattern("\\d+"); // تطابق با یک یا چند رقم
if (std::regex_search(text, pattern)) {
std::cout << "Number found!" << std::endl;
}
return 0;
}
در این مثال، الگوی
\\d+ به دنبال یک یا چند عدد در رشته میگردد.4. فرار دادن کاراکترهای ویژه (Escaping Special Characters):
اگر میخواهید یک کاراکتر ویژه را به عنوان یک کاراکتر عادی تطبیق دهید، باید آن را با یک
\ فرار دهید. به عنوان مثال، اگر میخواهید . را به عنوان نقطه معمولی جستجو کنید، باید از \\. استفاده کنید.مثال: تطبیق نقطه به عنوان کاراکتر عادی
#include <iostream>
#include <regex>
int main() {
std::string text = "Price is 50.5 dollars";
std::regex pattern("50\\.5"); // تطابق با "50.5"
if (std::regex_search(text, pattern)) {
std::cout << "Pattern found!" << std::endl;
}
return 0;
}
5. تمرین عملی روز 2:
1. یک برنامه بنویسید که با استفاده از
std::regex_search بررسی کند که آیا یک عدد (هر عددی) در یک رشته وجود دارد یا خیر.2. یک الگو بنویسید که بررسی کند آیا رشته ورودی شما با یک کلمه خاص شروع و با یک عدد خاص تمام میشود یا نه. برای این کار از
^ و $ استفاده کنید.