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

Функции. Исправление - C++

Восстановить пароль Регистрация
 
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
26.06.2013, 15:40     Функции. Исправление #1
Друзья,
Я коряво написал программу, в которой функция должна считать значение корня kor, после чего решить пример
с=а+(kor+b), но
Я коряво написал программу
. Понимаю, что добавлять лишнюю функцию не имеет смысла... Пожалуйста, помогите исправить код используя этот же способ.

Листинг:
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
#include <iostream>
using namespace std;
 
int f1 (int);
 
int a,b,c,d;
int kor;
 
 
void main()
{
    cout<<"c=a+(sqrt+b)\n";
    cout<<"Enter A: "; cin>>a;
    cout<<"Enter B: "; cin>>b;
    cout<<"Enter SQRT: "; cin>>d;
    f1;
    cout<<"C = "<<c<<endl;
    system("pause");
}
 
 
int f1(int)
{
kor=d*d;
c=a+(kor+b);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2013, 15:40     Функции. Исправление
Посмотрите здесь:

C++ исправление ошибок
C++ Исправление ошибки
исправление цикла C++
C++ Исправление ошибок
Исправление программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
26.06.2013, 16:05     Функции. Исправление #2
Цитата Сообщение от Nklok Посмотреть сообщение
int f1 (int);
ты объявляешь функцию f1 у которой должен быть 1 входной параметр типа int,

а вот тут ты её реализуешь
C++
1
2
3
4
5
6
int f1(int)
{
kor=d*d;
c=a+(kor+b);
return 0;
}
вопрос зачем тебе входной параметр ?? ему не присвоено имя ? это синтаксически неправильно, потом функция у тебя должна возвращать значение ??? зачем в конце написано return 0 ?

вот так функции не вызываются
C++
1
f1;
чтобы компилятор отличал функции от переменных, после имени функции ставятся круглые скобки.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.06.2013, 16:05     Функции. Исправление #3
Что-то Вы намудрили. По терминологии: SQRT - обычно это square root (квадратный корень), к корню уравнения никакого отношения, в общем случае, не имеет.
Цитата Сообщение от Nklok Посмотреть сообщение
с=а+(kor+b)
В уравнениях неизвестное обычно обозначают через X. К тому же не понятно, что хотели показать скобками.
Если с=а+x+b, то x=c-a-b. Отсюда можно и функцию элементарную реализовать:
C++
1
2
3
4
int root( int a, int b, int c )
{
   return c-a-b;
}
В итоге может быть нечто такое:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdlib>
 
using std::cin;
using std::cout;
using std::endl;
 
int root( int a, int b, int c )
{
   return c-a-b;
}
 
int main()
{
    int a,b,c;
    cout<<"c=a+x+b\n";
    cout<<"Enter A: "; cin>>a;
    cout<<"Enter B: "; cin>>b;
    cout<<"Enter C: "; cin>>c;
    cout<<"ROOT = "<<root(a,b,c)<<endl;
    std::system("pause");
}
-=ЮрА=-
Заблокирован
Автор FAQ
26.06.2013, 16:11     Функции. Исправление #4
@Nklok, почему в коде в описании присутвует
Цитата Сообщение от Nklok Посмотреть сообщение
sqrt
- формула
Цитата Сообщение от Nklok Посмотреть сообщение
с=а+(kor+b)
точно такая?
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
26.06.2013, 16:16  [ТС]     Функции. Исправление #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
26
#include <iostream>
using namespace std;
 
int f1 ();
int a,b,c,d;
int square;
 
 
void main()
{
    cout<<"c=a+(square+b)\n";
    cout<<"Enter a: "; cin>>a;
    cout<<"Enter b: "; cin>>b;
    cout<<"Enter square: "; cin>>d;
    f1();
    cout<<"c = "<<c<<endl;
    system("pause");
}
 
 
int f1()
{
square=d*d;
c=a+(square+b);
return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
@Nklok, формула точно такая?
Да, я её выдумал, чтобы разобраться с функциями
-=ЮрА=-
Заблокирован
Автор FAQ
26.06.2013, 16:24     Функции. Исправление #6
@Nklok, это задача на метод простых итераций, не стоит вестись на необдуманные коды некоторых далеко не самых одарённых в математике ответчиков. Напиши за формулу лучше.
Думаю уравнение имело вот такой вид
с=а+sqrt(kor+b), либо пусть и такой с=а+(kor+b), в таком случае оно решается это не банальным приведением слагаемых в одну сторону а методом простых итераций. Озвучь номально задание.

Добавлено через 54 секунды

Не по теме:

Цитата Сообщение от Nklok Посмотреть сообщение
Да, я её выдумал, чтобы разобраться с функциями
- тогда в нынешнем твоём коде полная бредатина



Добавлено через 6 минут
Ты же зачем то вводишь начальное приближение корня, это как раз из итерациионных методов
Цитата Сообщение от Nklok Посмотреть сообщение
cout<<"Enter square: "; cin>>d;
. Вобщем ладно. По крайней мере юзай хотябы такой код для функций,
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 <iostream>
using namespace std;
 
double f1 (double a, double b, double d);
 
 
int main()
{
    double a, b, c, d;
    cout<<"c = a + (d + b)"<<endl;
    cout<<"Enter a: "; cin>>a;
    cout<<"Enter b: "; cin>>b;
    cout<<"Enter d: "; cin>>d;
    c = f1(a, b, d);
    cout<<"c = "<<c<<endl;
    system("pause");
    return 0;
}
 
 
double f1(double a, double b, double d)
{
    return a + (d*d + b);
}
т.к. это просто никуда не годно
Цитата Сообщение от Nklok Посмотреть сообщение
int f1()
{
square=d*d;
c=a+(square+b);
return 0;
}
- накой чёрт заводить глобальные переменные либо если уж завели на кой чёрт делать функцию с возвращаемым значением
Tulosba
26.06.2013, 16:34
  #7

Не по теме:

одаренный математик ... ну надо же

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 16:50     Функции. Исправление
Еще ссылки по теме:

C++ Исправление ошибок
C++ Исправление
Исправление ошибок C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
26.06.2013, 16:50     Функции. Исправление #8
@Nklok, чтобы ты имел представление об итерационных процессах, посотмри модернизированный метод простых итераций
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
#include <cmath>
#include <iostream>
using namespace std;
 
double f(double a, double b, double c, double x);
double g(double a, double b, double c, double x);
 
 
int main()
{
    double a, b, c, x;
    cout<<"a + (x*x + b) = c"<<endl;
    cout<<"Enter a: "; cin>>a;
    cout<<"Enter b: "; cin>>b;
    cout<<"Enter c: "; cin>>c;
    cout<<"Enter initial value of x: "; cin>>x;
    while(fabs(x - g(a, b, c, x)) > 1E-3)
    {
        x = f(a, b, c, x) + g(a, b, c, x);
        cout<<"\r x = "<<x<<" f = "<<f(a, b, c, x);
    }
    system("pause");
    return 0;
}
 
double f(double a, double b, double c, double x)
{
    return a + (x*x + b) - c;
}
 
 
double g(double a, double b, double c, double x)
{
    return (c - a - b) / x;
}
PS:@Nklok, не обращай внимания на некоторых ответчиков я на них давно забил
Миниатюры
Функции. Исправление  
Yandex
Объявления
26.06.2013, 16:50     Функции. Исправление
Ответ Создать тему
Опции темы

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