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

C++ код выдаёт рандомные значения

27.11.2019, 11:14. Показов 1815. Ответов 16

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
59
60
61
62
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
class Elips
{
protected:
 int p, a, b;
    public:
 Elips()
 {
  p = 3.14;
  a = 0;
  b = 0;
 }
 Elips(int a, int b)
 {
  this->a = a;
  this->b = b;
 }
 float long1()
 {
  float elips_long;
  return elips_long = p*(a+b);
 }
};
class Circle: public Elips
{
protected:
 int r;
public:
 Circle(int r)
 {
  this->r = r;
 }
 float long2()
 {
  float circle_long;
   return circle_long = 2*p*r;
 }
};
int main()
{
 setlocale(LC_ALL, "russian");
 int c, d; 
 int t;
 float long1, long2;
 cout << "¬ведите полуоси эллипса: "<<endl;
 cin >> c >> d;
 cout << "¬ведите радиус окружности: "<<endl;
 cin >> t;
 Elips *elips = new Elips(c, d);
 Circle *circle = new Circle(t);
 
 long1 = elips->long1();
 long2 = circle->long2();
 if (long1 < long2) cout << "<ƒлина больше у окружности и она равна: " << long1 << endl;
 else if (long2 < long1) cout << "ƒлина больше у эллипса и она равна:" << long2 << endl;
 else cout << "ѕлощи равны" << endl;
 system("Pause");
 return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2019, 11:14
Ответы с готовыми решениями:

Рандомные значения
Есть прога. Хочу если пользователь ввел в строке элементы n или x, то они заменились. Но прога не...

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

Напишите программу, которая выдает запрос на ввод значения часов и значения минут.
Условие: Напишите программу, которая выдает запрос на ввод значения часов и значения минут....

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

16
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:25 2
Я не знаю в чем заключается твой вопрос, но у тебя при создании Circle p не инициализировано, если хочешь без дублирования кода, то вызывай конструктор Elips

C++
1
2
3
4
Circle(int r) : Elips()
{
...
}
0
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 11:32  [ТС] 3
А конструктор не передается дочернему классу?
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:33 4
Да, передается, это я загнался что то
0
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 11:34  [ТС] 5
А больше нету идей почему он выдаёт не правильный результат?
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:36 6
а рандомный и в первом и втором выводе?
0
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 11:38  [ТС] 7
Там выводится только на большая длинна и это всё время эллипс и с не правильным значением.

Добавлено через 42 секунды
Наибольшая*
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:40 8
ну во первых тут ошибка еще в том что если long1 < long2 то большее надо выводить как long2
и со вторым условием так же
0
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 11:42  [ТС] 9
Я изменил, спасибо, но значения всё равно не те
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:42 10
а, ну погоди ка, в конструкторе Ellips(a,b) p не инициализируется, вот тут и надо было дернуть Elips() в списке инициализации
0
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 11:43  [ТС] 11
В каком смысле?
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:47 12
Дочерний класс вызывает конструктор по умолчанию для базового
а конструктор базового с параметрами не вызывает конструктор по умолчанию (в котором инициализируется p)

Добавлено через 1 минуту
C++
1
2
3
4
Elips(int a, int b) : Elips()
{
...
}
0
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 11:48  [ТС] 13
Я запутался, можно ещё раз?
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,494
27.11.2019, 11:49 14
Лучший ответ Сообщение было отмечено Maref как решение

Решение

В общем, у тебя есть 2 конструктора разных

Elips() и Elips(int, int)

в первом инициализируется p
во втором - нет
из кода ты используешь только второй для создания элипса
для создания окружности используется первый автоматически
1
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
27.11.2019, 11:50 15
Лучший ответ Сообщение было отмечено Maref как решение

Решение

Цитата Сообщение от Maref Посмотреть сообщение
class Elips
{
protected:
int p, a, b;
public:
Как минимум, p здесь должно быть типа float, и нужно его проинициализировать здесь тоже
C++
1
2
3
4
5
6
Elips(int a, int b)
    {
                p = 3.14;
        this->a = a;
        this->b = b;
    }
1
0 / 0 / 0
Регистрация: 07.06.2019
Сообщений: 20
27.11.2019, 15:57  [ТС] 16
Понял, сейчас попробую.

Добавлено через 4 часа 1 минуту
Всё теперь работает я немного подправил и теперь всё ок. Большое спасибо.

Добавлено через 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <cmath>
using namespace std;
class Elips
{
protected:
    int a, b;
    float p;
public:
    Elips()
    {
        p = 0;
        a = 0;
        b = 0;
    }
    Elips(int a, int b, float p)
    {
        this->a = a;
        this->b = b;
        this->p = p;
    }
    float long1()
    {
        float elips_long;
        return elips_long = p * (a + b);
    }
};
class Circle : public Elips
{
protected:
    int r;
public:
    Circle(int r, float p)
    {
        this->r = r;
        this->p = p;
    }
    float long2()
    {
        float circle_long;
        return circle_long = 2 * p * r;
    }
};
int main()
{
    setlocale(LC_ALL, "russian");
    int c, d;
    float pi;
    int t;
    float long1, long2;
    pi = 3.14;
    cout << "Введите полуоси эллипса: " << endl;
    cin >> c >> d;
    cout << "Введите радиус окружности: " << endl;
    cin >> t;
    Elips* elips = new Elips(c, d, pi);
    Circle* circle = new Circle(t, pi);
 
    long1 = elips->long1();
    long2 = circle->long2();
    if (long2>long1) cout << "<Длина больше у окружности и она равна: " << long2 << endl;
    else if (long1>long2) cout << "Длина больше у эллипса и она равна:" << long1 << endl;
    else cout << "Длина равная" << endl;
    system("Pause");
    return 0;
}
0
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
27.11.2019, 16:03 17
Цитата Сообщение от Maref Посмотреть сообщение
Если кому интересно, то правильный вариант кода:
Число ПИ - это константа, поэтому не нужно её хранить в классе. Тогда и круг не нужно будет наследовать от эллипса
C++
1
2
3
4
5
6
7
using namespace std;
static const double PI = 3.14159265358979323846;
class Elips
{
protected:
int a, b;
//float p;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2019, 16:03
Помогаю со студенческими работами здесь

Написала программу, а когда нажимаю на кнопку вычислить произведение, выдаёт рандомные числа, не могу понять в
Написала программу, а когда нажимаю на кнопку вычислить произведение, выдаёт рандомные числа, не...

Как сделать в bash рандомные значения
Мне нужно чтобы файл bash выдавал рандомные значения, послу выводил из в файл и в нем раставлял...

Функция rand() генерирует не совсем рандомные значения
Проблема заключается в следующем: Когда цикл в мэйне обращается к ф-ции &quot;func()&quot;, то при первом ...

Как открывать в алфавитном порядке и выводить рандомные значения в файл
В папке и ее подкаталогах находить все файлы bat и запускать их в алфавитном порядке. Каждый из...


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

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

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