Форум программистов, компьютерный форум CyberForum.ru

Перепишите пожалуйста на C++ - C++

Восстановить пароль Регистрация
 
mazarinik
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 17
08.10.2013, 23:25     Перепишите пожалуйста на C++ #1
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.Button1Click(Sender: TObject);
var r5,x1,y1,x2,y2,x3,y3,x4,y4:integer;
    l,n,r4,r3,r1,r2:integer;
begin
   x1:=200;y1:=200;
   x2:=200;y2:=50;
   x3:=50;y3:=50;
   r1:=Round(SQRt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
   r2:=Round(SQRt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)));
   r3:=Round(SQrt(r2*r2+r1*r1));
   if (x1-x2)>0 then
   l:=Round(arctan((y1-y2)/(x1-x2))*180/pi) else l:=90;
   // находим угол наклона сторны A
   for n:=0 to 4 do begin
     x4:=x2+Round(cos((45+l)*pi/180)*r3)*GetNt(n).a;
     y4:=y2+Round(sin((45+l)*pi/180)*r3)*GetNt(n).b;
     r4:=Round(SQRt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)));
     r5:=Round(SQRt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)));
     if (r4=r1) and (r5=r2) then begin
       Showmessage(inttostr(x4)+'  '+inttostr(y4));
       break;
     end;
   end;
   myDrawRect(x1,y1,x2,y2,x3,y3,x4,y4);
 
 
end;
Добавлено через 33 минуты
Пожалуйста очень нужно, умоляю просто
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
08.10.2013, 23:36     Перепишите пожалуйста на C++ #2
Как работает функция myDrawRect? Как организована структура для GetNt и чем она заполнена? Не изучал Delphi, но вот код для консоли. Может пригодится(без гарантий).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <math.h>
#define pi 3.14159265358979323846
using namespace std;
void myDrawRect(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4) {
    printf("то, что myDrawRect(%d,%d,%d,%d,%d,%d,%d,%d) ?",x1,y1,x2,y2,x3,y3,x4,y4);
}
struct MyStruct {
    int a;
    int b;
};
int main() {
    int r5,x1,y1,x2,y2,x3,y3,x4,y4;
    int l,n,r4,r3,r1,r2;
    MyStruct GetNt [5];
    setlocale(LC_ALL,"rus");
    x1=200; y1=200;
    x2=200; y2=50;
    x3=50;  y3=50;
 
    for(int i=0; i<=4; i++) { // как заполнена структура GetNt? Заполним 1-ми
        GetNt[i].a=1;
        GetNt[i].b=1;
    }
 
    r1=(int)ceil(sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))));
    r2=(int)ceil(sqrt((double)((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))));
    r3=(int)ceil(sqrt((double)(r2*r2+r1*r1)));
 
    if((x1-x2)>0)
        l=(int)ceil(atan((double)((y1-y2)/(x1-x2))*180/pi));
    else
        l=90;
    // находим угол наклона сторны A
    for(n=0; n<=4;n++) {
         x4=x2+(int)ceil(cos((45+l)*pi/180)*r3)*GetNt[n].a;  // структура GetNt - нужно инициализировать
         y4=y2+(int)ceil(sin((45+l)*pi/180)*r3)*GetNt[n].b;  // структура GetNt - нужно инициализировать
         r4=(int)ceil(sqrt((double)((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4))));
         r5=(int)ceil(sqrt((double)((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1))));
         if ( r4==r1 && r5==r2) {
             printf("%d  %d\n",x4,y4);
            break;
        }
   }
   myDrawRect(x1,y1,x2,y2,x3,y3,x4,y4);
   getchar();
}
mazarinik
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 17
09.10.2013, 00:55  [ТС]     Перепишите пожалуйста на C++ #3
Спасибо огромное

Добавлено через 1 час 7 минут
Не подскажите пожалуйста, я правильно изменил код для решения этой задачи ?

