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

Нужно найти ошибку - C++

Восстановить пароль Регистрация
 
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 13:04     Нужно найти ошибку #1
Мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;
double ugol(int a, int n, double s) {
    s = (n*a*a) / (4 * (tan(360 / 2 * n)));
    return s;
}
int main() {
    int A, N;
    double S;
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N, S) << "\n";
    return 0;
}
Ошибка
Ошибка 1 error C4700: использована неинициализированная локальная переменная "S" g:\users\adilbek\documents\visual studio 2013\projects\consoleapplication47\consoleapplication47\исходный код.cpp 15 1 ConsoleApplication47
Добавлено через 17 секунд
Вроде все правильно, где моя ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 13:04     Нужно найти ошибку
Посмотрите здесь:

C++ Нужно найти ошибку в STL
Нужно найти ошибку C++
C++ Нужно найти ошибку!!
нужно найти ошибку. C++
Нужно найти ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
17.02.2014, 13:08     Нужно найти ошибку #2
S не инициализирована, компилятор вам тоже самое говорит, если хотите инициализировать её в функции передавайте через указатель.
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 13:19  [ТС]     Нужно найти ошибку #3
Цитата Сообщение от UnsKneD Посмотреть сообщение
S не инициализирована, компилятор вам тоже самое говорит, если хотите инициализировать её в функции передавайте через указатель.
А можете показать как именно?
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
17.02.2014, 13:23     Нужно найти ошибку #4
kasadi, перепутал, по ссылке надо передавать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
using namespace std;
 
double ugol(int a, int n, double &s) {
    s = (n*a*a) / (4 * (tan(360 / 2 * n)));
    return s;
}
int main() {
    int A, N;
    double S;
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N, S) << "\n";
    return 0;
}
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
17.02.2014, 13:24     Нужно найти ошибку #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;
double ugol(double a, double n) {
    return  (n*a*a) / (4. * (tan(360. / 2. * n)));
 
}
int main() {
    double A, N;
 
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N) << "\n";
    return 0;
}
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
17.02.2014, 13:27     Нужно найти ошибку #6
Цитата Сообщение от kasadi Посмотреть сообщение
Мой код
Любопытства ради: а на фига и возвращать результат и по ссылке изменять?
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 13:29  [ТС]     Нужно найти ошибку #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
using namespace std;
double ugol(int a, int n) {
    return (n*a*a) / (4 * (tan(360 / 2 * n)));;
}
int main() {
    int A, N;
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N) << "\n";
    return 0;
}
Не стал мучатся и написал вот так.
Но без толку, ответ выходит не правильный. Я правильно написал тангенс? Там должно было быть типо (360 градусов разделенная на 2*n)
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
17.02.2014, 13:33     Нужно найти ошибку #8
kasadi, что считаете то?
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
17.02.2014, 13:35     Нужно найти ошибку #9
Если что, tan() работает с радианами, а не градусами.
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 13:35  [ТС]     Нужно найти ошибку #10
Ладно, выложу формулу, по которой и делалась программа.
http://www.fxyz.ru/%D1%84%D0%BE%D1%8...8%D0%BA%D0%B0/
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
17.02.2014, 13:38     Нужно найти ошибку #11
360 замени на типа 3.14159*2 , двойки в дроби можно сократить
В проге используй тип double
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 13:57  [ТС]     Нужно найти ошибку #12
Цитата Сообщение от chedman Посмотреть сообщение
360 замени на типа 3.14159*2 , двойки в дроби можно сократить
В проге используй тип double
Ну 360 градусов - это 2 ПИ. Это значит что 360 - это 6.28. НИ 3.14 ни 6.28 не дали нужных результатов.

Добавлено через 11 минут
Ладно, жду Ваших советов.
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
17.02.2014, 13:59     Нужно найти ошибку #13
У меня вот это работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
using namespace std;
double ugol(double a, double n)
{
    return  (n*a*a) / (4. * (tan(M_PI / n)));
}
int main()
{
    double A, N;
 
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N) << "\n";
    return 0;
}
Покажи свой тестовый пример.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.02.2014, 13:59     Нужно найти ошибку #14
Цитата Сообщение от kasadi Посмотреть сообщение
НИ 3.14 ни 6.28 не дали нужных результатов.
Нужных - это каких? Пример ввода, и что должно получиться.
Это сделали?
Цитата Сообщение от chedman Посмотреть сообщение
В проге используй тип double
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 14:19  [ТС]     Нужно найти ошибку #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
using namespace std;
double ugol(int a, int n) {
    return (n*a*a) / (4 * (tan(360 / 2 * n)));;
}
int main() {
    int A, N;
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N) << "\n";
    return 0;
}
Нужных-это чтобы программа высчитала площадь многоугольника.

Добавлено через 1 минуту
Цитата Сообщение от chedman Посмотреть сообщение
У меня вот это работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
using namespace std;
double ugol(double a, double n)
{
    return  (n*a*a) / (4. * (tan(M_PI / n)));
}
int main()
{
    double A, N;
 
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N) << "\n";
    return 0;
}
Покажи свой тестовый пример.
А что за M_PI? и почему Вы его не объявили?
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
17.02.2014, 14:22     Нужно найти ошибку #16
Ввел 4 и 4 получил 16, что верно для квадрата со стороной 4.

Добавлено через 2 минуты
M_PI - это Пи определено в заголовочном файле cmath моего компилятора mingw.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 14:43     Нужно найти ошибку
Еще ссылки по теме:

C++ Нужно найти ошибку
C++ Нужно найти ошибку
C++ Нужно найти и исправить ошибку

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

Или воспользуйтесь поиском по форуму:
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.02.2014, 14:43  [ТС]     Нужно найти ошибку #17
Короче намучался, но получилось...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define M_PI 3.1415926535897932384626433832795
#include <iostream>
#include <cmath>
using namespace std;
double ugol(int a, int n) {
    return (n*a*a) / (4 * (tan(M_PI /n)));;
}
int main() {
    int A, N;
    cout << "Enter numbers of side \n";
    cin >> N;
    cout << "Enter length of the sides \n";
    cin >> A;
    cout << "Area of a regular polegon: " << ugol(A, N) << "\n";
    return 0;
}
Yandex
Объявления
17.02.2014, 14:43     Нужно найти ошибку
Ответ Создать тему
Опции темы

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