Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.29 KB | None | 0 0
  1. 1) if (/*логическое выражение*/) /*выполняется если лог. выражение = TRUE*/ ;
  2. 2) if (/*логическое выражение*/) /*выполняется если лог. выражение = TRUE*/;
  3. 3) if (/*логическое выражение*/) { //выполняется если логическое. выражение = TRUE }
  4. 4) if (/*логическое выражение*/) { //выполняется если логическое выражение = TRUE }
  5. else { //выполняется если логическое выражение = FALSE }
  6. 5) if (/*логическое выражение1*/) { //выполняется если логическое выражение1 = TRUE }
  7. else if (/*логическое выражение2*/) { //выполняется если логическое выражение 2 = TRUE }
  8. && - логическое «И»;
  9.  
  10. || - логическое «ИЛИ»;
  11.  
  12. ! – отрицание;
  13.  
  14. == - логическое «РАВНО»;
  15.  
  16. != - логическое «НЕ РАВНО»
  17. if (A == 0)
  18. {
  19. if (C > 10)
  20. {
  21. if (N < 15) {
  22. сout << N;
  23. }
  24. }
  25. }
  26.  
  27. int number;
  28. cin >> number;
  29. switch (number)
  30. { case 0:
  31. A = B;
  32. break; c
  33. ase 1:
  34. B = A;
  35. break;
  36. case 2:
  37. A += B;
  38. break;
  39. case 3:
  40. B *= A;
  41. break;
  42. default: B /= A; };
  43. ________________________________________________________________
  44.  
  45. n++;
  46. cout << n <<"\n";
  47. }
  48.  
  49.  
  50.  
  51. int n = 0;
  52. do
  53. {
  54. n++;
  55. cout << n << "\n";
  56. }
  57. while (n < 11)
  58.  
  59.  
  60.  
  61.  
  62. for (int n = 1; n <= 10; n++)
  63. {
  64. cout << n << "\n";
  65. }
  66.  
  67.  
  68.  
  69. for (int n = 1; n <= 10; n++)
  70. { c
  71. out << n << "\n";
  72. if (n == 5)
  73. break;
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. for (int n = 1; n <= 10; n++)
  82. {
  83. if (n == 5)
  84. continue;
  85. cout << n << "\n";
  86. }
  87.  
  88. ______________________________________________________________________
  89.  
  90. ОДНОМЕРНЫЙ
  91. #define SIZE 4
  92. int num[10];
  93. float res[5][5];
  94. double mass[SIZE];
  95.  
  96. ДИНАМИЧЕСКИЙ
  97. int size;
  98. cin >> size;
  99. int *mass = new int[size];
  100. //действия с массивом
  101. delete[] mass;
  102.  
  103.  
  104. int Xsize,Ysize;
  105. cin >> Xsize >> Ysize;
  106. int **mass = new int*[Xsize];
  107. for (int i = 0; i < Xsize; i++)
  108. {
  109. mass[i] = new int[Ysize];
  110. } //действия с массивом
  111. delete[] mass;
  112.  
  113.  
  114. #include "stdafx.h"
  115. #include <iostream>
  116. #include <ctime> //для функции
  117. time using namespace std;
  118. int main()
  119. { int mass[10]; srand(time(0)); // автоматическая рандомизация по текущей дате в секундах
  120. for (int i = 0; i < 10; i++)
  121. {
  122. mass[i] = -5 + rand() % 11;
  123. // приведение случайных чисел к диапазону -5...5
  124. }
  125. return 0; }
  126.  
  127. ____________________________________________________________________
  128.  
  129. //прототип функции вычисления факториала
  130. int faktorial(int N);
  131. int main()
  132. {
  133. int M,N,K; cin >> M >> N >> K;
  134. int FM = faktorial(M);
  135. int FN = faktorial(N);
  136. int FK = faktorial(K);
  137. cout << FM << endl << FN << endl << FK;
  138. }
  139. //реализация функции вычисления факториала
  140. int faktorial(int N)
  141. {
  142. int res = 1;
  143. for (int i = 1; i <= N; i++)
  144. { res *= i; // вычисляем значение факториала
  145. } return res; // возвращаем значение факториала
  146. }
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153. //прототип функции нормирования вектора
  154. void Normalize(float *X,float*Y,float *Z);
  155. int main()
  156. {
  157. float X,Y,Z; //координаты вектора
  158. cin >> X >> Y >> Z;
  159. Normalize(&X, &Y, &Z); //вызов функции с передачей X,Y,Z "по ссылке"
  160. cout << X << endl << Y << endl << Z<<endl;
  161. system("pause");
  162. }
  163. //реализация функции нормирования вектора
  164. void Normalize(float *X, float*Y, float *Z)
  165. {
  166. float L = sqrt((*X)*(*X) + (*Y)*(*Y) + (*Z)*(*Z));
  167. *X /= L;
  168. *Y /= L;
  169. *Z /= L;
  170. }
  171.  
  172.  
  173. _______________________________________________________________________________________
  174.  
  175. //Записать случайно выбранные числа в бинарный файл
  176. // и считать их записав в другой массив
  177. #include <time.h>
  178. #include <iostream>
  179. #define
  180. FNAME "D:\\Test.dat" u
  181. sing namespace std;
  182. void main()
  183. {
  184. FILE *in;
  185. // Инициализация переменных
  186. int a[10],b[10]; // Массивы a типа int,
  187. // размер - 10 элементов
  188. int i;
  189. fopen_s(&in, FNAME, "wb");
  190. // Сброс генератора случайных чисел
  191. srand(time(NULL));
  192. // Заполнить массив случайными числами
  193. for (i = 0; i < 10; i++)
  194. a[i] = rand();
  195. // Вывести массив а на экран
  196. fwrite(a, sizeof(int), 10, in); //записать бинарно все 10 элементов
  197. for (i = 0; i < 10; i++)
  198. {
  199. printf("a[%i]=%i\n", i, a[i]);
  200. }
  201. fclose(in);
  202. // открыть на чтение бинарно
  203. fopen_s(&in, FNAME, "rb");
  204. fread(&b[i], sizeof(int), 10, in); // читаем массив b целиком
  205. for (i = 0; i < 10; i++)
  206. {
  207. printf("b[%i]=%i\n", i, b[i]);
  208. }
  209. fclose(in);
  210. system("pause");
  211. }
  212.  
  213.  
  214.  
  215.  
  216.  
  217. //Имеется файл данных, содержащий целые числа,
  218. //разделенные пробелами. Количество чисел в файле неизвестно.
  219. //Требуется найти среднее арифметическое значение этих чисел
  220.  
  221. #include <iostream>
  222. void main()
  223. {
  224. int S = 0, count = 0, numb;
  225. double aver;
  226. FILE *in;
  227. if ((in = fopen("D:\\1.txt", "r")) != NULL)
  228. {
  229. while (!feof(in))
  230. {
  231. fscanf_s(in, "%i", &numb);
  232. S += numb;
  233. count++;
  234. printf("%i\n", numb);
  235. }
  236. aver = (double)S / count;
  237. printf("Average=%lf\n", aver);
  238. fclose(in);
  239. }
  240. else
  241. printf("\nФайл не найден!");
  242. system("pause");
  243. }
  244.  
  245.  
  246.  
  247.  
  248.  
  249. //Записать нуль на место максимального значения в бинарном файле
  250. #include <iostream>
  251. void main()
  252. { FILE *in;
  253. int i, imax; // номер максимального элемента
  254. int a[10], max, zero = 0;
  255. in = fopen("D:\\Test.dat", "rb"); i
  256. f (!in)
  257. { p
  258. uts("Error!");
  259. return;
  260. }
  261. fread(&max, sizeof(int), 1, in);
  262. imax = 1;
  263. for (i = 1; i < 10; i++)
  264. {
  265. fread(&a[i], sizeof(int), 1, in);
  266. printf("a[%i]=%i\n", i, a[i]);
  267. if (a[i] > max)
  268. {
  269. max = a[i];
  270. imax = i;
  271. }
  272. }
  273. printf("\nmax=%i, imax= %4i", max, imax);
  274. fseek(in, (imax)*sizeof(int), SEEK_SET);
  275. fwrite(&zero, sizeof(int), 1, in);
  276. int b[10];// проверочный массив
  277. rewind(in); //перематываем файл в начало
  278. fread(b, sizeof(int), 10, in); //читаем массив
  279. for (i = 0; i < 10; i++)
  280. {
  281. printf("b[%i]=%i\n", i, b[i]);
  282. }
  283. fclose(in);
  284. system("pause");
  285. }
  286.  
  287. _______________________________________________________________________
  288.  
  289. // объявление классов в С++
  290. class /*имя класса*/
  291. {
  292. private:
  293. /* список свойств и методов для использования внутри класса */
  294. public:
  295. /* список методов доступных другим функциям и объектам программы */
  296. protected:
  297. /*список средств, доступных при наследовании*/
  298. };
  299.  
  300.  
  301.  
  302. #include "stdafx.h"
  303. #include <iostream>
  304. using namespace std;
  305. // начало объявления класса
  306. class CppStudio // имя класса
  307. {
  308. public: // спецификатор доступа
  309. void message() // функция (метод класса) выводящая сообщение на экран
  310. {
  311. cout << "This is message from C++ class!\n";
  312. } }
  313. ; // конец объявления класса CppStudio
  314. int main()
  315. {
  316. CppStudio *objMessage = new CppStudio;
  317. objMessage.message(); // вызов функции класса message
  318. system("pause");
  319. delete objMessage;// сложный класс
  320. return 0;
  321. }
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328. #include "stdafx.h"
  329. #include <iostream>
  330. using namespace std;
  331. class CppStudio // имя класса
  332. { private: // спецификатор доступа private
  333. int day, // день
  334. month, // месяц
  335. year; // год
  336. public: // спецификатор доступа public
  337. void message() // функция (метод класса) выводящая сообщение на экран
  338. {
  339. cout << "This is message from C++ class!\n";
  340. }
  341. void setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг
  342. {
  343. day = date_day; // инициализация день
  344. month = date_month; // инициализация месяц
  345. year = date_year; // инициализация год
  346. }
  347. void getDate() // отобразить текущую дату
  348. {
  349. cout << "Date: " << day << "." << month << "." << year << endl;
  350. }
  351. }; // конец объявления класса CppStudio
  352. int main()
  353. {
  354. setlocale(LC_ALL, "RUS"); // установка локализации
  355. int day, month, year;
  356. cout << "Введите текущий день месяц и год!\n";
  357. cout << "день: "; cin >> day;
  358. cout << "месяц: "; cin >> month;
  359. cout << "год: "; cin >> year;
  360. CppStudio objCppstudio; // объявление объекта
  361. objCppstudio.message(); // вызов функции класса message
  362. objCppstudio.setDate(day, month, year); // инициализация даты
  363. objCppstudio.getDate(); // отобразить дату
  364. system("pause");
  365. return 0;
  366. }
  367.  
  368. __________________________________________________________________________
  369.  
  370. #include "stdafx.h"
  371. #include <iostream>
  372. #include "math.h"
  373.  
  374. using namespace std;
  375.  
  376.  
  377.  
  378. int main()
  379. {
  380. setlocale(LC_ALL, "Russian");
  381. float x, eps;
  382. cout << "Введите x" << endl;
  383. cin >> x;
  384. cout << "Введите погрешность" << endl;
  385. cin >> eps;
  386.  
  387. float f = ((1 - cos(x) - x * sin(x)) / pow(x, 2)) + 0.5;
  388. float n = (3 * pow(x, 2)) / 24;
  389. int m = 1;
  390. int i = 2;
  391. int fac;
  392. int ind = 1;
  393. float sum = 0;
  394. while (abs(n) >= eps)
  395.  
  396. {
  397. int z = 2 * i;
  398. for (int j = 1; j <= (z + 2); j++)
  399. {
  400. fac = m * j;
  401. m = fac;
  402. }
  403. sum += n;
  404. n = ((z + 1) * pow(x, z)) / fac;
  405. ind = ind + 1;
  406. if (ind % 2 == 0)
  407. {
  408. n = abs(n)*(-1);
  409. }
  410. i++;
  411. ind++;
  412. m = 1;
  413.  
  414. }
  415.  
  416. cout << "Выражение: " << f << endl;
  417. cout << "Искомая сумма "<< sum <<endl;
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425. system("pause");
  426. return 0;
  427. }
  428.  
  429. ___________________________________________________________________
  430.  
  431. #define _USE_MATH_DEINES
  432. #include "stdafx.h"
  433. #include<iostream>
  434. #include<math.h>
  435. #include <ctime>
  436.  
  437. using namespace std;
  438.  
  439.  
  440. int main()
  441. {
  442. setlocale(LC_ALL, "Rus");
  443.  
  444. int xSize, ySize;
  445.  
  446. cout << "Введите x" << endl;
  447. cin >> xSize;
  448. cout << "Введите y" << endl;
  449. cin >> ySize;
  450.  
  451. int **massdv = new int*[xSize] ;
  452.  
  453. int s = 0;
  454. srand(time(0));
  455.  
  456. for (int i = 0; i < xSize; i++)
  457. {
  458. massdv[i] = new int[ySize];
  459. }
  460.  
  461. for (int i = 0; i < xSize; i++)
  462. {
  463. for (int j = 0; j < ySize;j++) {
  464.  
  465. massdv[i][j] = -50 + rand() % 101;
  466.  
  467. }
  468.  
  469. }
  470.  
  471. for (int i = 0; i < xSize; i++)
  472. {
  473. for (int j = 0; j < ySize;j++) {
  474.  
  475. cout << massdv[i][j] << " ";
  476.  
  477. }
  478. cout << endl;
  479.  
  480. }
  481.  
  482.  
  483. for (int i = 0; i < xSize; i++)
  484. {
  485. for (int j = 0; j < ySize; j++) {
  486. if ((j > i) && (massdv[i][j] < 0)) {
  487. massdv[i][j] = abs(massdv[i][j]);
  488.  
  489. }
  490. }
  491. }
  492.  
  493. cout << endl;
  494.  
  495. for (int i = 0; i < xSize; i++)
  496. {
  497. for (int j = 0; j < ySize;j++) {
  498.  
  499. cout << massdv[i][j] << " ";
  500.  
  501. }
  502. cout << endl;
  503.  
  504. }
  505.  
  506.  
  507.  
  508.  
  509. for (int i = 0; i < xSize; i++)
  510. {
  511. for (int j = 0; j < ySize; j++)
  512. {
  513. if (i == j) {
  514. s = s + massdv[i][j];
  515. }
  516. }
  517. }
  518.  
  519. printf("\n");
  520.  
  521. cout << "Сумма элементов гл диагонали = " << s << endl;
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528. delete[] massdv;
  529. system("pause");
  530. return 0;
  531. }
  532.  
  533. _______________________________________________________________________
  534.  
  535. // KursachDlg.cpp: файл реализации
  536. //
  537.  
  538. #include "stdafx.h"
  539. #include "Kursach.h"
  540. #include "KursachDlg.h"
  541. #include "afxdialogex.h"
  542.  
  543. #ifdef _DEBUG
  544. #define new DEBUG_NEW
  545. #endif
  546. #import <C:\Users\ashel\Desktop\Kursach2\Kursach\InventorApp\RxInventor.tlb> \
  547. rename_namespace("InventorNative") \
  548. named_guids raw_dispinterfaces \
  549. high_method_prefix("Method") \
  550. rename("DeleteFile", "APIDeleteFile") \
  551. rename("CopyFile", "APICopyFile") \
  552. rename("MoveFile", "APIMoveFile") \
  553. rename("SetEnvironmentVariable", "APISetEnvironmentVariable") \
  554. rename("GetObject", "APIGetObject") \
  555. exclude("_FILETIME", "IStream", "ISequentialStream", \
  556. "_LARGE_INTEGER", "_ULARGE_INTEGER", "tagSTATSTG", \
  557. "IEnumUnknown", "IPersistFile", "IPersist", "IPictureDisp")
  558.  
  559. using namespace InventorNative;
  560.  
  561. CComPtr<Application> pInvApp; //приложение
  562. InventorNative::PartDocumentPtr pPartDoc; //документ
  563. InventorNative::PartComponentDefinition *pPartComDef;//компоненты детали
  564. InventorNative::TransientGeometry *pTransGeom; //геометрия детали
  565. InventorNative::Transaction *pTrans; //операции
  566. TransactionManagerPtr pTransManager; //менеджер операций
  567. Document *Doc;
  568. PlanarSketches *sketches; // эскизы
  569. Sketches3D *sketches3D;
  570. PartFeatures *ft; //элементы детали
  571. WorkPlanes *wp; //рабочие плоскости
  572. WorkAxes *wax;//рабочие оси
  573. WorkPoints *wpt;//рабочие точки
  574.  
  575.  
  576.  
  577. // Диалоговое окно CAboutDlg используется для описания сведений о приложении
  578.  
  579. class CAboutDlg : public CDialogEx
  580. {
  581. public:
  582. CAboutDlg();
  583.  
  584. // Данные диалогового окна
  585. #ifdef AFX_DESIGN_TIME
  586. enum { IDD = IDD_ABOUTBOX };
  587. #endif
  588.  
  589. protected:
  590. virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV
  591.  
  592. // Реализация
  593. protected:
  594. DECLARE_MESSAGE_MAP()
  595. };
  596.  
  597. CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
  598. {
  599. }
  600.  
  601. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  602. {
  603. CDialogEx::DoDataExchange(pDX);
  604. }
  605.  
  606. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  607. END_MESSAGE_MAP()
  608.  
  609.  
  610. // Диалоговое окно CKursachDlg
  611.  
  612.  
  613.  
  614. CKursachDlg::CKursachDlg(CWnd* pParent /*=NULL*/)
  615. : CDialog(IDD_KURSACH_DIALOG, pParent)
  616. , m_dRMalVirez(0.35)
  617. , m_dRMarOkr(0.5)
  618. , m_dRMedVirez(1.08)
  619. , m_dRMedOkr(1.18)
  620. , m_dRBigVirez(2.14)
  621. , m_dRBigOkr(2.33)
  622. , m_dGlubMalVirez(0)
  623. , m_dGlubMedVirez(0.72)
  624. , m_dHightBigOkr(1.15)
  625. , m_dGlubVneshVirez(0.25)
  626. , m_dHightMedOkr(0.95)
  627. , m_dHightSmallOkr(0.52)
  628. , m_nZb(30)
  629. , m_Shir1(0.1309)
  630. , m_Shir2(0.1425)
  631. {
  632. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  633. }
  634.  
  635. void CKursachDlg::DoDataExchange(CDataExchange* pDX)
  636. {
  637. CDialog::DoDataExchange(pDX);
  638. DDX_Text(pDX, IDC_EDIT1, m_dRMalVirez);
  639. DDX_Text(pDX, IDC_EDIT2, m_dRMarOkr);
  640. DDX_Text(pDX, IDC_EDIT3, m_dRMedVirez);
  641. DDX_Text(pDX, IDC_EDIT4, m_dRMedOkr);
  642. DDX_Text(pDX, IDC_EDIT5, m_dRBigVirez);
  643. DDX_Text(pDX, IDC_EDIT6, m_dRBigOkr);
  644. DDX_Text(pDX, IDC_EDIT7, m_dGlubMalVirez);
  645. DDX_Text(pDX, IDC_EDIT8, m_dGlubMedVirez);
  646. DDX_Text(pDX, IDC_EDIT9, m_dHightBigOkr);
  647. DDX_Text(pDX, IDC_EDIT10, m_dGlubVneshVirez);
  648. DDX_Text(pDX, IDC_EDIT11, m_dHightMedOkr);
  649. DDX_Text(pDX, IDC_EDIT12, m_dHightSmallOkr);
  650. DDX_Text(pDX, IDC_EDIT13, m_nZb);
  651. DDX_Text(pDX, IDC_EDIT15, m_Shir1);
  652. DDX_Text(pDX, IDC_EDIT16, m_Shir2);
  653. }
  654.  
  655. BEGIN_MESSAGE_MAP(CKursachDlg, CDialog)
  656. ON_WM_SYSCOMMAND()
  657. ON_WM_PAINT()
  658. ON_WM_QUERYDRAGICON()
  659. ON_BN_CLICKED(IDC_BUTTON1, &CKursachDlg::OnBnClickedButton1)
  660. END_MESSAGE_MAP()
  661.  
  662.  
  663. // Обработчики сообщений CKursachDlg
  664.  
  665. BOOL CKursachDlg::OnInitDialog()
  666. {
  667. CDialog::OnInitDialog();
  668.  
  669. // Добавление пункта "О программе..." в системное меню.
  670.  
  671. // IDM_ABOUTBOX должен быть в пределах системной команды.
  672. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  673. ASSERT(IDM_ABOUTBOX < 0xF000);
  674.  
  675. CMenu* pSysMenu = GetSystemMenu(FALSE);
  676. if (pSysMenu != NULL)
  677. {
  678. BOOL bNameValid;
  679. CString strAboutMenu;
  680. bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  681. ASSERT(bNameValid);
  682. if (!strAboutMenu.IsEmpty())
  683. {
  684. pSysMenu->AppendMenu(MF_SEPARATOR);
  685. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  686. }
  687. }
  688.  
  689. // Задает значок для этого диалогового окна. Среда делает это автоматически,
  690. // если главное окно приложения не является диалоговым
  691. SetIcon(m_hIcon, TRUE); // Крупный значок
  692. SetIcon(m_hIcon, FALSE); // Мелкий значок
  693.  
  694. // TODO: добавьте дополнительную инициализацию
  695.  
  696. return TRUE; // возврат значения TRUE, если фокус не передан элементу управления
  697. }
  698.  
  699. void CKursachDlg::OnSysCommand(UINT nID, LPARAM lParam)
  700. {
  701. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  702. {
  703. CAboutDlg dlgAbout;
  704. dlgAbout.DoModal();
  705. }
  706. else
  707. {
  708. CDialog::OnSysCommand(nID, lParam);
  709. }
  710. }
  711.  
  712. // При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,
  713. // чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений,
  714. // это автоматически выполняется рабочей областью.
  715.  
  716. void CKursachDlg::OnPaint()
  717. {
  718. if (IsIconic())
  719. {
  720. CPaintDC dc(this); // контекст устройства для рисования
  721.  
  722. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  723.  
  724. // Выравнивание значка по центру клиентского прямоугольника
  725. int cxIcon = GetSystemMetrics(SM_CXICON);
  726. int cyIcon = GetSystemMetrics(SM_CYICON);
  727. CRect rect;
  728. GetClientRect(&rect);
  729. int x = (rect.Width() - cxIcon + 1) / 2;
  730. int y = (rect.Height() - cyIcon + 1) / 2;
  731.  
  732. // Нарисуйте значок
  733. dc.DrawIcon(x, y, m_hIcon);
  734. }
  735. else
  736. {
  737. CDialog::OnPaint();
  738. }
  739. }
  740.  
  741. // Система вызывает эту функцию для получения отображения курсора при перемещении
  742. // свернутого окна.
  743. HCURSOR CKursachDlg::OnQueryDragIcon()
  744. {
  745. return static_cast<HCURSOR>(m_hIcon);
  746.  
  747. }
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754. void CKursachDlg::OnBnClickedButton1()
  755. {
  756. //Поиск приложения по ID
  757. CLSID InvAppClsid;
  758. HRESULT hRes = CLSIDFromProgID(L"Inventor.Application", &InvAppClsid);
  759. if (FAILED(hRes)) {
  760. pInvApp = nullptr;
  761. return;
  762. }
  763.  
  764. //Проверка запущено ли приложение
  765. CComPtr<IUnknown> pInvAppUnk = nullptr;
  766. hRes = ::GetActiveObject(InvAppClsid, NULL, &pInvAppUnk);
  767. if (FAILED(hRes)) {
  768. // Если не запущено - запускаем
  769. TRACE(L"Could not get hold of an active Inventor, will start a new session\n");
  770. hRes = CoCreateInstance(InvAppClsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(IUnknown), (void **)&pInvAppUnk);
  771. if (FAILED(hRes)) {
  772. pInvApp = nullptr;
  773. return;
  774. }
  775. }
  776.  
  777. // Получаем указатель на запущенное приложение (hRes)
  778. // если происходит повторный запуск то указатель уже существует и с ним не надо ничего делать
  779. if (!pInvApp)
  780. hRes = pInvAppUnk->QueryInterface(__uuidof(Application), (void **)&pInvApp);
  781.  
  782. if (FAILED(hRes)) {
  783. return;
  784. }
  785.  
  786. pInvApp->put_Visible(TRUE);
  787.  
  788. pPartDoc = pInvApp->Documents->MethodAdd(kPartDocumentObject,
  789. pInvApp->FileManager->MethodGetTemplateFile(kPartDocumentObject, kMetricSystemOfMeasure, kGOST_DraftingStandard), true);
  790.  
  791. pPartDoc->DisplayName = _T("Шестерня");
  792.  
  793. pPartDoc->get_ComponentDefinition(&pPartComDef);
  794.  
  795. pInvApp->get_TransientGeometry(&pTransGeom);
  796.  
  797.  
  798. pTransManager = pInvApp->GetTransactionManager();
  799.  
  800. Doc = CComQIPtr <Document>(pPartDoc);
  801.  
  802. pTransManager->raw_StartTransaction(Doc, _T(""), &pTrans);
  803.  
  804. pPartComDef->get_Sketches(&sketches);
  805. pPartComDef->get_Sketches3D(&sketches3D);
  806.  
  807.  
  808. pPartComDef->get_WorkPlanes(&wp);
  809. pPartComDef->get_Features(&ft);
  810. pPartComDef->get_WorkAxes(&wax);
  811. pPartComDef->get_WorkPoints(&wpt);
  812.  
  813. if (m_dRMarOkr - m_dRMalVirez < 0.15)
  814. {
  815. AfxMessageBox(_T("Ошибка! Радиус малой окружности должен быть не меньше радиуса малого выреза"));
  816. return;
  817. }
  818. if (m_dGlubVneshVirez <= 0 || m_dRMalVirez <= 0 || m_dRMarOkr <= 0 || m_dHightSmallOkr <= 0 || m_dRMedOkr <= 0 || m_dRBigVirez <= 0 || m_dRBigOkr <= 0
  819. || m_dHightBigOkr <= 0 || m_dRMedVirez <= 0 || m_dGlubMedVirez <= 0)
  820. {
  821. AfxMessageBox(_T("Ошибка! Все параметры кроме начального не могут быть равны 0 или быть меньше 0."));
  822. return;
  823.  
  824. }
  825. if (m_dRMarOkr >= m_dRBigOkr || m_dRMarOkr >= m_dRMedOkr || m_dRMedOkr >= m_dRBigOkr)
  826. {
  827. AfxMessageBox(_T("Ошибка! Параметры малой окр не должны быть больше средней и большой."));
  828. return;
  829. }
  830. if (m_nZb >= 80 || m_nZb <= 0)
  831. {
  832. AfxMessageBox(_T("Ошибка! Количество зубев должно быть больше 0 и меньше 80"));
  833. return;
  834. }
  835. if (m_Shir1 <= 0 || m_Shir2 <= 0)
  836. {
  837. AfxMessageBox(_T("Ошибка! Ширена вырезов для зубьев не должна быть меньше 1"));
  838. return;
  839. }
  840. if (m_Shir1 >= m_Shir2)
  841. {
  842. AfxMessageBox(_T("Ошибка! Внешняя ширина должна быть больше внутренней "));
  843. return;
  844. }
  845.  
  846. PlanarSketch *pSketch;
  847. sketches->raw_Add(wp->GetItem(3), false, &pSketch);
  848. SketchPointPtr point[12];
  849. SketchLinePtr lines[12];
  850.  
  851.  
  852. SketchPoints *skPoints;
  853. SketchLines *skLines;
  854. Profiles *skProfiles;
  855.  
  856.  
  857. pSketch->get_SketchPoints(&skPoints);
  858. pSketch->get_SketchLines(&skLines);
  859. pSketch->get_Profiles(&skProfiles);
  860.  
  861. UpdateData();
  862.  
  863. point[0] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dGlubMalVirez, m_dRMalVirez), false);
  864. point[1] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dGlubMalVirez, m_dRMarOkr), false);
  865. point[2] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dHightSmallOkr, m_dRMarOkr), false);
  866. point[3] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dHightSmallOkr, m_dRMedOkr), false);
  867. point[4] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dHightMedOkr, m_dRMedOkr), false);
  868. point[5] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dHightMedOkr, m_dRBigVirez), false);
  869. point[6] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dGlubVneshVirez, m_dRBigVirez), false);
  870. point[7] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dGlubVneshVirez, m_dRBigOkr), false);
  871. point[8] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dHightBigOkr, m_dRBigOkr), false);
  872. point[9] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dHightBigOkr, m_dRMedVirez), false);
  873. point[10] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dGlubMedVirez, m_dRMedVirez), false);
  874. point[11] = skPoints->MethodAdd(pTransGeom->MethodCreatePoint2d(m_dGlubMedVirez, m_dRMalVirez), false);
  875.  
  876. lines[0] = skLines->MethodAddByTwoPoints(point[0], point[1]);
  877. lines[1] = skLines->MethodAddByTwoPoints(point[1], point[2]);
  878. lines[2] = skLines->MethodAddByTwoPoints(point[2], point[3]);
  879. lines[3] = skLines->MethodAddByTwoPoints(point[3], point[4]);
  880. lines[4] = skLines->MethodAddByTwoPoints(point[4], point[5]);
  881. lines[5] = skLines->MethodAddByTwoPoints(point[5], point[6]);
  882. lines[6] = skLines->MethodAddByTwoPoints(point[6], point[7]);
  883. lines[7] = skLines->MethodAddByTwoPoints(point[7], point[8]);
  884. lines[8] = skLines->MethodAddByTwoPoints(point[8], point[9]);
  885. lines[9] = skLines->MethodAddByTwoPoints(point[9], point[10]);
  886. lines[10] = skLines->MethodAddByTwoPoints(point[10], point[11]);
  887. lines[11] = skLines->MethodAddByTwoPoints(point[11], point[0]);
  888.  
  889. //создаем профиль для 3D построений.
  890. Profile *pProfile;
  891. skProfiles->raw__AddForSolid(&pProfile);
  892.  
  893. RevolveFeatures *ftRevolve;
  894. ft->get_RevolveFeatures(&ftRevolve); //указатель на коллекцию вращений в документе
  895. //добавляем новое вращение
  896. RevolveFeaturePtr revolve1 = ftRevolve->MethodAddFull(pProfile, wax->GetItem(1),
  897. kJoinOperation);
  898.  
  899. //создаем смещенную плоскость для эскиза зубца
  900. wp->MethodAddByPlaneAndOffset(wp->GetItem(1), m_dHightSmallOkr / 2.f, true);
  901.  
  902. //эскиз для построения зуба
  903. PlanarSketch *pSketch3;
  904. sketches->raw_Add(wp->GetItem(1), false, &pSketch3);
  905. SketchPointPtr point3[4];
  906. SketchLinePtr lines3[4];
  907. SketchPoints *skPoints3;
  908. SketchLines *skLines3;
  909. pSketch3->get_SketchPoints(&skPoints3);
  910. pSketch3->get_SketchLines(&skLines3);
  911. point3[0] = skPoints3->MethodAdd(pTransGeom->MethodCreatePoint2d(0 ,
  912. -m_dRBigOkr), false);
  913. point3[1] = skPoints3->MethodAdd(pTransGeom->MethodCreatePoint2d(m_Shir2,
  914. -m_dRBigOkr), false);
  915. point3[2] = skPoints3->MethodAdd(pTransGeom->MethodCreatePoint2d(m_Shir1
  916. , -m_dRBigVirez * 0.9 ), false);
  917. point3[3] = skPoints3->MethodAdd(pTransGeom->MethodCreatePoint2d(0 , -m_dRBigVirez), false);
  918.  
  919.  
  920. lines3[0] = skLines3->MethodAddByTwoPoints(point3[0], point3[1]);
  921. lines3[1] = skLines3->MethodAddByTwoPoints(point3[1], point3[2]);
  922. lines3[2] = skLines3->MethodAddByTwoPoints(point3[2], point3[3]);
  923. lines3[3] = skLines3->MethodAddByTwoPoints(point3[3], point3[0]);
  924. Profiles *skProfiles3;
  925. pSketch3->get_Profiles(&skProfiles3);
  926. Profile *pProfile3;
  927. skProfiles3->raw__AddForSolid(&pProfile);
  928.  
  929.  
  930.  
  931. ExtrudeFeatures *ftExtrude;
  932. ft->get_ExtrudeFeatures(&ftExtrude);
  933.  
  934.  
  935. ExtrudeFeaturePtr extrude1 = ftExtrude->MethodAddByDistanceExtent(pProfile, m_dHightMedOkr * 0.7 , kPositiveExtentDirection, kCutOperation);
  936. pTrans->MethodEnd();
  937.  
  938. // множим зубья
  939. ObjectCollection *pCollection;
  940. pInvApp->TransientObjects->raw_CreateObjectCollection(vtMissing, &pCollection);
  941. pCollection->MethodAdd(extrude1);
  942. CircularPatternFeatures *pCircPatFeat;
  943. ft->get_CircularPatternFeatures(&pCircPatFeat);
  944. CircularPatternFeature *circFeat = pCircPatFeat->MethodAdd(pCollection, wax->GetItem(1),
  945. true, m_nZb, "360 град", true, kIdenticalCompute);
  946. }
  947.  
  948. ______________________________________________________________________________________________________________________________________
  949.  
  950. #include <iostream>
  951. #include <cmath>
  952.  
  953. float lenght(float x, float y) {
  954. return sqrtf((x * x) + (y * y));
  955. }
  956.  
  957. int main() {
  958.  
  959. setlocale(LC_ALL, "RUS");
  960.  
  961. FILE *file;
  962.  
  963. fopen_s(file, "1.dat", "r"); // Открываем файл
  964.  
  965. char buff[100]; // Буфер
  966.  
  967. float points[2][100]; // Массив точек!
  968.  
  969. int i = 0; // Счетчик
  970.  
  971. float x, y;
  972.  
  973. while(fgets(buff, 100, file)) {
  974.  
  975. sscanf_s(buff, "%f %f", &x, &y);
  976.  
  977. points[0][i] = x;
  978. points[1][i] = y;
  979.  
  980. i++;
  981. }
  982.  
  983. // Определяем область принадлежности:
  984.  
  985. int n;
  986.  
  987. float radius = 2.f;
  988.  
  989. for (int j = 0; j < i; j++) {
  990. x = points[0][j];
  991. y = points[0][j];
  992.  
  993. if (y >= 0) {
  994. if (y <= 1.f && (x >= -1.f || x <= 1.f)) {
  995. n = 3;
  996. } else {
  997. if (lenght(x, y) <= radius) {
  998. n = 4;
  999. } else {
  1000. n = 1;
  1001. }
  1002. }
  1003. } else {
  1004. if (y >= -1.f && (x >= -1.f || x <= 1.f)) {
  1005. n = 3;
  1006. } else {
  1007. if (lenght(x, y) <= radius) {
  1008. n = 4;
  1009. } else {
  1010. n = 2;
  1011. }
  1012. }
  1013. }
  1014.  
  1015. std::cout << "Точка " << j + 1 << ": (" << x <<
  1016. ";" << y << ") в зоне " << n << std::endl;
  1017. }
  1018.  
  1019. fclose(file);
  1020.  
  1021. system("pause");
  1022.  
  1023. return 0;
  1024. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement