Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.02.2018
Сообщений: 13
1

Как правильно описывать переменные в функции

27.02.2018, 15:09. Показов 635. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет столкнулся с такой проблемой, что мне надо описывать каждую переменную отдельно и это всё занимает много места. Можно ли это как нибудь упростить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Diskrem(double a, double b, double c, double D, double x1, double x2)
{ 
    cout << "Введите a: ";
    cin >> a;
    cout << "Введите b: ";
    cin >> b;
    cout << "Введите c: ";
    cin >> c;
    D = b * b - 4 * a * c;
    if (D < 0){
        cout << "Корней нет." << endl;
    }
    else {
        x1 = (-b + sqrt(D)) / (2 * a);
        x2 = (-b - sqrt(D)) / (2 * a);
        cout << "Ответ: X1= " << x1 << " X2= " << x2 << endl;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2018, 15:09
Ответы с готовыми решениями:

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

Как правильно создавать переменные в С++?
Тема исключительно для завлечения. Почему castaway заблокировали? Обиделся что &quot;Спасибо&quot; не...

Как будут инициализированы переменные в теле функции и вне тела функции?
Здравствуйте. Подскажите, пожалуйста, как будут инициализированы переменные в теле функции и вне...

Объясните как правильно сравнить переменные типа char
Испульзую (strcmp(a.StNazn,c)==0) Не работает. Если поменять на (strcmp(a.StNazn,c)&lt;0) ...

8
LegionK
27.02.2018, 15:14
  #2

Не по теме:

мб массив сойдет?

0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
27.02.2018, 15:24 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
oid Diskrem()
{ 
    double a, b, c, D, x1, x2;
    
    cout << "Введите три числа типа double: ";
    cin >> a >> b >> c;
    
    D = b * b - 4 * a * c;
    if (D < 0){
        cout << "Корней нет." << endl;
    }
    else {
        x1 = (-b + sqrt(D)) / (2 * a);
        x2 = (-b - sqrt(D)) / (2 * a);
        cout << "Ответ: X1= " << x1 << " X2= " << x2 << endl;
    }
 
}
1
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
27.02.2018, 15:25 4
Providepart,
C++
1
2
3
4
5
6
7
8
9
10
struct Param
{
    double a;
    double b;
    double c;
    double D;
    double x1;
    double x2;
};
void Diskrem(Param& paramList);
кстати да, зачем тебе их передавать если ты им присваиваешь значение в функции и обратно не передаешь их. Если хочешь все значения вернуть из функции смотри код выше.
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.02.2018, 03:58 5
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
#include <iostream>
#include <cmath>
using namespace std;
 
void Search (double a, double b, double c)
{   
    double D, x1, x2, eps=0.0000000001;
    D = b * b - 4 * a * c;
    x1 = (-b + sqrt(D)) / (2 * a);
    x2 = (-b - sqrt(D)) / (2 * a);
    if (D > 0)  cout <<"x1="<<x1<<"  x2="<<x2<<endl;
    else if (-eps<D&&D<eps) cout <<"x1=x2="<<x1<<endl;
    else cout <<"Roots absent"<<endl;    
}
 
int main()
{
    double a, b, c;
    cout <<"Enter a: "; cin >>a;
    cout <<"Enter b: "; cin >>b; 
    cout <<"Enter c: "; cin >>c;
    Search (a,b,c);
system("pause");
return 0;
}
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
28.02.2018, 08:57 6
Yetty, строка 9 выполняется раньше, чем Вы проверяете факт отрицательности D, что приведет к runtime error
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.02.2018, 15:26 7
zss, спасибо за справедливое замечание . исправил, заодно a=0 обработал.

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
#include <iostream>
#include <cmath>
using namespace std;
 
void Search (double a, double b, double c)
{   
    double D, x1, x2, eps=0.0000000001;
    D = b * b - 4 * a * c;
    if (-eps<a&&a<eps) 
    {
    x1=-c/b;
    cout <<"x="<<x1<<endl;
    }
    else
{
    if (D > 0) 
    {
    x1 = (-b + sqrt(D)) / (2 * a);
    x2 = (-b - sqrt(D)) / (2 * a);
    cout <<"x1="<<x1<<"  x2="<<x2<<endl;
    }
    else if (-eps<D&&D<eps)
    {
    x1 = -b / (2 * a);    
    cout <<"x1=x2="<<x1<<endl;
    }
    else cout <<"Roots absent"<<endl;
}    
}
 
int main()
{
    double a, b, c;
    cout <<"Enter a: "; cin >>a;
    cout <<"Enter b: "; cin >>b; 
    cout <<"Enter c: "; cin >>c;
    Search (a,b,c);
system("pause");
return 0;
}
только возможный случай a=0 и b=0 появился. нужно тоже как-то учесть
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
28.02.2018, 17:46 8
Цитата Сообщение от Yetty Посмотреть сообщение
x1=-c/b;
если b!=0,

"a равно нулю" Вы уже обработали
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.02.2018, 19:16 9
zss, по отдельности - да, я про
Цитата Сообщение от Yetty Посмотреть сообщение
возможный случай a=0 и b=0
т.е. одновременно равны нулю. тогда решений бесконечно много при с=0 и нет при с!=0
0
28.02.2018, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2018, 19:16
Помогаю со студенческими работами здесь

Как правильно вписать функцию в h-файл и правильно её отразить в основной функции?
Создать внешнюю библиотеку, в которой написана функция вывода символьного массива обратном ...

Как описывать методы в классах?
Отдельно как функцию, или обязательно внутри объявления класса??

Как описывать множества, пересекать их, складывать
Расскажите, как описывать множества, пересекать их, складывать и т.д. Искал в гугле, но не нашел...

Переменные,значение функции,вспомогательные переменные.
1)Даны переменные A,B,C.Изменить их значения,переместив их содержимое из A-в B,B-в C,C-в A,и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru