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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
beg1ns
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 13
#1

подскажите как исправить ошибки в коде C++(oop) - C++

09.04.2013, 00:47. Просмотров 501. Ответов 5
Метки нет (Все метки)

Программа реализует класс "треугольник" и всевозможные методы для него
помогите исправить ошибки

lb_1_oop_sam.h
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
#ifndef lb_1_oop_sam_h
#define lb_1_oop_sam_h
 
//Структура "триугольник"
    class triangle
    {
        struct point
        {
            int x;
            int y;
            
            //конструктор объекта "точка" по умолчанию
            point()
            {
                x=y=0;
            }
        };
        point A;
        point B;
        point C;
        //Функция вычисления длины ребер треугольника
        void get_Length(double &a,double &b,double &c);
    public:
        //Конструктор объекта "треугольник"
        void set_triangle(int x1, int y1, int x2, int y2, int x3, int y3);
        //Функция вычисления периметра
        double get_perimeter();
        //Функция вычисления площади
        double get_area();
        //функция доступа к координатам
        inline void get_ABC()const;
        //функция вычисления угла
        double get_angle(int code);
        //функции определение вида треугольника
        bool is_rectangulor();
        bool is_isosceles();
        bool is_equilateral();
        //функции вычисления радиусов вписанной и описанной окружностей
        double get_r();
        double get_R();
    };
#endif
lb_1_oop_sam.cpp
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
#include<iostream>
#include<math.h>
#include"lb_1_oop_sam.h"
//Конструктор объекта "треугольник" по умолчанию
void triangle::set_triangle(int x1, int y1, int x2, int y2, int x3, int y3)
{
    A.x=x1;
    A.y=y1;
    B.x=x2;
    B.y=y2;
    C.x=x3;
    C.y=y3;
}
//Функция вычисления длины ребер треугольника
void triangle::get_Length(double &a,double &b,double &c)
{
    a=sqrt(((A.x-B.x)*(A.x-B.x))+((A.y-B.y)*(A.y-B.y)));
    b=sqrt(((B.x-C.x)*(B.x-C.x))+((B.y-C.y)*(B.y-C.y)));
    c=sqrt(((C.x-A.x)*(C.x-A.x))+((C.y-A.y)*(C.y-A.y)));
}
//Функция вычисления периметра
double triangle::get_perimeter()
{
    double a,b,c;
    get_Length(double &a,double &b,double &c);
    double P=0;
    return P=a+b+c;
}
//Функция вычисления площади
double triangle::get_area()
{
    double a,b,c;
    get_Length(double &a,double &b,double &c);
    double p=0;
    p=(get_perimeter()/2);
    double S=0;
    return S=sqrt(p*(p-a)*(p-b)*(p-c));
}
//функция доступа к координатам
inline void triangle::get_ABC()const
{
    cout<<"A.x="<<A.x<<'\n'<<"A.y="<<A.y<<'\n'<<"B.x="<<B.x<<'\n'<<"B.y="<<B.y<<'\n'<<"C.x="<<C.x<<'\n'<<"C.y="<<C.y<<'\n';
}
//функция вычисления угла
double get_angle(int code)
{
    double a,b,c;
    get_Length(double &a,double &b,double &c);
    double alph,bet,gam;
    switch(code)
    {
    case 1:
        return alph=acos((((b*b)+(c*c)-(a*a))/(2*b*c)));
    break;
    case 2:
        return bet=acos((((a*a)+(c*c)-(b*b))/(2*a*c)));
    break;
    case 3:
        return gam=acos((((a*a)+(b*b)-(c*c))/(2*a*b)));
    break;
    }
 
}
test_infinity.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<math.h>
#include"lb_1_oop_sam.h"
 
using namespace std;
 
    void main()
{
    traingle t1;
    t1.set_traingle(1,1,2,2,4,1);
    system("pause");
    double p=0;
    return p=t1.get_perimeter();
    
}
Errors:
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
------ Построение начато: проект: triangle, Конфигурация: Debug Win32 ------
  test_infinity.cpp
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(9): error C2065: traingle: необъявленный идентификатор
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(9): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "t1"
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(9): error C2065: t1: необъявленный идентификатор
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(10): error C2065: t1: необъявленный идентификатор
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(10): error C2228: выражение слева от ".set_traingle" должно представлять класс, структуру или объединение
          тип: 'unknown-type'
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(13): error C2065: t1: необъявленный идентификатор
e:\мой файлы\projects\triangle\triangle\test_infinity.cpp(13): error C2228: выражение слева от ".get_perimeter" должно представлять класс, структуру или объединение
          тип: 'unknown-type'
  lb_1_oop_sam.cpp
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(17): error C2668: sqrt: неоднозначный вызов перегруженной функции
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(589): может быть "long double sqrt(long double)"
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(541): или       "float sqrt(float)"
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(127): или       "double sqrt(double)"
          при попытке сопоставить список аргументов "(int)"
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(18): error C2668: sqrt: неоднозначный вызов перегруженной функции
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(589): может быть "long double sqrt(long double)"
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(541): или       "float sqrt(float)"
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(127): или       "double sqrt(double)"
          при попытке сопоставить список аргументов "(int)"
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(19): error C2668: sqrt: неоднозначный вызов перегруженной функции
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(589): может быть "long double sqrt(long double)"
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(541): или       "float sqrt(float)"
          c:\program files\microsoft visual studio 10.0\vc\include\math.h(127): или       "double sqrt(double)"
          при попытке сопоставить список аргументов "(int)"
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(25): error C2144: синтаксическая ошибка: перед "double" требуется ")"
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(25): error C2660: triangle::get_Length: функция не принимает 0 аргументов
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(25): error C2059: синтаксическая ошибка: )
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(33): error C2144: синтаксическая ошибка: перед "double" требуется ")"
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(33): error C2660: triangle::get_Length: функция не принимает 0 аргументов
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(33): error C2059: синтаксическая ошибка: )
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(42): error C2065: cout: необъявленный идентификатор
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(48): error C2144: синтаксическая ошибка: перед "double" требуется ")"
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(48): error C2059: синтаксическая ошибка: )
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(48): error C3861: get_Length: идентификатор не найден
  Создание кода...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 00:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос подскажите как исправить ошибки в коде C++(oop) (C++):

Как исправить ошибки в коде - C++
Не могу понять что не так. Помогите пожалуйста. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using namespace std; ...

подскажите как исправить ошибки - C++
программы рабочие,но при компиляции в Borland C++ выдает кучу ошибок :С что делать? Error LAB8.CPP 1: Unable to open include file...

Исправить ошибки в коде или пояснить как правильно запустить - C++
Добрый вечер,нужна помощь есть текст программы написанный в 2010 с++ ,немогу запустить в 2013,выдает ошибку что неправильная...

Как исправить ошибки. Подскажите пожалуйста! - C++
// пртотипы функций void cr_base(); void pr_base(int n); void cr_child(); void pr_child(); void ov_un(); void main_menu(); ...

пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить - C++
по заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. чтобы избежать шаблона,...

Опытные товарищи, подскажите , как исправить ошибки - C++
Есть след. код. Не могу понять свои ошибки. Пишу 2 раз, так что если там все совсем банально, так и скажите) #include &lt;iostream&gt; using...

5
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.04.2013, 01:06 #2
Нет функции sqrt() для int.
C++
1
2
triangle t1;
t1.set_triangle(1,1,2,2,4,1);
Добавлено через 2 минуты
C++
1
2
3
4
5
6
...
double triangle::get_perimeter()
{
    double a,b,c;
    get_Length(double &a,double &b,double &c);
...
Если здесь вызов функции, то:
C++
1
get_Length(a, b, c);
Добавлено через 4 минуты
C++
1
2
3
//функция вычисления угла
double triangle::get_angle(int code)
{...
Добавлено через 1 минуту
C++
1
return p=t1.get_perimeter();
Если это возврат из main(), то int main().
1
beg1ns
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 13
09.04.2013, 01:39  [ТС] #3
не пойму почему не исправилось:
C++
1
2
3
4
inline void triangle::get_ABC()
{
    cout<<"A.x="<<A.x<<'\n'<<"A.y="<<A.y<<'\n'<<"B.x="<<B.x<<'\n'<<"B.y="<<B.y<<'\n'<<"C.x="<<C.x<<'\n'<<"C.y="<<C.y<<'\n';
}
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(42): error C2065: cout: необъявленный идентификатор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double get_angle(int code)
{
    double a,b,c;
    get_Length(a,b,c);
    double alph,bet,gam;
    switch(code)
    {
    case 1:
        return alph=acos((((b*b)+(c*c)-(a*a))/(2*b*c)));
    break;
    case 2:
        return bet=acos((((a*a)+(c*c)-(b*b))/(2*a*c)));
    break;
    case 3:
        return gam=acos((((a*a)+(b*b)-(c*c))/(2*a*b)));
    break;
    }
 
}
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(48): error C3861: get_Length: идентификатор не найден

Добавлено через 8 минут
e:\мой файлы\projects\triangle\triangle\lb_1_oop_sam.cpp(48): error C3861: get_Length: идентификатор не найден
исправил
а вот с cout<<???
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.04.2013, 01:45 #4
std::cout

Добавлено через 2 минуты
!!!
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
//функция вычисления угла
double triangle::get_angle(int code)
{...
1
beg1ns
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 13
09.04.2013, 01:55  [ТС] #5
alsav22 спасибо большое что показал мне мои глупые ошибки, сплю уже совсем
0
beg1ns
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 13
09.04.2013, 19:17  [ТС] #6
не пойму почему получаются такие значения углов, помогите исправить пожалуйста
lb_1_oop_sam.h
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
#ifndef lb_1_oop_sam_h
#define lb_1_oop_sam_h
 
//Структура "треугольник"
    class triangle
    {
        struct point
        {
            double x;
            double y;
            
            //конструктор объекта "точка" по умолчанию
            point()
            {
                x=y=0;
            }
        };
        point A;
        point B;
        point C;
        //получение вектора
        void get_Vector(point e,point f,point &v);
        //Функция вычисления длины ребер треугольника
        void get_Length(double &a,double &b,double &c);
    public:
        //Конструктор объекта "треугольник"
        void set_triangle(double x1, double y1, double x2, double y2, double x3, double y3);
        //Функция вычисления периметра
        double get_perimeter();
        //Функция вычисления площади
        double get_area();
        //функция доступа к координатам
        void get_ABC();
        //функция вычисления угла
        double get_angle(int code);
        //функции определение вида треугольника
        bool is_rectangulor();
        bool is_isosceles();
        bool is_equilateral();
        //функции вычисления радиусов вписанной и описанной окружностей
        double get_r();
        double get_R();
    };
#endif
lb_1_oop_sam.cpp
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
#include<iostream>
#include<math.h>
#include"lb_1_oop_sam.h"
//Конструктор объекта "треугольник" по умолчанию
void triangle::set_triangle(double x1, double y1, double x2, double y2, double x3, double y3)
{
    A.x=x1;
    A.y=y1;
    B.x=x2;
    B.y=y2;
    C.x=x3;
    C.y=y3;
}
//получение вектора
void triangle::get_Vector(point e,point f,point &v)
{
    v.x=f.x-e.x;
    v.y=f.y-e.y;
}
//Функция вычисления длины ребер треугольника
void triangle::get_Length(double &a,double &b,double &c)
{
    point av,bv,cv;
    get_Vector(A,B,av);
    get_Vector(B,C,bv);
    get_Vector(C,A,cv);
    a=sqrt(pow(av.x,2)+pow(av.y,2));
    b=sqrt(pow(bv.x,2)+pow(bv.y,2));
    c=sqrt(pow(cv.x,2)+pow(cv.y,2));
}
//Функция вычисления периметра
double triangle::get_perimeter()
{
    double a,b,c;
    get_Length(a,b,c);
    double P=0;
    return P=a+b+c;
}
//Функция вычисления площади
double triangle::get_area()
{
    double a,b,c;
    get_Length(a,b,c);
    double p=0;
    p=(get_perimeter()/2);
    double S=0;
    return S=sqrt(p*(p-a)*(p-b)*(p-c));
}
//функция доступа к координатам
void triangle::get_ABC()
{
    std::cout<<"A.x="<<A.x<<'\n'<<"A.y="<<A.y<<'\n'<<"B.x="<<B.x<<'\n'<<"B.y="<<B.y<<'\n'<<"C.x="<<C.x<<'\n'<<"C.y="<<C.y<<'\n';
}
//функция вычисления угла
double triangle::get_angle(int code)
{
    double a,b,c;
    get_Length(a,b,c);
    double angle=0;
    point av,bv,cv;
    get_Vector(A,B,av);
    get_Vector(B,C,bv);
    get_Vector(C,A,cv);
    switch(code)
    {
        case 1:
        {
            angle=acos(fabs((bv.x*cv.x+bv.y*cv.y)/(b*c)))*180/3.14;
            return angle;
            break;
        }
        case 2:
        {
            angle=acos(fabs((cv.x*av.x+cv.y*av.y)/(c*a)))*180/3.14;
            return angle;
            break;
        }
        case 3:
        {
            angle=acos(fabs((av.x*bv.x+av.y*bv.y)/(a*b)))*180/3.14;
            return angle;
            break;
        }
    }
 
 
 
}
//функции вычисления радиусов вписанной и описанной окружностей
        double triangle::get_r()
        {
            double P=get_perimeter();
            double pp=P/2;
            double S=get_area();
            double r=S/pp;
            return r;
        }
 
 
        double triangle::get_R()
        {
            double S=get_area();
            double a,b,c;
            get_Length(a,b,c);
            double R=(a*b*c)/(4*S);
            return R;
        }
test_infinity.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<math.h>
#include"lb_1_oop_sam.h"
 
using namespace std;
 
    void main()
{
    triangle t1;
    t1.set_triangle(1,1,2,2,4,1);
    double p=0;
    p=t1.get_perimeter();
    t1.get_ABC();
    cout<<"P="<<p<<'\n';
    cout<<"S="<<t1.get_area()<<'\n'<<"R="<<t1.get_R()<<'\n'<<"r="<<t1.get_r()<<'\n';
    cout<<"angle:"<<t1.get_angle(1)<<'\n'<<t1.get_angle(2)<<'\n'<<t1.get_angle(3)<<'\n';
    system("pause");
        
}
вот результат
http://www.cyberforum.ru/attachment....1&d=1365520817
0
Миниатюры
подскажите как исправить ошибки в коде C++(oop)  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 19:17
Привет! Вот еще темы с ответами:

Найти ошибки в коде и исправить эти ошибки (Наследование) - C++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Найти ошибки в коде и исправить эти ошибки - C++
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический массив как поле класса) - C++
когда запускаю, пишет что нет прав доступа для записи в память. если писать без класса, то все работает P.S. использую MVS Express 2015...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
09.04.2013, 19:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru