Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 20

Передача параметров в функции

28.11.2015, 15:46. Показов 688. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
Помогите, пожалуйста, разобраться с передачей параметров.
Задание : создать класс "Треугольник", определить углы и тип треугольников.
В одном методе я определяю углы, а в другом тип треугольника (хочу сделать сравнением углов). В общем я так понимаю, что я неправильно возвращаю и передаю значения угла посчитанного в Angle. Подскажите, пожалуйста как правильно и почему именно так.
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
#include <iostream>
#include <cmath>
using namespace std;
class Triangle
{
    private: double a,b,c;
    public:
    void Set_length (double m, double n, double k)
    {
        a=m;
        b=n;
        c=k;
    }
    double Angles (double m, double n, double k, double *al, double *be, double *ga)
    {
        double alpha = 57*acos((k*k+n*n-m*m)/(2*k*n));
        double beta = 57*acos((m*m+k*k-n*n)/(2*m*k));
        double gamma = 57*acos((m*m+n*n-k*k)/(2*m*n));
        cout << "Alpha=" <<alpha << endl;
        cout << "Beta=" <<beta << endl;
        cout << "Gamma=" <<gamma << endl;
        al=&alpha;
        be=&beta;
        ga=&gamma;
        return *al,*be,*ga;
    }
    void Type (double m, double n, double k, double alpha, double beta, double gamma)
    {   
        if ((alpha==90)||(beta==90)||(gamma==90)){
            cout << "Rectangular";
        }   
        if ((alpha<90)&&(beta<90)&&(gamma<90)){
            cout << "Acute";
        }
        else {
            cout << "Obuse";
        }
    }
};
 
int main (){
    Triangle object;
    double s1,s2,s3;
    cout << "Enter triangle sides."<< endl;
    cout << "a=";
    cin>> s1;
    cout << "b=";
    cin>> s2;
    cout << "c=";
    cin>> s3;
    object.Set_length(s1,s2,s3);
    double alph,bet,gamm;
    object.Angles(s1,s2,s3, &alph,&bet,&gamm);
 
    object.Type(s1,s2,s3,alph,bet,gamm);
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2015, 15:46
Ответы с готовыми решениями:

Передача параметров функции
Не могу передать значение переменной функции. По идее все правильно, но она берет только последнее значение, а ещё может зациклиться. ...

Передача параметров функции
доброго времени суток:) есть программа реализующая метод градиентного спуска. но да это неважно есть функция Norm. значение этой...

Передача параметров функции
Добрый день! Помогите, пожалуйста с передачей параметров по функциям. Как использовать функцию check2 в функции...

6
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
28.11.2015, 17:56
Цитата Сообщение от watmann Посмотреть сообщение
return *al,*be,*ga;
это лишние. ничего не надо возвращать

Добавлено через 5 минут
Цитата Сообщение от watmann Посмотреть сообщение
if ((alpha==90)||(beta==90)||(gamma==90)){
неужели ты думаешь что это условие когда-то будет истинно ?

Добавлено через 1 минуту
Цитата Сообщение от watmann Посмотреть сообщение
double Angles (double m, double n, double k, double *al, double *be, double *ga)
на кой передаешь в метод стороны раз у тебя эти стороны уже в полях.

Добавлено через 1 минуту
Цитата Сообщение от watmann Посмотреть сообщение
al=&alpha;
* * * * be=&beta;
* * * * ga=&gamma;
убери &

Добавлено через 1 минуту
C++
1
 *al=alpha;
Добавлено через 1 минуту
Цитата Сообщение от watmann Посмотреть сообщение
void Type (double m, double n, double k, double alpha, double beta, double gamma)
на кой передаешь в метод стороны раз у тебя эти стороны уже в полях.
1
0 / 0 / 0
Регистрация: 26.10.2014
Сообщений: 20
29.11.2015, 10:57  [ТС]
Спасибо за ответ с:
Цитата Сообщение от RAFA91
if ((alpha==90)||(beta==90)||(gamma==90)){
Да, это я протупила.
Теперь делаю так:
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
#include <iostream>
#include <cmath>
using namespace std;
class Triangle
{
    private: double a,b,c;
    public:
    void Set_length (double m, double n, double k)
    {
        a=m;
        b=n;
        c=k;
    }
    double Angles (double *al, double *be, double *ga)
    {
        double alpha = 57*acos((c*c+b*b-a*a)/(2*b*c));
        double beta = 57*acos((a*a+c*c-b*b)/(2*a*c));
        double gamma = 57*acos((b*b+a*a-c*c)/(2*a*b));
        cout << "Alpha=" <<alpha << endl;
        cout << "Beta=" <<beta << endl;
        cout << "Gamma=" <<gamma << endl;
        *al=alpha;
        *be=beta;
        *ga=gamma;
        return *al,*be,*ga;
    }
    void Type (double alpha, double beta, double gamma)
    {   
        if ((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a*a+c*c==b*b)){
            cout << "Rectangular";
        }   
        if ((alpha<89.5)&&(beta<89.5)&&(gamma<89.5)){
            cout << "Acute";
        }
        if ((alpha>90)||(beta>90)||(gamma>90)) {
            cout << "Obuse";
        }
    }
};
 
int main (){
    Triangle object;
    double s1,s2,s3;
    cout << "Enter triangle sides."<< endl;
    cout << "a=";
    cin>> s1;
    cout << "b=";
    cin>> s2;
    cout << "c=";
    cin>> s3;
    object.Set_length(s1,s2,s3);
    double alph,bet,gamm;
    object.Angles(&alph,&bet,&gamm);
 
    object.Type(alph,bet,gamm);
 
    return 0;
}
Есть ещё вариант округлять посчитанные значения градусов с помощью ceil до высшего значения. Но я не уверена в корректности.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
29.11.2015, 11:00
Цитата Сообщение от watmann Посмотреть сообщение
C++
1
return *al,*be,*ga;
почитайте мою запись в блоге.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
29.11.2015, 14:51
Цитата Сообщение от watmann Посмотреть сообщение
Теперь делаю так:

все верно . теорема пифа тут как раз.

кстати должна быть аналогичная зависимость и для других типов тр.

Добавлено через 2 минуты
есть же еще равнобедренный и равносторонний.

Добавлено через 9 минут
C++
1
if ((a*a+b*b>c*c)&&(b*b+c*c>a*a)&&(a*a+c*c>b*b))  cout << "Acute";
не надо вычислять углы
0
29.11.2015, 17:18

Не по теме:

Цитата Сообщение от RAFA91 Посмотреть сообщение
для других типов тр.
В таких случаях возникает ощущение, что у человека буквы на клаве закончились.

0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
29.11.2015, 17:34
иногда они просто выводят не тот символ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2015, 17:34
Помогаю со студенческими работами здесь

Передача параметров функции указателями
Вычислить и запомнить количество отрицательных элементов каждого столбика для матриц а(10,10); b(15,20). Использовать функции для ввода...

Передача параметров функции в main()
Вот у меня есть две функции, которые в дальнейшем нужно вызвать в void main (). int Chislo(int *ar, int razmer) void Set_card(int...

Передача параметров во виртуальные функции, перегрузка
нужна помощь. имеется абстрактный класс Base, объекты которого будут храниться в контейнере, который я сам реализовал. наследники Base...

Передача параметров функции с пoмощью указателя
Всем доброго времени суток, есть обычная функция, возвращающая сумму цифр числа: int sumOfNum(int N) { int sum = 0; while(N...

Передача массивов в качестве параметров функции
Задав динамический двумерный массив вещественных данных (матрицу А размером NxN), реализовать его обработку, как указано в варианте....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru