Массив из элементов класса.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by vorona, 30 Nov 2010.

  1. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    PHP:

    #include<iostream.h>
    #include<conio.h>

    class tv
    {
    private:
    char *marka;
    float cina;
    char *zavod;
    float diag;

    public:
    friend istream &operator>>(istream &istv &x);
    friend ostream &operator<<(ostream &ostv &x);

    tv()
    {
    marka=new char[15];
    zavod=new char[15];
    }
    ~
    tv()
    {
    delete[]marka;
    delete[]zavod;
    }
    };
    istream &operator>>(istream &istv &x)
    {
    cout<<"VVedite marku TV: "<<endl;
    is>>x.marka;
    cout<<"Vvedite cinu TV: "<<endl;
    is>>x.cina;
    cout<<"Vvedite zavod-proizvoditel': "<<endl;
    is>>x.zavod;
    cout<<"VVedite diagonal' ekrana: "<<endl;
    is>>x.diag;
    return 
    is;
    }
    ostream &operator<<(ostream &ostv &x)
    {
    os<<"Marka TV: "<<x.marka<<"\n";
    os<<"Cina TV: "<<x.cina<<"\n";
    os<<"Zavod-proizodotel': "<<x.zavod<<"\n";
    os<<"Diagonal' ekrana: "<<x.diag<<"\n";
    return 
    os;
    }
    void main ()
    {
    clrscr();

    tv *mass;
    mass=new tv[2];


    for (
    int i=0;i<sizeof(mass);i++)
        {
        
    tv q;
        
    cin>>q;
        
    mass[i]=q;
        }
    for (
    int j=0;j<sizeof(mass);j++)
        {
        
    cout<<mass[j];
        }
    }
    Задание: Телевизоры х-ются параметрами: марка, цена, диагональ, завод-производитель, стоимость.

    Нужно создать массив из n-го количества таких телевизоров и вывести его.

    Также нужно реализовать такое: юзер вводит диагональ, марку, цену, завод и из массива вывести телевизоры с этими параметрами.

    Вот я набросал прогу. Она работает, но поля типа char из класса выводятся непонятными символами. Почему?

    Также как реализовать последнее с выбором юзера?
     
  2. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    Помогите найти ошибку и доделать.
     
  3. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    PHP:



    float yourcina
    ;
    cout<<"Vvedite cenu dlja poiska: "<<endl;
    cin>>yourcina;

    for (
    int k=0;k<1;k++)
        {

        
          if (
    mass[k].cina==yourcina)
         {
             
    cout<<"!";
             }
        }


    Пишет:

    tv::cina is not accessible
     
  4. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    попробуй форматированный вывод printf
     
  5. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    Не) Мне нужно перегружать операции зсува) В задании так написано)
     
  6. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    Сделал сам короче)))

    PHP:
    #include<string.h>
    #include<iostream.h>
    #include<conio.h>

    class tv
    {
    private:
    char *marka;
    float cina;
    char *zavod;
    float diag;

    public:
    friend istream &operator>>(istream &istv &x);
    friend ostream &operator<<(ostream &ostv &x);
    friend void uservvod(tv &x);


    tv()
    {
    marka=new char[15];
    zavod=new char[15];
    }
    ~
    tv()
    {
    delete[]marka;
    delete[]zavod;
    }
    };
    istream &operator>>(istream &istv &x)
    {
    cout<<"VVedite marku TV: "<<endl;
    is>>x.marka;
    cout<<"Vvedite cinu TV: "<<endl;
    is>>x.cina;
    cout<<"Vvedite zavod-proizvoditel': "<<endl;
    is>>x.zavod;
    cout<<"VVedite diagonal' ekrana: "<<endl;
    is>>x.diag;
    return 
    is;
    }
    ostream &operator<<(ostream &ostv &x)
    {
    os<<"Marka TV: "<<x.marka<<"\n";
    os<<"Cina TV: "<<x.cina<<"\n";
    os<<"Zavod-proizodotel': "<<x.zavod<<"\n";
    os<<"Diagonal' ekrana: "<<x.diag<<"\n";
    return 
    os;
    }

    void uservvod(tv &x)
    {
    char user_zavod[10];
    float user_cinauser_diag;
    cout<<"\n\nPois. Vvedite zavod, cinu, diagonal':"<<'\n';
    cin>>user_zavod>>user_cina>>user_diag;
    for (
    int i;i<2;i++)
    { if((
    strncmp(x.zavod,user_zavod,10))&&(x.cina<=user_cina)&&(x.diag>=user_diag))
    cout<<"Marka: "<<x.marka<<" Zavod: "<<x.zavod<<" Cina: "<<x.cina<<" Diagonal': "<<x.diag<<'\n';
    else
    cout<<"Nichego ne naideno"<<'\n';
       }
    }


    void main ()
    {
    clrscr();


    tv *mass;
    mass=new tv[1];


    for (
    int i=0;i<1;i++)
        {
        
    tv q;
        
    cin>>q;
        
    mass[i]=q;
        }
    for (
    int j=0;j<1;j++)
        {
        
    cout<<mass[j];
        }


    for (
    int k=0;k<1;k++)
        {

        
          
    uservvod(mass[k]);
        }

    }
     
  7. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    прошу прощения
    но я не понял этот кусок кода

    PHP:
    tv *mass;   
    mass=new tv[2];
    можешь расказать что тут происходит?
     
  8. ЕгоАкк

    ЕгоАкк Banned

    Joined:
    21 Sep 2009
    Messages:
    84
    Likes Received:
    18
    Reputations:
    0
    выделение памяти под два телика.