Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2015, 17:06   #1
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
Сообщение Структура смешанной дроби

Надо создать структуру, которая будет описывать смешанную дробь. Реализовать арифметические операции с дробями:
- сумму
- разность
- частное
- произведение
(написать соответствующие функции).
Код:
#include<iostream>
using namespace std;
 
struct MyStruct{
        int first;
        int second;
        int third;
}d1, d2;
int menu();
void suma(MyStruct, MyStruct);
void raz(MyStruct, MyStruct);
void chast(MyStruct, MyStruct);
void proiz(MyStruct, MyStruct);
void main(){
        setlocale(LC_ALL, "rus");
        cout << "Первое" << endl;
        cout << "Введите целое число" << endl;
        cin >> d1.first;
        cout << "Введите числитель" << endl;
        cin >> d1.second;
        cout << "Введите знаменитель" << endl;
        cin >> d1.third;
        cout << "Второе" << endl;
        cout << "Введите целое число" << endl;
        cin >> d2.first;
        cout << "Введите числитель" << endl;
        cin >> d2.second;
        cout << "Введите знаменитель" << endl;
        cin >> d2.third;
        cout << menu();
        system("pause");
}
int menu(){
        cout << "1. Сложение" << endl;
        cout << "2. Вычитание" << endl;
        cout << "3. Умножение" << endl;
        cout << "4. Деление" << endl;
        int a = 0;
        cin >> a;
        switch (a){
        case 1:{
                suma(d1, d2);
                break;
        }
        case 2:{
                raz(d1, d2);
                break;
        }
        case 3:{
                proiz(d1, d2);
                break;
        }
        case 4:{
                        chast(d1, d2);
                break;
        }
        default:{
                cout << "Введите правильно" << endl;
                return menu();
        }
        }
}
int NOK(int a, int b)
{
        float nok = d1.third;
 
        for (int i = nok; i>0; i++)
        {
                if ((i% a == 0) && (i%b == 0))
                {
                        return i;
                }
        }
}
 
void suma(MyStruct d1, MyStruct d2){
        
        int suma = 0, sum1 = 0, sum2 = 0;
        
        cout << "Сумма дробей:" << endl;
        suma = (d1.second * d1.third) + (d2.second * d2.third);
        sum1 = NOK(d1.third, d2.third);
        sum2 = d1.first+d2.first;
        if (sum1== suma)
        {
                cout << sum2 + sum1 << endl;
        }
        else
        {
                cout << "\t" << sum2;
                cout << "       " <<suma << " \n \t\t-\n\t\t" << sum1 << endl;
        }
}
 
void raz(MyStruct d1, MyStruct d2){
 
        int suma = 0, sum1 = 0, sum2 = 0;
 
        cout << "Сумма дробей:" << endl;
        suma = (d1.second * d1.third) - (d2.second * d2.third);
        sum1 = NOK(d1.third, d2.third);
        sum2 = d1.first - d2.first;
        if (sum1 == suma)
        {
                cout << sum2 - sum1 << endl;
        }
        else
        {
                cout << "\t" << sum2;
                cout << "       " << suma << " \n \t\t-\n\t\t" << sum1 << endl;
        }
}
void chast(MyStruct d1, MyStruct d2){
        int d = 0, c = 0,j=0;
        d = d1.first*d1.third + d1.second;
        c = d2.first*d2.third + d2.second;
        cout << d*d2.third << "/" <<c*d1.third;
}
void proiz(MyStruct d1, MyStruct d2){
        int d = 0, c = 0;
        d = d1.first*d1.third + d1.second;
        c = d2.first*d2.third + d2.second;
        cout << d*c << "/" << d1.third*d2.third << endl;
}
НЕ правильно считает. Что не так написал подскажите?
Андрей Иванов вне форума Ответить с цитированием
Старый 30.04.2015, 18:12   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Шо, опять?
waleri вне форума Ответить с цитированием
Старый 30.04.2015, 18:36   #3
Андрей Иванов
Пользователь
 
Регистрация: 13.04.2015
Сообщений: 60
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Шо, опять?
Не правильно считает сумму и разность? Где ошибка?
Андрей Иванов вне форума Ответить с цитированием
Старый 07.05.2015, 20:21   #4
Павел Бондар
Заблокирован
 
Регистрация: 07.05.2015
Сообщений: 1
По умолчанию

int d = 0, c = 0,j=0;
d = d1.first*d1.third + d1.second;
c = d2.first*d2.third + d2.second;
cout << d*d2.third << "/" <<c*d1.third;
Павел Бондар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура дроби Андрей Иванов Общие вопросы C/C++ 5 29.04.2015 16:13
Структура DateTime, битовая структура prepare2die Помощь студентам 1 10.03.2015 13:32
дроби Alexander1205 Общие вопросы C/C++ 7 10.06.2011 20:40
выбор чисел из смешанной строки zetrix Microsoft Office Excel 0 31.10.2006 07:30