Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
MasterRO
37 / 5 / 4
Регистрация: 15.09.2011
Сообщений: 73
#1

Решение уравнения с используя функцию - C++

11.07.2012, 13:54. Просмотров 833. Ответов 16
Метки нет (Все метки)

Используя пользовательскую функцию (одну для двух сумм) рассчитать по формуле:
http://www.cyberforum.ru/cpp-beginners/thread1350665.html
0
Миниатюры
Решение уравнения с используя функцию  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2012, 13:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Решение уравнения с используя функцию (C++):

Решение квадратного уравнения через функцию
Здравствуйте, уважаемые программисты. Возникла проблема с написанием кода для...

Написать функцию, обеспечивающие решение квадратного уравнения.
Написать функцию, обеспечивающие решение квадратного уравнения. Параметрами...

Написать функцию, обеспечивающую решение квадратного уравнения C++
Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами...

Написать функцию, обеспечивающую решение квадратного уравнения
Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами...

Преобразовать решение используя указатели (дано решение без указателей)
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей...

16
GmV_ScoRp
2 / 2 / 2
Регистрация: 16.02.2011
Сообщений: 64
11.07.2012, 15:55 #2
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
#include <iostream>
#include "math.h"
using namespace std;
 
double div_(int, int);
 
int main()
{
    cout << "y = " << div_(4, 3); // Надо вписать нужное число, 1-параметр n, 2ой m; ((int n, int m))
 
    return 0;
}
 
double div_(int n, int m)
{
    int a = 0;
 
    for (int i = 0; i <= n; ++i) {
 
        a += 3 * pow(i, 3) + pow(i, 2) + 1;
    }
 
    a *= 2 + 1;
 
    int b = 0;
 
    for (int j = 0; j <=m; ++j)  {
 
        b += 2 * pow(j, 3) + 3;
 
    }
 
    b += 2;
 
    int sum = a / b;
 
    return sum;
 
}
0
MasterRO
37 / 5 / 4
Регистрация: 15.09.2011
Сообщений: 73
11.07.2012, 17:24  [ТС] #3
нужно, чтобы деление выполнялось в главной программе, то есть функция считала сумму, а главная программа выглядела примерно так

************************
y=(1+2*sum(n))/(2+sum(m));
************************
0
Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
11.07.2012, 17:51 #4
Замени только мои предложения на своё усмотрение, т.к я не знал как правильно назвать n и m. Возможно я подзабыл математику, но вроде я всё правильно понял: например, первая сумма вычисляется для j равным от 3 до некого n.
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
#include <iostream>
#include "math.h"
using namespace std;
double sum1(int pr);
double sum2(int pr);
 
int main()
{
    setlocale (LC_ALL, "Russian");
    int n,m;
    cout << "Введите предел n, равным не менее 3: ";
    cin>> n;
    if (n<3)
        {cout << "n должно быть не менее 3, введите повторно: ";
         cin>> n;}
    cout << "\nВведите предел m, равным не менее 2: ";
    cin>> m;
    if (m<2)
        {cout << "m должно быть не менее 2, введите повторно: ";
         cin>> m;}
    double result = (1+2*sum1(n))/(2+sum2(m));
    cout << "\nРезультат равен: " << result;
    for (int i=0;i<100; i++)
        cin.get();
    return 0;
}
 
double sum1(int pr)
{
    double fun=0;
    for (int j=3; j<=pr; j++)
        fun+=3*pow(j,3.0)+pow(j,2.0)+1;
    return fun;
}
double sum2(int pr)
{
    double fun=0;
    for (int j=2; j<=pr; j++)
        fun+=2*pow(j,3.0)+3;
    return fun;
}
0
MasterRO
37 / 5 / 4
Регистрация: 15.09.2011
Сообщений: 73
11.07.2012, 17:53  [ТС] #5
все бы хорошо, но функция должна быть одна для двух сумм, а как это сделать я не знаю
0
Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
11.07.2012, 18:08 #6
Цитата Сообщение от MasterRO Посмотреть сообщение
все бы хорошо, но функция должна быть одна для двух сумм, а как это сделать я не знаю
Я хз, как сделать через 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
#include <iostream>
#include "math.h"
using namespace std;
double sum1(int nr, int mr);
 
