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

Не как не могу найти ошибку уже более часа - C++

Восстановить пароль Регистрация
 
ghfh
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 6
09.03.2014, 13:19     Не как не могу найти ошибку уже более часа #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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define _USE_MATH_DEFINES
#define M_PI       3.14159265358979323846
 
int _tmain(int argc, _TCHAR* argv[])
{double A,B,C,a,b,c,S,AC,AB,BC;
printf("\n AB="); scanf("%d",&c);
printf("\n BC="); scanf("%d",&a);
printf("\n AC="); scanf("%d",&b);
AB=c;
BC=a;
AC=b;
c=sqrt(pow(a,2)+pow(b,2)-2*a*b*cos(C));
A=acos((pow(b,2)+pow(c,2)-pow(a,2))/2*b*c);
B=acos((pow(a,2)+pow(c,2)-pow(b,2))/2*a*c);
B=M_PI-(A+C);
C=180-(A+B);
S=1/2*AC*sin(B);
S=1/2*a*b*sin(C);
    return 0;
}


После того как задаю AB, BC и AC программа вылетает. Помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
09.03.2014, 13:21     Не как не могу найти ошибку уже более часа #2
...
_include
Студент
 Аватар для _include
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
09.03.2014, 13:27     Не как не могу найти ошибку уже более часа #3
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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define _USE_MATH_DEFINES
#define M_PI 3.14159265358979323846
 
int _tmain(int argc, _TCHAR* argv[])
{double A,B,C,a,b,c,S,AC,AB,BC;
printf("\n AB="); scanf("%d",&c);
printf("\n BC="); scanf("%d",&a);
printf("\n AC="); scanf("%d",&b);
AB=c;
BC=a;
AC=b;
c=sqrt(pow(a,2)+pow(b,2)-2*a*b*cos(C));
A=acos((pow(b,2)+pow(c,2)-pow(a,2))/2*b*c);
B=acos((pow(a,2)+pow(c,2)-pow(b,2))/2*a*c);
B=M_PI-(A+C);
C=180-(A+B);
S=1/2*AC*sin(B);
S=1/2*a*b*sin(C);
return 0;
}
1) Вы просите целочисленный тип на вводе, когда переменные объявлены вещественным, с удвоенной точностью. scanf("%d",&c);
2)Зачем Вы делаете так:
C++
1
2
3
AB=c;
BC=a;
AC=b;
Вы нигде не используете AB,BC,AC, пардон АС увидел один раз
3) Переопределяете переменную с после ввода: c=sqrt(pow(a,2)+pow(b,2)-2*a*b*cos(C)); Последний косинус вычисляется от непонятно какого С. Если от C=180-(A+B);, то поднимите эту строчку над вычислением.
4) Что бы окно не закрывалось, допишите _getch(); после return;
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
09.03.2014, 13:28     Не как не могу найти ошибку уже более часа #4
Во-первых, это не C++, во-вторых, оформите тегами кода, в-третьих, %d для double не пойдет
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.03.2014, 13:29     Не как не могу найти ошибку уже более часа #5
у вас студия. осваивайте дебагер. краткая инструкция
ставите курсор на первую строчку с printf.
нажимаете F9. на против этой строки появляется красный кружок, говорящий
о том, что тут установлен брейк поинт. нажимаете F5 для запуска проги.
выполнение останавливается на этом брейк поинте. далее, чтобы программа
выполнела строчку, на которой остановилась - нажимаете F10 (переход на следующую).
наводите мышкой на переменные, студия покажет вам их значения. если все ок - делаете
еще шаг вперед и снова смотрите переменные. если у вас краш - значит или деление на
ноль где-то или в мат функции передается какое-то неправильное значение.

Shift-F5 - для прерывания всего этого дела. Все хот кеи продублированы на
панельке с кнопочками.

Один раз освоите и подобные ошибки будут находится достаточно быстро в будущем.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
09.03.2014, 13:32     Не как не могу найти ошибку уже более часа #6
Цитата Сообщение от ghfh Посмотреть сообщение
S=1/2*AC*sin(B);
S=1/2*a*b*sin(C);
рассчитали значение и тут же забыли
да и во всей программе идет расчет, а потом программа закрывается куда результаты то идут?
ни на экран не в файл, зачем нужна программа?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
09.03.2014, 13:39     Не как не могу найти ошибку уже более часа #7
%d -> %lf
ghfh
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 6
09.03.2014, 13:41  [ТС]     Не как не могу найти ошибку уже более часа #8
Программу я ещё просто не дописал, второй раз этим занимаюсь(1 курс института).
Но даже на этой стадии она должна работать, а она вылетает вот такой ошибкой после того как задам значения.
http://s2.ipicture.ru/uploads/20140309/5SEUSSuH.jpg
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
09.03.2014, 13:42     Не как не могу найти ошибку уже более часа #9
Цитата Сообщение от ghfh Посмотреть сообщение
(1 курс института).
а английский в школе учили? Да тут и особых знаний не надо - переведите любым переводчиком текст ошибки и всё будет понятно!
ghfh
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 6
09.03.2014, 13:47  [ТС]     Не как не могу найти ошибку уже более часа #10
Croessmah, То есть нужно задать значение переменной А?
_include
Студент
 Аватар для _include
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
09.03.2014, 13:56     Не как не могу найти ошибку уже более часа #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ghfh Посмотреть сообщение
Программу я ещё просто не дописал, второй раз этим занимаюсь(1 курс института).
Но даже на этой стадии она должна работать, а она вылетает вот такой ошибкой после того как задам значения.
http://s2.ipicture.ru/uploads/20140309/5SEUSSuH.jpg
Вы не инициализировали переменную А.
Разберитесь пожалуйста с переменными, перепишите код еще раз.

Добавлено через 8 минут
ghfh, исходя из написанного Вами, я подправил код:
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
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <math.h>
 
#define _USE_MATH_DEFINES
#define M_PI 3.14159265358979323846
 
int _tmain(int argc, _TCHAR* argv[])
{
    double A,B,C,S1,S2,AC,AB,BC;
    printf("\n AB="); scanf("%f",&AB);
    printf("\n BC="); scanf("%f",&BC);
    printf("\n AC="); scanf("%f",&AC);
    C=sqrt(pow(BC,2)+pow(AC,2)-2*BC*AC*cos(AB));
    A=acos((pow(AC,2)+pow(AB,2)-pow(BC,2))/2*AC*AB);
    B=acos((pow(BC,2)+pow(AB,2)-pow(AC,2))/2*BC*AB);
    B=M_PI-(A+C);
    C=180-(A+B);
    S1=1/2*AC*sin(B);
    S2=1/2*BC*AC*sin(C);
    _getch();
    return 0;
}
ghfh
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 6
09.03.2014, 13:59  [ТС]     Не как не могу найти ошибку уже более часа #12
_include, Спасибо большое, но ошибка та же самая. Может дело не в коде, а в компиляторе или оборудование?
http://s2.ipicture.ru/uploads/20140309/cbyIEFET.jpg
_include
Студент
 Аватар для _include
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
09.03.2014, 14:02     Не как не могу найти ошибку уже более часа #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не пишите в пути к файлу, в названии проекта русские буквы и прочие символы типа #№?$%. Именуйте проект по английски, без пробелов. И возможно, предыдущий запуск был не удачен, и программа висит в памяти. Закройте проект, перезайдите в студию.
А вообще, пересоздайте проект, дайте ему имя triangleOne например и продолжите работу с кодом.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.03.2014, 14:04     Не как не могу найти ошибку уже более часа #14
не удается открыть - это когда студия пытается перезаписать вновь собранный бинарик, но не может.
старый бинарик запущен и система залочила файл для модификации. старый процесс нужно убить.
ghfh
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 6
09.03.2014, 14:14  [ТС]     Не как не могу найти ошибку уже более часа #15
_include, Вот теперь вроде всё работает, не знаю правильно или нет, но уже работает, спасибо большое.

Добавлено через 2 минуты
1>c:\users\neko\documents\visual studio 2010\projects\triangleone\triangleone\triangleone.cpp(17): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): см. объявление "scanf"/

А это не смертельная ошибка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2014, 14:21     Не как не могу найти ошибку уже более часа
Еще ссылки по теме:

C++ не могу найти ошибку
C++ Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку)
Как рандомно заполнить вектор? Не могу найти ошибку C++

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

Или воспользуйтесь поиском по форуму:
_include
Студент
 Аватар для _include
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
09.03.2014, 14:21     Не как не могу найти ошибку уже более часа #16
Нет, просто студия любит что бы ввод был защищен - scanf_s, отключается (как вариант): Проект-свойства-C/C++, Там будет пунктик Проверки SDL. Выбираем нет. (Нужно делать для каждого проекта, например при работе с файлами так же ругается на fopen).
Миниатюры
Не как не могу найти ошибку уже более часа  
Yandex
Объявления
09.03.2014, 14:21     Не как не могу найти ошибку уже более часа
Ответ Создать тему
Опции темы

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