Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
11 / 5 / 3
Регистрация: 20.01.2015
Сообщений: 39
1

Класс дроби. Странные значения

26.09.2015, 00:20. Просмотров 957. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Есть такой код:
Fraction.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef FRACTION_H
#define FRACTION_H
 
 
class Fraction
{
    public:
        Fraction();
        virtual ~Fraction();
        void Sklad(Fraction frac1, Fraction frac2);
        void Show() const;
        void Input();
    protected:
    private:
        int chisl; // Числитель
        int znam; // Знаменатель
};
 
#endif // FRACTION_H

Fraction.cpp
Кликните здесь для просмотра всего текста

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
#include "Fraction.h"
#include <iostream>
 
char ch; // Вспомогательная переменная
 
Fraction::Fraction() : chisl(0), znam(0)
{
    //ctor
}
 
Fraction::~Fraction()
{
    //dtor
}
 
 
void Fraction::Input() // Ввод дроби
{
    std::cout << "Enter the fraction(a/b): ";
    std::cin >> chisl >> ch >> znam;
}
 
 
void Fraction::Sklad(Fraction frac1, Fraction frac2) // Сложение двух дробей
{
    chisl = ( frac1.chisl * frac2.znam + frac2.chisl * frac1.znam );
    znam = frac1.znam * frac2.znam;
}
 
void Fraction::Show() const // Вывод дроби на экран
{
    std::cout << '/n' << chisl << "/" << znam;
}

main.cpp
Кликните здесь для просмотра всего текста

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 "Fraction.h"
 
int main()
{
    Fraction frac1, frac2, frac3;
    char ch; // Вспомогательная переменная
 
    do
    {
        frac1.Input(); // Ввод значения первой дроби
        frac2.Input(); // Ввод значения второй дроби
 
        frac3.Sklad(frac1, frac2); // Сложение первых двух дробей
                                   // И запись в третью 
        frac3.Show(); // Вывод на экран значения третьей дроби
 
        std::cout << "\nRetry?(y/n): ";
        std::cin >> ch;
    }
    while(ch != 'n');
 
 
    return 0;
}

Ввожу значения дробей, например, 1/5 и 3/5. По идеи должно получиться 20/25, но выдаёт 1214220/25.
Не могу понять, в чём ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2015, 00:20
Ответы с готовыми решениями:

Класс обыкновенной дроби
class TFraction { public: signed int numerator; unsigned denominator; TFraction...

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

Организовать класс натуральной дроби
Поле first — целое положительное число, числитель; поле second — целое положительное число,...

Странные значения в созданном массиве
Здравствуйте. При создании массива(bool next_area) в определенном месте он заполняется следующими...

4
231 / 97 / 27
Регистрация: 20.03.2014
Сообщений: 304
26.09.2015, 00:24 2
Лучший ответ Сообщение было отмечено Kuxs как решение

Решение

Цитата Сообщение от Kuxs Посмотреть сообщение
'/n'
может все таки \n
1
11 / 5 / 3
Регистрация: 20.01.2015
Сообщений: 39
26.09.2015, 00:27  [ТС] 3
Ой, извиняюсь за невнимательность. Спасибо.
0
231 / 97 / 27
Регистрация: 20.03.2014
Сообщений: 304
26.09.2015, 00:30 4
На будущее не используйте транслит в коде: замените Sklad на Sum. И вместо
C++
1
void Fraction::Sklad(Fraction frac1, Fraction frac2)
лучше писать так
C++
1
void Fraction::Sum(const Fraction& frac1, const Fraction& frac2)
Почитайте про передачу параметров по ссылке и что это дает.
1
11 / 5 / 3
Регистрация: 20.01.2015
Сообщений: 39
26.09.2015, 00:33  [ТС] 5
Хорошо, спасибо, учту.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2015, 00:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Класс математической дроби и его проблемы
Привет всем!=) В процессе изучения ООП в с++ я решил написать клас математических дробей. Написал...

Написать класс для реализации дроби
Напишите класс для реализации дроби. Предусмотрите поля для числителя и знаменателя и конструктор....

Странные значения уже инициализированной переменной
std::cout &lt;&lt; &quot;Введите кол-во городов\n&quot;; std::cin &gt;&gt; N; city *A = new city; for (int j =...

Странные значения счетчика цикла. ПОМОГИТЕ!
#include &lt;iostream&gt; using namespace std; double unitInterval = 0.2 ; double OX = 0; double...


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

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

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