Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлом классов, Нужно написать файл классов 
:(
    Опции темы
Sexofall
Дата 25.3.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.3.2008

Репутация: нет
Всего: нет



Ребят помогите написать фал классов. Я нашёл файлы cpp, но h файл никак нету ....

Код

//head.cpp
#include <iostream>
#include <conio.h>
#include "head.h"

using namespace std;
Multinominal::Multinominal(usi _n, double* _dMN)
{
    this->n = _n+1; //перебелываем степень многочлена в кол-во элементов в нем
    this->dMN = new double [n]; //динамически создаем массив
    if (!_dMN)//если указатель на массив не указывает на массив:)
        //то соответственно заполнить его нулями, чтобы не было лишних неудобств
        for (int i = 0; i<n; i++)
            dMN[i] = 0;
    else
        //иначе заполнить его значениями переданного массива
        //причем заполняем задом наперед, для удобства работы с многочленами
        for (int i = n-1; i>=0; i--)
            dMN[i] = _dMN[i];
}
Multinominal::~Multinominal()
{    
    delete [] this->dMN; //удалеям из памяти наш созданный массив
}

void Multinominal:: SetMN (void)
    {
        cout<<"Vvedite znachenija mnogochlena: ";
        //вводим значения многочлена задом наперед для удобства
        for (int i = n-1; i>=0; i--)
            cin>>this->dMN[i];
    }
void Multinominal:: GetMN (void)
    {
        //выводим наш многочлен, соответственно тоже задом наперед, 
        //так как вводили тоже задом наперед 
        for (int i = n-1; i>=1; i--)
        {
            cout.flags(ios::showpos);
            cout<<dMN[i]<<"*x"<<"^";
            cout.unsetf(cout.flags());
            cout<<i;
        }
        cout.flags(ios::showpos);
        cout<<dMN[0];
        cout.unsetf(cout.flags());
    }
Multinominal& Multinominal::operator =(const Multinominal &MN)
{
    if (&MN == this) //проверка на самокопирование
        return *this;
    delete [] dMN; //уничтожить ранее существовавший массив
    this->n = MN.n; //задаем новому массиву новую размерность
    this->dMN = new double [this->n]; //динамически создаем новый массив
    //заполняем массив значениями копируемого объекта
    for (int i = n-1; i>=0; i--)
        this->dMN[i] = MN.dMN[i];
    return *this; //возвращаем указатель на данный объект
}
Multinominal Multinominal::operator +(Multinominal& MN)
{    
    usi s,n1; //s - кол-во елементов в меньшем многочлене
              //n1 - кол-во элементов в большем массиве
    double * dmn; //массив элементов
    if (this->n < MN.n) //если кол-во элементов текущего класса больше передаваемого, то
    {
        n1 = MN.n; //n1- кол-во элементов передаваемого объекта
        s = this->n-1; //s - кол-во элементов текущего многочлена - 1
    }
    else //иначе наоборот
    {
        n1 = this->n;
        s = MN.n-1;
    }
    dmn = new double [n1]; //создаем массив временных элементов
    //складываем элементы первого мнгогочлена с элементами второго
    for (int i = 0; i<n1; i++)
    {
        if (i>s)
        {
            dmn[i] = this->n > MN.n ? this->dMN[i] : MN.dMN[i];
        }
        else
        {
            dmn[i] = this->dMN[i] + MN.dMN[i];
        }
    }
    return Multinominal(n1-1,dmn);//возвращаем новый объект
}
//все тоже самое, только вместо операции '+' используется операция '-'
Multinominal Multinominal::operator -(Multinominal & MN)
{
    usi s,n1;
    double * dmn;
    if (this->n <= MN.n)
    {
        n1 = MN.n;
        s = this->n-1;
    }
    else
    {
        n1 = this->n;
        s = MN.n-1;
    }
    dmn = new double [n1];
    for (int i = 0; i<n1; i++)
    {
        if (i>s)
        {
            dmn[i] = this->n > MN.n ? this->dMN[i] : MN.dMN[i];
        }
        else
        {
            dmn[i] = this->dMN[i] - MN.dMN[i];
        }
    }
    return Multinominal(n1-1,dmn);
}
//все тоже самое, только вместо операций '+' или '-' используется операция '*'
Multinominal Multinominal::operator *(Multinominal & MN)
{
    usi s,n1;
    double * dmn;
    if (this->n < MN.n)
    {
        n1 = MN.n;
        s = this->n-1;
    }
    else
    {
        n1 = this->n;
        s = MN.n-1;
    }
    dmn = new double [n1];
    for (int i = 0; i<n; i++)
    {
        if (i>s)
        {
            dmn[i] = this->n > MN.n ? this->dMN[i] : MN.dMN[i];
        }
        else
        {
            dmn[i] = this->dMN[i] * MN.dMN[i];
        }
    }
    return Multinominal(n1-1,dmn);
}
double Multinominal::value (double _x)
{
        double value = 0, x;
        //вычисляем значение мнггочлена от аргуменита х
        for( int i = n-1; i>=1; i-- )
        {
            x = _x;
            //для этого вычисляем степенные значения аргумента х
            for ( int j = i; j>1; j--)
                x *= x;
            value+=(this->dMN[i])*x;//умножаем его на коэффицент многочлена и прибавляем к основной сумме
        }
        return value+=this->dMN[0]; //прибавляем к основной сумме последний элемент и возвращаем значение
    }


Код

//main.cpp
#include <iostream>
using namespace std;
#include <conio.h>
#include "head.h"

int main()
{
    
    usi n = 0;    //степерь многочлена
    int menu;    
    do
    {
    cout<<"Vvedite stepen' pervogo mnogochlena (y1): ";
    cin>>n;
    }while(n<1);
    Multinominal MN1 = Multinominal(n); //объявляем объект
    do
    {
        cout<<"Vvedite stepen' vtorogo mnogochlena (y2): ";
        cin>>n;
    }while(n<1);
    Multinominal MN2 = Multinominal(n); //объявляем объект
    Multinominal MN3 = Multinominal();  //объявляем обект с параметрами по умолчинию
    MN1.SetMN(); //задаем параметры первого многочлена
    MN2.SetMN(); //задаем параметры второго многочлена
    do
    {
        system("cls");
        cout<<"1. Summa mnogochlenov"<<endl;
        cout<<"2. Raznost' mnogoclenov"<<endl;
        cout<<"3. Proizvedenie mnogochlenov"<<endl;
        cout<<"4. Vicheslenie znachenija"<<endl;
        cout<<"0. Exit"<<endl;
        cout<<"Vvedite punkt menu: ";
        cin>>menu;
        switch (menu)
        {
        case 1:
            /**********************сложение многочленов*********************/
            system("cls");
            cout<<"mn1: "; MN1.GetMN(); //выводим первый многочлен
            cout<<endl<<"    +"<<endl;
            cout<<"mn2: "; MN2.GetMN(); //выводим второй многочлен
            MN3 = MN1+MN2; //складываем первый многочлен со всторым (работает перегруженная операция присваивания),
            //а также перегруженная операция сложения 
            cout<<endl<<"    ="<<endl;
            cout<<"mn3: "; MN3.GetMN();//выводим третий многочлен
            getch();
            break;
        case 2:
            /********************разность многочленов*********************/
            system("cls");
            cout<<"mn1: "; MN1.GetMN(); 
            cout<<endl<<"    -"<<endl;
            cout<<"mn2: "; MN2.GetMN();
            MN3 = MN1 - MN2; //вычитаем из первого многочлена второй (работает перегруженная операция присваивания),
            //а также перегруженная операция вычитания
            cout<<endl<<"    ="<<endl;
            cout<<"mn3: "; MN3.GetMN();
            getch();
            break;
        case 3:
            /*********************произведение многочленов*********************/
            system("cls");
            cout<<"mn1: "; MN1.GetMN();
            cout<<endl<<"    *"<<endl;
            cout<<"mn2: "; MN2.GetMN();
            MN3 = MN2 * MN1;//умножаем первый многочлен на второй (работает перегруженная операция присваивания),
            //а также перегруженная операция умножения
            cout<<endl<<"    ="<<endl;
            cout<<"mn3: "; MN3.GetMN();
            getch();
            break;
        case 4:
            double x,value1, value2;
            system("cls");
            cout<<"Vvedite argument: ";
            cin>>x;
            value1 = MN1.value(x); //вычисление значения первого многочлена при х
            value2 = MN2.value(x); //вычисление значения второго многочлена при х
            cout<<"MN1: "<<value1<<endl;
            cout<<"MN2: "<<value2<<endl;
            getch();
            break;
        case 0: return 0;
        }
    }while(menu!=0);
}


M
archimed7592
Есть такая замечательная кнопочка "Предпросмотр", или, если уж поторопился, то не менее замечательная кнопочка "Редактировать". Рекомендую ими пользоваться.


Это сообщение отредактировал(а) archimed7592 - 26.3.2008, 15:14
PM MAIL   Вверх
Dennnis
Дата 25.3.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: 1
Всего: 4



head.h:

Код

class Multinominal
{
public:
    Multinominal(usi _n, double* _dMN);
    ~Multinominal();


    void SetMN (void);

    void GetMN (void);

    Multinominal& operator =(const Multinominal &MN);
    Multinominal operator +(Multinominal& MN);
    Multinominal operator -(Multinominal & MN);
    Multinominal operator *(Multinominal & MN);
    double value (double _x);
private:
    usi n;
    double *dMN;
};


Это сообщение отредактировал(а) Dennnis - 25.3.2008, 15:23
--------------------
Get Rich or Die Tryin'
PM   Вверх
Sexofall
Дата 26.3.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.3.2008

Репутация: нет
Всего: нет



Спасибо. Но она чьё-то всё-равно выдаёт ошибки


Это сообщение отредактировал(а) Sexofall - 26.3.2008, 15:09
PM MAIL   Вверх
archimed7592
Дата 26.3.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Sexofall, ты думаешь сейчас господа телепаты включат свои способности и угадают кто, в каком месте, как и какие ошибки выдаёт?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Sexofall
Дата 26.3.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.3.2008

Репутация: нет
Всего: нет



Господа телепаты запарились бы угадывать стока ошибок :

 ! 
archimed7592
Господин умник вроде умеет пользоваться тэгом code?

Код

--------------------Configuration: Laba_1 - Win32 Debug--------------------
Compiling...
head.cpp
g:\c\oop\laba1\laba_1\head.h(4) : error C2629: unexpected 'class Multinominal ('
g:\c\oop\laba1\laba_1\head.h(4) : error C2238: unexpected token(s) preceding ';'
g:\c\oop\laba1\laba_1\head.h(18) : error C2146: syntax error : missing ';' before identifier 'n'
g:\c\oop\laba1\laba_1\head.h(18) : error C2501: 'usi' : missing storage-class or type specifiers
g:\c\oop\laba1\laba_1\head.h(18) : error C2501: 'n' : missing storage-class or type specifiers
G:\C\OOP\Laba1\Laba_1\head.cpp(7) : error C2065: 'usi' : undeclared identifier
G:\C\OOP\Laba1\Laba_1\head.cpp(7) : error C2146: syntax error : missing ')' before identifier '_n'
G:\C\OOP\Laba1\Laba_1\head.cpp(7) : error C2350: 'Multinominal::Multinominal::Multinominal' is not a static member
G:\C\OOP\Laba1\Laba_1\head.cpp(7) : error C2059: syntax error : ')'
G:\C\OOP\Laba1\Laba_1\head.cpp(8) : error C2143: syntax error : missing ';' before '{'
G:\C\OOP\Laba1\Laba_1\head.cpp(8) : error C2447: missing function header (old-style formal list?)
G:\C\OOP\Laba1\Laba_1\head.cpp(30) : error C2065: 'n' : undeclared identifier
G:\C\OOP\Laba1\Laba_1\head.cpp(53) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(53) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(54) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(62) : error C2146: syntax error : missing ';' before identifier 's'
G:\C\OOP\Laba1\Laba_1\head.cpp(62) : error C2065: 's' : undeclared identifier
G:\C\OOP\Laba1\Laba_1\head.cpp(62) : error C2065: 'n1' : undeclared identifier
G:\C\OOP\Laba1\Laba_1\head.cpp(65) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(65) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(67) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(68) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(72) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(73) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(81) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(81) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(88) : error C2661: 'Multinominal::Multinominal' : no overloaded function takes 2 parameters
G:\C\OOP\Laba1\Laba_1\head.cpp(93) : error C2146: syntax error : missing ';' before identifier 's'
G:\C\OOP\Laba1\Laba_1\head.cpp(95) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(95) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(97) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(98) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(102) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(103) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(110) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(110) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(117) : error C2661: 'Multinominal::Multinominal' : no overloaded function takes 2 parameters
G:\C\OOP\Laba1\Laba_1\head.cpp(122) : error C2146: syntax error : missing ';' before identifier 's'
G:\C\OOP\Laba1\Laba_1\head.cpp(124) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(124) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(126) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(127) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(131) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(132) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(139) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(139) : error C2039: 'n' : is not a member of 'Multinominal'
        g:\c\oop\laba1\laba_1\head.h(2) : see declaration of 'Multinominal'
G:\C\OOP\Laba1\Laba_1\head.cpp(146) : error C2661: 'Multinominal::Multinominal' : no overloaded function takes 2 parameters
main.cpp
g:\c\oop\laba1\laba_1\head.h(4) : error C2629: unexpected 'class Multinominal ('
g:\c\oop\laba1\laba_1\head.h(4) : error C2238: unexpected token(s) preceding ';'
g:\c\oop\laba1\laba_1\head.h(18) : error C2146: syntax error : missing ';' before identifier 'n'
g:\c\oop\laba1\laba_1\head.h(18) : error C2501: 'usi' : missing storage-class or type specifiers
g:\c\oop\laba1\laba_1\head.h(18) : error C2501: 'n' : missing storage-class or type specifiers
G:\C\OOP\Laba1\Laba_1\main.cpp(11) : error C2065: 'usi' : undeclared identifier
G:\C\OOP\Laba1\Laba_1\main.cpp(11) : error C2146: syntax error : missing ';' before identifier 'n'
G:\C\OOP\Laba1\Laba_1\main.cpp(11) : error C2065: 'n' : undeclared identifier
G:\C\OOP\Laba1\Laba_1\main.cpp(18) : error C2440: 'type cast' : cannot convert from 'int' to 'class Multinominal'
        No constructor could take the source type, or constructor overload resolution was ambiguous
G:\C\OOP\Laba1\Laba_1\main.cpp(24) : error C2440: 'type cast' : cannot convert from 'int' to 'class Multinominal'
        No constructor could take the source type, or constructor overload resolution was ambiguous
Error executing cl.exe.

Laba_1.exe - 57 error(s), 0 warning(s)





Это сообщение отредактировал(а) archimed7592 - 26.3.2008, 23:43
PM MAIL   Вверх
archimed7592
Дата 26.3.2008, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Проблема здесь:
Цитата(Dennnis @  25.3.2008,  13:48 Найти цитируемый пост)
 usi n;

Неизвестно что такое usi(понятно, что тип, но какой?). Разберись для начала с этим(нужно перед классом написать что-то вроде
Код

typedef blablabla usi; // вместо blablabla написать нужный тип



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Sexofall
Дата 28.3.2008, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.3.2008

Репутация: нет
Всего: нет



Спаисбо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.