0 / 0 / 0
Регистрация: 25.04.2021
Сообщений: 80
1

Найти ошибку в программе

24.10.2021, 15:02. Показов 544. Ответов 4
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
По заданию нужно создать класс с полями а и b и функциями-членами, в теле которых будут реализованы арифметические операции: 1) -= 2)+

-= у меня работает, а вот функция сложения почему-то выводит просто первое введенное число а. (хотя должна выводить сумму 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
23
24
25
26
27
#include <iostream>
using namespace std;
 
class arif
{
    float a,b;
public:
    arif(float a, float b)
    {
        this->a=a;
        this->b=b;
    }
 
    float primer1() {a-=b; return a;} //функция 1
    float primer2() {float c; c=a+b; return c; } //функция сложения 2
};
int main()
{
    float  a, b, c;
    cout << "a = "; cin >> a;
    cout << "b = "; cin >> b;
    arif p = arif(a,b);
 
    cout << "\na-=b: " << p.primer1() << endl; //работает
    cout << "a+b: " << p.primer2() << endl; //не работает и просто возвращает a
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2021, 15:02
Ответы с готовыми решениями:

Найти ошибку в программе: в visual studio выдает ошибку
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() ...

Найти ошибку в программе
Программа должна используя Дерево выводить список игроков сначала всех играющих в основном составе...

Найти ошибку в программе
Нужно найти суммирование ln(i/(i*i+1)) с шагом i от 1 до 10 и вывести результат в виде таблице. У...

Найти ошибку в программе
Найти ошибку в программе(связано с неправильным использованием указателя). Как можно исправить...

Найти ошибку в программе
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;vector&gt; using namespace std; int main(){...

4
19 / 14 / 5
Регистрация: 22.10.2021
Сообщений: 38
Записей в блоге: 1
24.10.2021, 16:27 2
Канеки Кен, У вас a перезаписывается после a-=b
0
0 / 0 / 0
Регистрация: 25.04.2021
Сообщений: 80
24.10.2021, 17:38  [ТС] 3
Проверил, после вызова первой функции a и b остаются такими же. Они не перезаписываются. Что делать? Вторая функция все равно выводит одну a, хотя должна выводить сумму 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
23
24
25
26
27
28
29
30
31
int main()
{
        #include <iostream>
using namespace std;
 
class arif
{
    float a,b;
public:
    arif(float a, float b)
    {
        this->a=a;
        this->b=b;
    }
 
    float primer1() {return a-=b;}
    float primer2() {return a + b; }
};
    float  a, b, c;
    cout << "a = "; cin >> a;
    cout << "b = "; cin >> b;
    arif p = arif(a,b);
 
    cout << "\na-=b: " << p.primer1() << endl; //Первая функция
 
    cout << "\na= " << a << endl; //выводит прежнее а
    cout << "b= " << b << endl; //выводит прежнее b
 
    cout << "\na+b: " << p.primer2() << endl; //Вторая функция не выводим сумму, а только одно нзачение a
    return 0;
}
Добавлено через 7 минут
Правильный код (сверху не получилось редактировать)
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
#include <iostream>
using namespace std;
 
class arif
{
    float a,b;
public:
    arif(float a, float b)
    {
        this->a=a;
        this->b=b;
    }
    //Функции
    float primer1() {return a-=b;}
    float primer2() {return a+b; }
};
 
int main()
{
    float  a, b, c;
    cout << "a = "; cin >> a;
    cout << "b = "; cin >> b;
    arif p = arif(a,b);
 
    cout << "\na-=b: " << p.primer1() << endl; //Первая функция
 
    cout << "\na= " << a << endl;//выводит прежнее а
    cout << "b= " << b << endl; //выводит прежнее b
 
    cout << "\na+b: " << p.primer2() << endl; //Вторая функция не выводим сумму, а только одно нзачение a  
}
0
Модератор
Эксперт С++
13491 / 10747 / 6405
Регистрация: 18.12.2011
Сообщений: 28,681
24.10.2021, 17:59 4
Канеки Кен, Вы не то выводите
cout << "\na= " << p.a << endl;
cout << "b= " << p.b << endl;
Цитата Сообщение от Канеки Кен Посмотреть сообщение
//Вторая функция не выводим сумму,
Вы сначала в 1 функции отняли b
а потом во второй функции прибавили b
и, естественно, получили a
0
Модератор
Эксперт CЭксперт С++
5164 / 2889 / 1498
Регистрация: 14.12.2018
Сообщений: 5,225
Записей в блоге: 1
24.10.2021, 18:11 5
Цитата Сообщение от Канеки Кен Посмотреть сообщение
arif p = arif(a,b);
Лучше написать как
C++
1
arif p(a, b);
Цитата Сообщение от Канеки Кен Посмотреть сообщение
//не работает и просто возвращает a
Значение свойства a изменяется после вызова метода primer1(). Т.е. у вас будет новое значение a. И тогда p.primer2()=c=a(new)+b(old).
0
24.10.2021, 18:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2021, 18:11
Помогаю со студенческими работами здесь

найти ошибку в программе
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace...

Найти ошибку в программе
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; #include &lt;ctime&gt;...

Найти ошибку в программе
Найти к-е число Фибоначчи,такое,что x(k-1)&lt;a&lt;x(k). Числа Фибоначчи:x(1)=x(2)=1;x(k)=x(k-2)+x(k-1) ...

Найти ошибку в программе
Помогите найти ошибку. #include &lt;iostream&gt; using namespace std; int main() { int...

Найти ошибку в программе
Где ошибка в программе: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include...

найти ошибку в программе
Сортировка вещественных чисел из файла методом пузырька #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...


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

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

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