Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 30.04.2015, 18:06   #1
Андрей Иванов
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 60
Репутация: 10
Сообщение Структура смешанной дроби

Надо создать структуру, которая будет описывать смешанную дробь. Реализовать арифметические операции с дробями:
- сумму
- разность
- частное
- произведение
(написать соответствующие функции).
Код:
#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, 19:12   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,928
Репутация: 1937
По умолчанию

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

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

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;
Павел Бондар вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


04:26.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.