int main()
{
    setlocale (LC_ALL, "Russian");
    int n,m;
    cout << "Введите предел n, равным не менее 3: ";
    cin >> n;
    if (n<3)
        {cout << "n должно быть не менее 3, введите повторно: ";
         cin>> n;}
    cout << "\nВведите предел m, равным не менее 2: ";
    cin>> m;
    if (m<2)
        {cout << "m должно быть не менее 2, введите повторно: ";
         cin>> m;}
    double result = (1+2*sum1(n,1))/(2+sum1(1,m));
    cout << "\nРезультат равен: " << result;
    for (int i=0;i<100; i++)
        cin.get();
    return 0;
}
 
double sum1(int nr, int mr)
{
    if (mr==1)
    {
    double fun=0;
    for (int j=3; j<=nr; j++)
        fun+=3*pow(j,3.0)+pow(j,2.0)+1;
    return fun;}
    if (nr==1)
    {
    double sun=0;
    for (int j=2; j<=mr; j++)
        sun+=2*pow(j,3.0)+3;
    return sun;}
}
0
GmV_ScoRp
2 / 2 / 2
Регистрация: 16.02.2011
Сообщений: 64
11.07.2012, 18:13 #7
Перегрузи функцию!!
0
Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
11.07.2012, 18:20 #8
Цитата Сообщение от GmV_ScoRp Посмотреть сообщение
Перегрузи функцию!!
Это ты кому пишешь? Если мне, то я как раз только начал читать про перегрузки, поэтому пока не понимаю, что это означает

Добавлено через 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include "math.h"
using namespace std;
double sum(int nr);
double sum(double mr);
 
int main()
{
    setlocale (LC_ALL, "Russian");
    int n;
    double m;
    cout << "Введите предел n, равным не менее 3: ";
    cin >> n;
    if (n<3)
        {cout << "n должно быть не менее 3, введите повторно: ";
         cin>> n;}
    cout << "\nВведите предел m, равным не менее 2: ";
    cin>> m;
    if (m<2)
        {cout << "m должно быть не менее 2, введите повторно: ";
         cin>> m;}
    double result = (1+2*sum(n))/(2+sum(m));
    cout << "\nРезультат равен: " << result;
    for (int i=0;i<100; i++)
        cin.get();
    return 0;
}
 