Даны действительные числа x1, y1, x2, y2, x3, y3. Известно, что точка с координатами (x1, y1), (x2, y2), (x3, y3), являться вершинами прямоугольника. Определить координаты четвертой вершины прямоугольника


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <math.h>
#define pi 3.14159265358979323846
 
 
void main() {
    float r5,x1,y1,x2,y2,x3,y3,x4,y4, l,n,r4,r3,r1,r2;;
    
    for(int i=0; i<=4; i++) { 
        a=1;
        b=1;
    }
 
    r1=(int)ceil(sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))));
    r2=(int)ceil(sqrt((double)((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))));
    r3=(int)ceil(sqrt((double)(r2*r2+r1*r1)));
 
    if((x1-x2)>0)
        l=(int)ceil(atan((double)((y1-y2)/(x1-x2))*180/pi));
    else
        l=90;
    // находим угол наклона сторны A
    for(n=0; n<=4;n++) {
         x4=x2+(int)ceil(cos((45+l)*pi/180)*r3)*n*a; 
         y4=y2+(int)ceil(sin((45+l)*pi/180)*r3)*n*b;  
         r4=(int)ceil(sqrt((double)((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4))));
         r5=(int)ceil(sqrt((double)((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1))));
         if ( r4==r1 && r5==r2) {
             printf("Koordinati vershini ravni: &d &d",x4,y4);
            break;
        }
   }
  
}
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
09.10.2013, 08:57     Перепишите пожалуйста на C++ #4
Цитата Сообщение от mazarinik Посмотреть сообщение

C++
1
2
3
4
    for(int i=0; i<=4; i++) { 
        a=1;
        b=1;
    }
Что это за цикл такой? И что за переменные? по моему они даже не объявлены..
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
09.10.2013, 16:14     Перепишите пожалуйста на C++ #5
Цитата Сообщение от mazarinik Посмотреть сообщение
Спасибо огромное

Добавлено через 1 час 7 минут
Не подскажите пожалуйста, я правильно изменил код для решения этой задачи ?

Даны действительные числа x1, y1, x2, y2, x3, y3. Известно, что точка с координатами (x1, y1), (x2, y2), (x3, y3), являться вершинами прямоугольника. Определить координаты четвертой вершины прямоугольника


C++
1
...
Если правильно понял, то даны 3 точки с координатами (x1, y1), (x2, y2), (x3, y3), где x1, y1, x2, y2, x3, y3 - действительные числа. Обозначим их A,B,C соответственно. Они являются вершинами прямоугольника. Пусть точка D - четвертая вершина прямоугольника. Определить её координаты. Изобразим наглядно.

oY
^
|.......B(x2,y2)------C( x3,y3)
|................|.\.......|
|................|..\......|
|................|...\.....|
|................|....\....|
|................|.....\...|
|................|......\..|
|................|.......\.|
|................|........\|
|.......A(x1,y1)------| D(x4,y4) - искомая точка
0---------------------------------------------------> oX

AD = BC = C-B = (x3-x2; y3-y2)
D = AD + A = (x3-x2; y3-y2) + (x1; y1) = (x1-x2+x3; y1-y2+y3)

, где AD,BC,AD - векторы(буду признателен, если кто-нибудь подскажет, как делать математические вставки(н-р векторное обозначение) на языке, подобном LaTeX)

таким образом координаты точки D(x1-x2+x3; y1-y2+y3).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main() {
    double x1,y1,x2,y2,x3,y3,x4,y4;
    setlocale(LC_ALL,"rus");
    cout << "Введите x1: "; cin >> x1;
    cout << "Введите y1: "; cin >> y1;
    cout << "Введите x2: "; cin >> x2;
    cout << "Введите y2: "; cin >> y2;
    cout << "Введите x3: "; cin >> x3;
    cout << "Введите y3: "; cin >> y3;
    x4=x1-x2+x3;
    y4=y1-y2+y3;
    printf("(x1,y1),(x2,y2),(x3,y3),(x4,y4)=(%d,%d),(%d,%d),(%d,%d),(%d,%d) \n",
        x1,y1,x2,y2,x3,y3,x4,y4);
   getchar();
   getchar();
}
Добавлено через 8 минут
Забыл исправить printf:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main() {
    double x1,y1,x2,y2,x3,y3,x4,y4;
    setlocale(LC_ALL,"rus");
    cout << "Введите x1: "; cin >> x1;
    cout << "Введите y1: "; cin >> y1;
    cout << "Введите x2: "; cin >> x2;
    cout << "Введите y2: "; cin >> y2;
    cout << "Введите x3: "; cin >> x3;
    cout << "Введите y3: "; cin >> y3;
    x4=x1-x2+x3;
    y4=y1-y2+y3;
    printf("(x1,y1),(x2,y2),(x3,y3),(x4,y4)=(%f,%f),(%f,%f),(%f,%f),(%f,%f) \n",
        x1,y1,x2,y2,x3,y3,x4,y4);
   getchar();
   getchar();
}
Yandex
Объявления
09.10.2013, 16:14     Перепишите пожалуйста на C++
Ответ Создать тему
Опции темы

Текущее время: 08:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru