Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
1

Конструкторы классов

27.12.2012, 23:59. Показов 942. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобраться с классами, не пойму как мне сделать правильно конструкторы класса Application,выдвёт ошибки в его конструкторе, помогите исправить пожалуйста:


2 IntelliSense: no instance of constructor "Quadrangle::Quadrangle" matches the argument list
Error 1 error C2664: 'Quadrangle::Quadrangle(Point,Point,Point,Point)' : cannot convert parameter 1 from 'int' to 'Point'


есть класс точки Point

класс четрыхугольник Quadrangle

класс приложение Application

C++
1
2
3
4
5
6
7
8
9
10
11
12
//Point.h
#pragma once
class Point{
public:
    double x;
    double y;
    
    Point();//Конструктор по умолчанию    
    Point(double x,double y);//Конструктор инициализации
    Point(const Point &a);//Конструктор копии
    
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Quadrangle.h
#pragma once
#include "stdafx.h"
#include "Point.h"
 
 
 
 
class Quadrangle{
public:
    Point a,b,c,e;
 
    Quadrangle();//Конструктор по умолчанию
    Quadrangle(Point A,Point B, Point C, Point E);//Конструктор инициализации
    double sguare();//Площадь прямоугольника
    double sguareMK (double count1, double n);//Площадь по методу Монте-Карло
    double sguaretrapeze ();//Площадь трапеции
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//Applicaton.h
#pragma once
#include "stdafx.h"
#include "Point.h"
#include "Quadrangle.h"
 
class Application{
public:
    Quadrangle quadrangle;  
    Application();//Конструктор по умолчанию  
    Application(Quadrangle quadrangle1);//Конструктор инициализации
    double MK();
};
C++
1
2
3
4
5
6
//Point.cpp
#include "stdafx.h"
#include "Point.h"
Point::Point():x(0),y(0){}
Point::Point(double X, double Y):x(X),y(Y){}
Point::Point(const Point&a): x(a.x),y(a.y){}
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
//Quadrrangle.cpp
#pragma once
#include "stdafx.h"
#include "Point.h"
#include "Quadrangle.h"
 
//Конструкторs класса
Quadrangle::Quadrangle():a(0,0),b(0,0),c(0,0),e(0,0){}
Quadrangle::Quadrangle(Point A,Point B, Point C, Point E):a(A),b(B),c(C),e(E){}
//Площадь прямоугольника
double Quadrangle::sguare(){
    double sguare;
    if(e.x>=c.x)
        sguare=(e.x-a.x)*(b.y-a.y);
    else 
        sguare=(c.x-a.x)*(b.y-a.y);
    //double sguare=(max(c.x,e.x)-min(a.x,b.x))*(b.y-a.y);
    return sguare;
}
//Площадь Монте-Карло
double Quadrangle::sguareMK (double count1, double n)
{
    double sguare2=(double)sguare()*((double)count1/n);
    return sguare2;
}       
//Площадь трапеции
double Quadrangle::sguaretrapeze ()
{
    double sguare3=0.5*(b.y-a.y)*((c.x-b.x)+(e.x-a.x));
    return sguare3;
}
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//App;ication.cpp
#pragma once
#include "stdafx.h"
#include "Point.h"
#include "Quadrangle.h"
#include "Application.h"
#include <iostream>
#include <iomanip>
#include <time.h>
#include <windows.h>
#include <math.h>
 
using namespace std;
    
    Application::Application():quadrangle(0,0,0,0){}
    Application::Application(Quadrangle Quadrangle1):quadrangle(Quadrangle1){}
 
 
 
double myRand(double low, double high) {
    return low+(double)rand()/RAND_MAX*(high-low);
}
 
//int CheckCoords(Point &a, Point&b, Point&c, Point&e)
int CheckCoords(Application &Apl )
{
    //1-e>b и e.x<c.x;  2 - e.x>c.x;  3 - e.x==c.x;  -1 - неправильные координаты
    if(Apl.quadrangle.e.x<=Apl.quadrangle.a.x)
        return -1;
    if(Apl.quadrangle.c.x<=Apl.quadrangle.b.x)
        return -1;
    if(Apl.quadrangle.a.x >= Apl.quadrangle.b.x)
        return -1;
    if((Apl.quadrangle.e.x > Apl.quadrangle.b.x)&&(Apl.quadrangle.e.x < Apl.quadrangle.c.x))
        return 1;
    if(Apl.quadrangle.e.x > Apl.quadrangle.c.x)
        return 2;
    if(Apl.quadrangle.e.x == Apl.quadrangle.c.x)
        return 3;
    return -1;
}
 
//Третий вариант
//void f(Point &a, Point&b, Point&c, Point&e)
void MK(Application &Apl)
{
    //int mode = CheckCoords(a,b,c,e);
    int mode = CheckCoords(Apl);
    double k1,b1,k2,b2,bx,bxx;
    double sguare, sguare2,sguare3,pogr,timemc;
    int count1;
    k1=(Apl.quadrangle.b.y-Apl.quadrangle.a.y)/(Apl.quadrangle.b.x-Apl.quadrangle.a.x);
    b1=Apl.quadrangle.b.y- k1 * Apl.quadrangle.b.x;
    if(mode != 3)
    k2=(Apl.quadrangle.c.y-Apl.quadrangle.e.y)/(Apl.quadrangle.c.x-Apl.quadrangle.e.x);
    else
    k2=0;
    b2 =Apl.quadrangle.e.y- k2 * Apl.quadrangle.e.x;
    
    if(mode == -1)
    {
        cout<<"Введены неправильные координаты!"<<endl;
        return;
    }
            
 
    cout<<"_______________________________________________________________________________"<<endl;
    cout<<"| Количество"<<"|Количество"<<"|Площадь Методом"<<"|        "<<"| Погрешность:"<<"| Время          |"<<endl;
    cout<<"|   точек,n:"<<"| попавших "<<"|  Монте Карло: "<<"|Площадь:"<<"|     d,%:    "<<"| выполнения,мс: |"<<endl;
    cout<<"|           "<<"| точек,m: "<<"|               "<<"|        "<<"|             "<<"|                |"<<endl;
    cout<<"_______________________________________________________________________________"<<endl;
    for (int n=1000;n<10000001;n=n*10)
    {
        count1=0;
        clock_t tStart = clock();
        Point xy;
        for (int i=0;i<n;i++)
        {
            xy.x=myRand(min(Apl.quadrangle.a.x,Apl.quadrangle.b.x),max(Apl.quadrangle.c.x,Apl.quadrangle.e.x));
            xy.y=myRand(Apl.quadrangle.a.y,Apl.quadrangle.b.y);
            bx=xy.y-k1*xy.x;
            bxx=xy.y-k2*xy.x;
            switch(mode)
            {
            case 1:
                if ((bx<=b1) && (bxx>=b2))
                {
                    count1++;
                }
                break;
            case 2:
                if((bx<=b1) && (bxx<=b2))
                {
                    count1++;
                }
                break;
            case 3:
                if ((bx<=b1))
                {
                    count1++;
                }
                break;
            }
 
        }
    
        //sguare=(max(c.x,e.x)-min(a.x,b.x))*(b.y-a.y);//площадь прямоугольника
        sguare=Apl.quadrangle.sguare();
        //sguare2=(double)sguare*((double)count1/n);//площадь Монте Карло
        sguare2=Apl.quadrangle.sguareMK(count1,n);
        //sguare3=0.5*(b.y-a.y)*((c.x-b.x)+(e.x-a.x));//площадь обычная
        sguare3=Apl.quadrangle.sguaretrapeze();
        pogr=abs(((sguare3-sguare2)/sguare3) *100) ;
        double m= (double)(clock() - tStart)/CLOCKS_PER_SEC;
        double times=m*1000;
        cout<<"|"<<setprecision(2)<<setiosflags(ios::fixed|ios::showpoint)<<setw(11)<<n<<"|"<<setw(10)<<count1<<"|"<<setw(15)<<sguare2<<"|"<<setw(8)<<sguare3<<"|"<<setw(13)<<pogr<<"|"<<setw(16)<<times<<"|"<<endl;
        cout<<"________________________________________________________________________________"<<endl;
        }       
}
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//main.cpp
#include "stdafx.h"
#include "Point.h"
#include "Quadrangle.h"
#include "Application.h"
#include <iostream>
#include <time.h> 
#include <stdlib.h>
#include <math.h>
#include <windows.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    srand(time(NULL));
    Application Apl;
    Point xy;
    int v;
            cout<<"                           Метод Монте-Карло           "<<endl;
            cout<<"^ Y"<<endl;
            cout<<"|                   B               C           "<<endl;
            cout<<"|      _________________________________________"<<endl;
            cout<<"|      |           #################           |"<<endl;
            cout<<"|      |          ################ # #         |"<<endl;
            cout<<"|      |         ###############   #  #        |"<<endl;
            cout<<"|      |        ###############    #   #       |"<<endl;
            cout<<"|      |       ###############     #    #      |"<<endl;
            cout<<"|      |      ###############      #     #     |"<<endl;
            cout<<"|      |     ###############       #      #    |"<<endl;
            cout<<"|      |    ###############        #       #   |"<<endl;
            cout<<"|      |   ###############         #        #  |"<<endl;
            cout<<"|      |  ###############          #         # |"<<endl;
            cout<<"|      | ###############           #          #|"<<endl;
            cout<<"|      |#######################################|"<<endl;
            cout<<"_______|_______________________________________|_____>"<<endl;
            cout<<"0      A               E                       D        X"<<endl;
         
            cout<<"Введите номер действия, которое необходимо выполнить"<<endl;
            cout<<"1 - Ввести координаты вручную"<<endl;
            cout<<"2 - Контрольный пример 1 (B < E < C)"<<endl;
            cout<<"3 - Контрольный пример 2 (E > C)"<<endl;
            cout<<"4 - Контрольный пример 3 (E = C)"<<endl;
            cout<<"5 - Случайные координаты"<<endl;
            cout<<"6 - Пересчитать"<<endl;
            cout<<"7 - Выход"<<endl<<endl;
        