double sum(int nr)
{
    double fun=0;
    for (int j=3; j<=nr; j++)
        fun+=3*pow(j,3.0)+pow(j,2.0)+1;
    return fun;
    
}
double sum(double mr)
{
double sun=0;
    for (int j=2; j<=mr; j++)
        sun+=2*pow(j,3.0)+3;
    return sun;
}
1
MasterRO
37 / 5 / 4
Регистрация: 15.09.2011
Сообщений: 73
11.07.2012, 21:09  [ТС] #9
так а функции все равно 2((
вот как она на паскале выглядит:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
function F(m,n,a,b,c:integer):integer;
var j,s:integer;
 begin
  s:=0;
 for j:=m to n do
  s:=s+a*j*j*j+b*j*j+c;
  F:=s;
 end;
var m,n:integer;
    y:real;
 begin 
  writeln('Введите n>2: ');
  read(n); 
  writeln('Введите m>1: ');
  read(m);
  y:=(1+2*F(3,n,3,1,1))/(2+F(2,m,2,0,3));
  write('y=',y:0:3);
 end.
0
Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
11.07.2012, 21:23 #10
Цитата Сообщение от MasterRO Посмотреть сообщение
так а функции все равно 2((
А прога, которая повыше, где функция, но с двумя аргументами тоже не подойдёт? Просто тебе же нужно, чтобы сама формула вычислялась в main, а суммы считались функцией. Но теперь я точно даже не представляю, как это можно осуществить в одной функции с одним аргументом и без этих перегрузок, я ещё мало прочитал книжку по с++. Чем мог, тем помог
0
MasterRO
37 / 5 / 4
Регистрация: 15.09.2011
Сообщений: 73
11.07.2012, 22:02  [ТС] #11
Цитата Сообщение от Fooly Посмотреть сообщение
как это можно осуществить в одной функции с одним аргументом
просто если представить пример (3*j^3+j^2+1) как (a*j^3+b*j^2+c) к примеру, то есть а=3 b=1 b c=1, а j изменяется от 3 до n, тогда во второй сумме a=2, b=0 (0*j^2=0), a c=3, и получается 2*j^3+0*j^2+3=2*j^3+3. В функцию должны передаваться параметры
C++
1
int func(n,m,a,b,c)
но как это сделать на С++ я не знаю
0
Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
11.07.2012, 22:52 #12
Цитата Сообщение от MasterRO Посмотреть сообщение
просто если представить пример (3*j^3+j^2+1) как (a*j^3+b*j^2+c) к примеру, то есть а=3 b=1 b c=1, а j изменяется от 3 до n, тогда во второй сумме a=2, b=0 (0*j^2=0), a c=3, и получается 2*j^3+0*j^2+3=2*j^3+3. В функцию должны передаваться параметры
C++
1
int func(n,m,a,b,c)
но как это сделать на С++ я не знаю
А в функцию должен передаваться 1 параметр? Просто, если можно передать 4 параметра, то тогда это легко делается, но я всё-таки понимаю, что нужно сделать с одним параметром. Нужно ждать ответа профи в таком случае

Добавлено через 9 минут
И с 4-мя не смог сделать Вот с 5 параметрами, но зато 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
#include <iostream>
#include "math.h"
using namespace std;
double sum(int nr, int a, int b, int c, int j);
 
int main()
{
    setlocale (LC_ALL, "Russian");
    int n;
    double m;
    cout << "Введите предел n, равным не менее 3: ";
    cin >> n;
    if (n<3)
        {cout << "n должно быть не менее 3, введите повторно: ";
         cin>> n;}
    cout << "\nВведите предел m, равным не менее 2: ";
    cin>> m;
    if (m<2)
        {cout << "m должно быть не менее 2, введите повторно: ";
         cin>> m;}
    double result = (1+2*sum(n,3,1,1,3))/(2+sum(m,2,0,3,2));    
    cout << "\nРезультат равен: " << result;
    for (int i=0;i<100; i++)
        cin.get();
    return 0;
}
 
double sum(int nr, int a, int b, int c, int j)
{
    double fun=0;
    for (j; j<=nr; j++)
        fun+=a*pow(j,3.0)+b*pow(j,2.0)+c;
    return fun; 
}
1
MasterRO
37 / 5 / 4
Регистрация: 15.09.2011
Сообщений: 73
11.07.2012, 23:37  [ТС] #13
спасибо) это подойдет, ограничения по параметрам не было))
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
12.07.2012, 00:00 #14
Цитата Сообщение от Fooly Посмотреть сообщение
Вот с 5 параметрами, но зато 1 функция
добавь значения по умолчанию и можешь вызывать с одним параметром
C++
1
double sum(int nr, int a=0, int b=0, int c=0, int j=0);
тогда при вызове
sum(5);
она вызовется как sum(5,0,0,0,0)
при
sum(5,2);
она вызовется как sum(5,2,0,0,0)
ну и так далее
1
salam
174 / 155 / 28
Регистрация: 10.07.2012
Сообщений: 765
12.07.2012, 06:17 #15
Вам подойдет вариант, когда функция принимает сразу два аргумента и возвращает сразу два отдельных значения суммы...?
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
12.07.2012, 07:18 #16
Цитата Сообщение от salam Посмотреть сообщение
принимает сразу два аргумента и возвращает сразу два отдельных значения суммы...
как так
0
salam
174 / 155 / 28
Регистрация: 10.07.2012
Сообщений: 765
12.07.2012, 07:20 #17
хотя бы
C++
1
2
3
4
5
6
pair <int, int> function(pair <int, int>)
{
pair <int, int> p;
...
return p;
}
0
12.07.2012, 07:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 07:20
Привет! Вот еще темы с решениями:

Передача массива в функцию используя указатель на функцию
У меня имеется готовая программа без передачи функции в функцию указателем, мне...

Решение уравнения
Дано уравнение: Х в квадрате+У в квадрате=К в квадрате Найти все...

Решение уравнения
Помогите перевести уравнение ни сишечку задача такая 1. Создать консольный...

Решение уравнения
Доброго времени суток! Ребят помогите с задачкой пожалуйста Задано уравнение:...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru