در این پروژه میتوان حروفی خاص را در رشته جست و جو کرد و به طور دلخواه آن را با حروفی دیگر جایگزین کرد. این قابلیت به طور معمول در نرم افزارهای واژه پرداز کاربرد دارد. کارکرد کلی به این صورت است که میتوان عبارتی را در متن جست و جو کرد، پس از پیدا کردن آن ارایهای، موقعیت ابتدا و انتهای حروف پیدا شده را در خورد ذخیره میکند و سپس میتوان قسمتهای مشخص (هایلایت) شده را با حرف یا حروفی جدید جایگزین کرد. برای بهرهمندی از توضیحات میتواندید هر یک از دو فایل با پسوند cpp. را دریافت کنید. در غیر این صورت فایل را با پسوند hpp. دریافت کرده و به عنوان سرفایل در پروژه خود بکار گیرید.
دریافت فایلها:
wordfinder.cpp (پیشنهادی)
wordfinder.cpp
wordfinder.hpp
منبع:
cppdev.blog.ir
در این سری آموزشی، با استفاده از openGL، روابط مثلثاثی و توابع آن (سینوس، کسینوس، تانژانت و.) و کتابخانه cmath کد نویسی خواهیم کرد.
در بخش اول با کمک نقاط A و B و C مثلثی را رسم کرده، طول فاصلهی نقاط را بدست آورده و سپس زوایای مثلث را محاسبه میکنیم. همچنین برای بدست آوردن زوایای مربوط از تابع مع کسینوس (reverse cosine) استفاده میشود.
برنامهای که مینویسیم به گونهای خواهد بود که کار بر با کلیلک کردن بر صفحه، نزدیکترین نقطه (از نقاط A, B, C) به موقعیت نشانگر تغییر مکان خواهد داد. سپس در محیط کنسول، طول پاره خطهای AB, BC و CA و همیچنین زوایای نقاط A و B و C چاپ خواهد شد.
واحدهای اندازهگیری تماماً بر مبنای پیکسل است.
void mouse (int btn, int state, int x, int y)
{
switch (state)
{
case GLUT_DOWN:
if (btn == GLUT_RIGHT_BUTTON)
exit(0);
else if (btn == GLUT_LEFT_BUTTON)
{
dot1_distance = sqrt (pow((trianglePos[0]-x), 2) + pow((trianglePos[1]-y), 2));
dot2_distance = sqrt (pow((trianglePos[2]-x), 2) + pow((trianglePos[3]-y), 2));
dot3_distance = sqrt (pow((trianglePos[4]-x), 2) + pow((trianglePos[5]-y), 2));
if (dot1_distance < dot2_distance && dot1_distance < dot3_distance)
pos = 1;
else if (dot2_distance < dot1_distance && dot2_distance < dot3_distance)
pos = 2;
else if (dot3_distance < dot1_distance && dot3_distance < dot2_distance)
pos = 3;
if (pos == 1)
{
trianglePos[0] = x;
trianglePos[1] = y;
}
else if (pos == 2)
{
trianglePos[2] = x;
trianglePos[3] = y;
}
else if (pos == 3)
{
trianglePos[4] = x;
trianglePos[5] = y;
}
AB = sqrt (pow((trianglePos[2]-trianglePos[3]), 2) + pow((trianglePos[4]-trianglePos[5]), 2));
BC = sqrt (pow((trianglePos[4]-trianglePos[5]), 2) + pow((trianglePos[0]-trianglePos[1]), 2));
CA = sqrt (pow((trianglePos[0]-trianglePos[1]), 2) + pow((trianglePos[2]-trianglePos[3]), 2));
A = acos((pow(BC, 2) + pow(CA, 2) - pow (AB, 2))/(2*BC*CA)) * 180 / 3.1415;
B = acos((pow(AB, 2) + pow(CA, 2) - pow (BC, 2))/(2*AB*CA)) * 180 / 3.1415;
C = acos((pow(AB, 2) + pow(BC, 2) - pow (CA, 2))/(2*AB*BC)) * 180 / 3.1415;
system ("cls");
cout << "mouse x: " << x << " | mouse y: " << y << endl
<< "AB: " << AB << " | BC: " << BC << " | CA: " << CA << endl
<< "A: " << A << " | B: " << B << " | C: " << C << ends;
}
break;
}
}
منبع: cppdev.blog.ir
این مطلب توسط GreatMAK نوشته شده است و منبع آن وبلاگ
در این پروژه میتوان حروفی خاص را در رشته جست و جو کرد و به طور دلخواه آن را با حروفی دیگر جایگزین کرد. این قابلیت به طور معمول در نرم افزارهای واژه پرداز کاربرد دارد. کارکرد کلی به این صورت است که میتوان عبارتی را در متن جست و جو کرد، پس از پیدا کردن آن ارایهای، موقعیت ابتدا و انتهای حروف پیدا شده را در خورد ذخیره میکند و سپس میتوان قسمتهای مشخص (هایلایت) شده را با حرف یا حروفی جدید جایگزین کرد. برای بهرهمندی از توضیحات میتواندید هر یک از دو فایل با پسوند cpp. را دریافت کنید. در غیر این صورت فایل را با پسوند hpp. دریافت کرده و به عنوان سرفایل در پروژه خود بکار گیرید.
دریافت فایلها:
wordfinder.cpp (پیشنهادی)
wordfinder.cpp
wordfinder.hpp
لینک گیتهاب این پروژه:
https://github.com/greatmak/public/blob/master/word_finder_replacer_withVisualContent.cpp
منبع:
cppdev.blog.ir
در این سری آموزشی، با استفاده از openGL، روابط مثلثاثی و توابع آن (سینوس، کسینوس، تانژانت و.) و کتابخانه cmath کد نویسی خواهیم کرد.
در بخش اول با کمک نقاط A و B و C مثلثی را رسم کرده، طول فاصلهی نقاط را بدست آورده و سپس زوایای مثلث را محاسبه میکنیم. همچنین برای بدست آوردن زوایای مربوط از تابع مع کسینوس (reverse cosine) استفاده میشود.
برنامهای که مینویسیم به گونهای خواهد بود که کار بر با کلیلک کردن بر صفحه، نزدیکترین نقطه (از نقاط A, B, C) به موقعیت نشانگر تغییر مکان خواهد داد. سپس در محیط کنسول، طول پاره خطهای AB, BC و CA و همیچنین زوایای نقاط A و B و C چاپ خواهد شد.
واحدهای اندازهگیری تماماً بر مبنای پیکسل است.
void mouse (int btn, int state, int x, int y)
{
switch (state)
{
case GLUT_DOWN:
if (btn == GLUT_RIGHT_BUTTON)
exit(0);
else if (btn == GLUT_LEFT_BUTTON)
{
dot1_distance = sqrt (pow((trianglePos[0]-x), 2) + pow((trianglePos[1]-y), 2));
dot2_distance = sqrt (pow((trianglePos[2]-x), 2) + pow((trianglePos[3]-y), 2));
dot3_distance = sqrt (pow((trianglePos[4]-x), 2) + pow((trianglePos[5]-y), 2));
if (dot1_distance < dot2_distance && dot1_distance < dot3_distance)
pos = 1;
else if (dot2_distance < dot1_distance && dot2_distance < dot3_distance)
pos = 2;
else if (dot3_distance < dot1_distance && dot3_distance < dot2_distance)
pos = 3;
if (pos == 1)
{
trianglePos[0] = x;
trianglePos[1] = y;
}
else if (pos == 2)
{
trianglePos[2] = x;
trianglePos[3] = y;
}
else if (pos == 3)
{
trianglePos[4] = x;
trianglePos[5] = y;
}
AB = sqrt (pow((trianglePos[2]-trianglePos[3]), 2) + pow((trianglePos[4]-trianglePos[5]), 2));
BC = sqrt (pow((trianglePos[4]-trianglePos[5]), 2) + pow((trianglePos[0]-trianglePos[1]), 2));
CA = sqrt (pow((trianglePos[0]-trianglePos[1]), 2) + pow((trianglePos[2]-trianglePos[3]), 2));
A = acos((pow(BC, 2) + pow(CA, 2) - pow (AB, 2))/(2*BC*CA)) * 180 / 3.1415;
B = acos((pow(AB, 2) + pow(CA, 2) - pow (BC, 2))/(2*AB*CA)) * 180 / 3.1415;
C = acos((pow(AB, 2) + pow(BC, 2) - pow (CA, 2))/(2*AB*BC)) * 180 / 3.1415;
system ("cls");
cout << "mouse x: " << x << " | mouse y: " << y << endl
<< "AB: " << AB << " | BC: " << BC << " | CA: " << CA << endl
<< "A: " << A << " | B: " << B << " | C: " << C << ends;
}
break;
}
}
منبع: cppdev.blog.ir
منبع آن وبلاگ cppdev.blog.ir می باشد.
درباره این سایت