            do
            {
                cout<<"Номер действия: ";
                
                cin>>v;
                        
    switch(v)
    {
    case 1:
        cout<<"Введите координаты точек A,B,C,E"<<endl;   
        
        cout<<"Координans точки A(x,y)"<<endl;
        cout<<"x=";cin>>Apl.quadrangle.a.x;cout<<endl;cout<<"y=";cin>>Apl.quadrangle.a.y;cout<<endl;
        cout<<"Координans точки B(x,y)"<<endl;
        cout<<"x=";cin>>Apl.quadrangle.b.x;cout<<endl;cout<<"y=";cin>>Apl.quadrangle.b.y;cout<<endl;
        cout<<"Координans точки C(x,y)"<<endl;
        cout<<"x=";cin>>Apl.quadrangle.c.x;cout<<endl;cout<<"y=";cin>>Apl.quadrangle.c.y;cout<<endl;
        cout<<"Координans точки E(x,y)"<<endl;
        cout<<"x=";cin>>Apl.quadrangle.e.x;cout<<endl;cout<<"y=";cin>>Apl.quadrangle.e.y;cout<<endl;
        
        
        Apl.MK();
        break;
    case 2:
        Apl.quadrangle.a.x=100;Apl.quadrangle.a.y=100;Apl.quadrangle.b.x=200;Apl.quadrangle.b.y=300;Apl.quadrangle.c.x=500;Apl.quadrangle.c.y=300;Apl.quadrangle.e.x=400;Apl.quadrangle.e.y=100;
        //f(s.a,s.b,s.c,s.e);
        Apl.MK();
        break;
    case 3:
        Apl.quadrangle.a.x=100;Apl.quadrangle.a.y=100;Apl.quadrangle.b.x=200;Apl.quadrangle.b.y=300;Apl.quadrangle.c.x=500;Apl.quadrangle.c.y=300;Apl.quadrangle.e.x=800;Apl.quadrangle.e.y=100;
        
        Apl.MK();
        break;
    case 4:
        Apl.quadrangle.a.x=100;Apl.quadrangle.a.y=100;Apl.quadrangle.b.x=200;Apl.quadrangle.b.y=300;Apl.quadrangle.c.x=500;Apl.quadrangle.c.y=300;Apl.quadrangle.e.x=500;Apl.quadrangle.e.y=100;
        
        Apl.MK();
        break;
    case 5:
        Apl.quadrangle.a.x=rand()%1000;Apl.quadrangle.a.y=rand()%1000;Apl.quadrangle.b.x=rand()%1000+Apl.quadrangle.a.x;Apl.quadrangle.b.y=rand()%1000+Apl.quadrangle.a.y;Apl.quadrangle.c.x=rand()%1000+Apl.quadrangle.b.x;Apl.quadrangle.c.y=Apl.quadrangle.b.y;Apl.quadrangle.e.x=rand()%1000+Apl.quadrangle.b.x;Apl.quadrangle.e.y=Apl.quadrangle.a.y;
        cout<<Apl.quadrangle.a.x<<" "<<Apl.quadrangle.a.y<<" "<<Apl.quadrangle.b.x<<" "<<Apl.quadrangle.b.y<<" "<<Apl.quadrangle.c.x<<" "<<Apl.quadrangle.c.y<<" "<<Apl.quadrangle.e.x<<" "<<Apl.quadrangle.e.y;
        
        Apl.MK();
        break;
    case 6:
        
        Apl.MK();
        break;
    
    }
          }
    while( v != 7);
    
    exit(0);
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.12.2012, 23:59
Ответы с готовыми решениями:

Конструкторы классов
Схематично: class A {public: A() {}//конструктор А . . . //методы класса А } class B:...

Наследование классов и конструкторы
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; class form { public: ...

Конструкторы классов в неявно подключенных DLL
Добрый день, господа программисты! Столкнулся с парой проблем при работе с DLL При написании...

Классы, конструкторы, деструкторы, методы классов
Доброго времени суток , Господа программисты. :) Очень нужна Ваша помощь. Написал программу, но...

1
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
28.12.2012, 00:51 2
C++
1
Application::Application():quadrangle(0,0,0,0){}
в конструктор вы передаете 0 - это целое число, тип int
а по описанию конструктора, должен быть тип Point
1
28.12.2012, 00:51
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2012, 00:51
Помогаю со студенческими работами здесь

Еще немного про конструкторы обобщенных классов
Пытаюсь проинициализировать объект обобщенного класса, параметром которого может выступать ссылка....

Как создавать конструкторы, что бы использовать переменные из любых классов?
В общем пишу программку, суть в том , что я должен научиться спокойно использовать переменные из...

Что такое конструкторы классов, копирования, по умолчанию с запретом неявного приведения аргументов?
Что такое конструкторы классов, конструкторы копирования, конструкторы по умолчанию и конструкторы...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru