Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > структуры


Автор: papam 3.2.2006, 08:46
Помогите пожалуста найти и исправить ошибки.Вот условие:
Создайте структуру, описывающую дробь. Реализуйте арифметические операции с дробями:
сумму
разность
частное
произведение

Вот прога:
Код

#include<iostream.h>
void main()


struct rational
{
    rational(int p=1, int k=1)
        : a(p), b(p) {}
    int a,b;
    cin>>a"\n";
    cin>>b"\n";
    rational& operator+(const rational& s)
    {
        int k=b*s.b;
        a=a*s.b+s.a*b;
        b=k;
        cout<<a<<"\n";
        return *this;
    }
    rational& operator-(const rational& s)
    {
        int k=b*s.b;
        a=a*s.b-s.a*b;
        b=k;
        cout<<a<<"\n"
        return &this;
    }
    rational& operator\(const rational& s)
    {
        int k=b*s.b;
        a=(a*s.b)\(s.a*b);
        b=k;
        cout<<a<<"\n"
        return &this;
    }

    rational& operator * (const rational& s)
    {
        int k=b*s.b;
        a=(a*s.b)*(s.a*b);
        b=k;
        cout<<a<<"\n";
        return &this;
    }
};

Огромное спасибо!

Автор: JackYF 3.2.2006, 09:03
Код

#include<iostream.h>    
struct rational    
{    
    int a,b;
    rational(int p=1, int k=1)    
        : a(p), b(p) {}    
    //cin>>a"\n";    
    //cin>>b"\n";    
    rational operator+(const rational& s)    
    {    
        int kb=b*s.b;    
        int ka=a*s.b+s.a*b;    
        return rational(ka,kb);
    }    
    rational operator-(const rational& s)    
    {    
        int bk=b*s.b;    
        int ak=a*s.b-s.a*b;    
        return rational(ka,kb);
    }    
    rational operator\(const rational& s)    
    {    
        int ka=a*s.b;    
        int kb=b*s.a;
        return rational(ka,kb);    
    }    
    rational operator * (const rational& s)    
    {    
        int kb=b*s.b;    
        int ka=a*s.a;
        return rational(ka,kb);    
    }    
};

void main()
{

}


Если не ошибаюсь, то так...

Автор: Exekutor 3.2.2006, 09:08
Код

#include <iostream.h>

struct drob{
     int chis;
     int znam;};

void summ(int a, int b);
void raznost(int a, int b);
void chastnoe(int a, int b);
void proizvedenie(int a, int b);

int main(){
      int x, y, x1, y1;
      cout << "Введите числитель и знаменатель первой дроби: ";
      cin >> drob.chis >> drob.znam;
      summ(drob.chis, drob.znam);
      raznost(drob.chis, drob.znam);
      chastnoe(drob.chis, drob.znam);
      proizvedenie(drob.chis, drob.znam);
      cout << "Введите числитель и знаменатель второй дроби: ";
      cin >> drob.chis >> drob.znam;
      summ(drob.chis, drob.znam);
      raznost(drob.chis, drob.znam);
      chastnoe(drob.chis, drob.znam);
      proizvedenie(drob.chis, drob.znam);
      return 0;}

void summ(int a, int b){
      //your code
}

void raznost(int a, int b){
       //your code
}

void chastnoe(int a, int b){
        //your code
}

void proizvedenie(int a, int b){
        //your code
}


Автор: papam 3.2.2006, 09:50
Чето не хочет прога работать? :-(

Автор: Exekutor 3.2.2006, 10:02
В моей проге можешь сделать массив из двух структур и цикл ввода а в функциях просто оперирую с элементами массива.

Автор: papam 3.2.2006, 10:06
Слушай напиши пожалуста,а?

Автор: BreakPointMAN 3.2.2006, 11:41
Цитата(papam @ 3.2.2006, 09:50 Найти цитируемый пост)

Чето не хочет прога работать? :-(

Какая прога? Что ты пытаешься запустить?

Автор: Neitron 3.2.2006, 12:03
Мне нравится как ф-ции main у Executer'a начинается.

Автор: CPlusPlusFAN 4.2.2006, 02:25
Она должна возвращать int

Автор: Razmarin 15.3.2006, 23:24
а вот так пойдёт?
Код

#include <iostream>
using namespace std;
struct drob {
    int numerator;
    int denumerator;
    int numerator1;
    int denumerator1;
    char sign;
};
void main()
{
    drob d;
    cout<<"Enter first numerator and denumerator ";cin>>d.numerator>>d.denumerator;
    cout<<"What to do?";cin>>d.sign;
    cout<<"Enter second denumerator and numerator ";cin>>d.denumerator1>>d.numerator1;
    if(d.sign=='+')
    {
        cout<<d.numerator<<"/"<<d.denumerator<<"+"<<d.numerator1<<"/"
                                <<d.denumerator1<<"="<<d.numerator+d.numerator1<<"/"<<d.denumerator+d.denumerator1;
    }
    else if(d.sign=='-')
    {
        cout<<d.numerator<<"/"<<d.denumerator<<"-"<<d.numerator1<<"/"<<d.denumerator1
                                <<"="<<d.numerator-d.numerator1<<"/"<<d.denumerator-d.denumerator1;
    }
    else if(d.sign==':')
    {
        cout<<d.numerator<<"/"<<d.denumerator<<":"<<d.numerator1<<"/"<<d.denumerator1<<"="
                                <<d.numerator/d.numerator1<<"/"<<d.denumerator/d.denumerator1;
    }
    else if (d.sign=='*')
    {
        cout<<d.numerator<<"/"<<d.denumerator<<"*"<<d.numerator1<<"/"<<d.denumerator1
                                <<"="<<d.numerator*d.numerator1<<"/"<<d.denumerator*d.denumerator1;
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)