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

Ошибка в программе - C++

Восстановить пароль Регистрация
 
DAgot_
 Аватар для DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
17.10.2010, 22:08     Ошибка в программе #1
Вот код:
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
/*--------------------------------------------------------------- БИБЛИОТЕКИ */
 
#include    <iostream>
#include    <fstream>
#include    <vector>
#include    <math.h>
 
 
/*------------------------------------------------------------------ ДЕФАЙНЫ */
 
 
/*------------------------------------------------------------------- КЛАССЫ */
 
// Класс "точка" (содержит значения координат точки)
class point{
 
public:
 
    double x;
    double y;
 
    point(): x(0), y(0){};
    point(double arg, double f): x(arg), y(f){};
    ~point(){};
};
 
// Класс "Окружность" (содержит значения координат центра окружности и  длины
// её радиуса)
class сircle{
 
public:
 
    double x;
    double y;
    double r;
 
    сircle(): x(0), y(0), r(1){};
    сircle(int arg, int f, int rad): x(arg), y(f), r(rad){};
    ~сircle(){};
};
 
 
/*------------------------------------------------------------------- ПРОЧЕЕ */
 
// Потоки ввода/вывода
std::ifstream in("input.txt");
std::ofstream out("output.txt");
 
сircle tempCircle;
 
int n;
 
int i, j, k;
 
point *v = new point[n];
 
 
/*------------------------------------------------------------------ ФУНКЦИИ */
 
void GetInput(){
    in >> n;
 
    for(i=0; i<n; i++){
        in >> v[i].x >> v[i].y;
    }
}
 
void GetCircleWithThreePoints(point a, point b, point c){
    
    point temp;
    
    if(c.x == b.x){
        temp.x = a.x;
        a.x = b.x;
        b.x = temp.x;
    }
    else if(a.x == b.x){
        temp.x = c.x;
        c.x = b.x;
        b.x = temp.x;
    }
    
    double ma = (b.y - a.y) / (b.x - a.x);
    double mb = (c.y - b.y) / (c.x - b.x);
 
    double chislitel = ((ma*mb)*(a.y-c.y))+(mb*(a.x+b.x))-(ma*(b.x+c.x));
    double znamenatel = 2*(mb-ma);
 
    tempCircle.x = chislitel / znamenatel;
}
 
 
/*-------------------------------------------------------------- ТОЧКА ВХОДА */
 
void main(){
 
    GetInput();
 
    /*for(i=0; i<n; i++){
        for(j=i+1; j<n; j++){
            for(k=j+1; k<n; k++){
            }
        }
    }*/
 
    i=0;
    j=1;
    k=2;
 
    GetCircleWithThreePoints(v[i], v[j], v[k]);
 
    std::cout << tempCircle.x;
 
}
Вот вывод винды об ошибке:

Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 02 - Bonus 1.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 4cbb39d5
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 6.1.7600.16385
Отметка времени модуля с ошибкой: 4a5bdadb
Код исключения: c0000005
Смещение исключения: 00051ffe
Версия ОС: 6.1.7600.2.0.0.256.4
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789


В чём проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 22:08     Ошибка в программе
Посмотрите здесь:

C++ Ошибка в программе
Ошибка в программе C++
C++ Ошибка в программе
Ошибка в программе C++
Ошибка в программе C++
Ошибка в программе C++
ошибка в программе C++
C++ Ошибка в программе

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
18.10.2010, 08:06     Ошибка в программе #2
Видимо память для массива выделяется неверно. Как я понял, вы считываете его размер - n из файла:
C++
1
 in >> n;
Но память выделяете почему-то раньше:
C++
1
2
int n;
point *v = new point[n]; // чему тут равно n?
И ещё выдаёт ошибку: circle - использована кириллическая 'с' вместо латинской.
DAgot_
 Аватар для DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
18.10.2010, 09:47  [ТС]     Ошибка в программе #3
Спасибо вам огромное, очень помогли.
Yandex
Объявления
18.10.2010, 09:47     Ошибка в программе
Ответ Создать тему
Опции темы

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