1 Востаннє редагувалося olena_sherstnyakova (17.12.2012 12:31:38)

Тема: перевантажений оператор вводу-виводу

Створити клас computer, який містить елементи: processor (тип char), price (тип int), memory (тип int). Скласти програму, яка використовує перевантажений оператор вводу-виводу і виводить на екран елементи класу у форматі
        Intel - 5242 grn., 256 K

проблема от в чому: треба передбачити помилку користувача, якщо замість типу  int в price, користувач введе стрічку, потрібно аби вибила помилка. в мене зроблено через for і відповідно воно працює не правильно....можливо варто зробити через try catch (та, на жаль, не можу розібратися в цьому)

#include<iostream.h>
#include<conio.h>
class computer
{         char processor[30];
          int price;
          int memory;
          public:
          friend ostream & operator <<(ostream & stream,computer obj);
          friend istream & operator >>(istream & stream,computer & obj);
};

istream & operator >>(istream & stream,computer & obj)
{
        cout<<"Vvedit processor, ciny i pamjat: \n"<< endl;
        stream >> obj.processor;
        stream>> obj.price;
        cout<<obj.price;

    if (obj.price == 1702057308)
            {
             cout<<"pomulka,ne pravulno vvedena cina, bud' laska, zavershit programy ta pochnit' znovy \n" <<endl;
            }      
        
        stream>> obj.memory;
        cout<<endl;
        return stream;
                
}


ostream & operator <<(ostream & stream,computer obj)
{
  stream << obj.processor <<" - "<< obj.price <<" grn.,"<< obj.memory <<"K"<<endl;
  return stream;
}

int main()
{
    int n = 1;
    computer *mashuna= new computer[n];
    for(int i=0;i<n;++i)
    {
            cout<<" Vvedit "<<i+1<<" computer"<<endl;
            cin>>mashuna[i];
    }
    
    cout<<"__________________________________"<<endl;
    for(int i=0;i<n;++i)
      {cout<<mashuna[i];}
    delete [] mashuna; 
    getch();
    return 0;
}

Re: перевантажений оператор вводу-виводу

Я в cpp не сильний, та все ж знайшов наступне:
IsNumeric() function in c++

Подякували: olena_sherstnyakova1

3

Re: перевантажений оператор вводу-виводу

ок, тепер наче працює) я дописла.
але ніхто не в курсі як позбутися сміття шо в результаті вибиває??

#include<iostream.h>
#include<conio.h>
class computer
{         char processor[30];
          int price;
          int memory;
          public:
          friend ostream & operator <<(ostream & stream,computer obj);
          friend istream & operator >>(istream & stream,computer & obj);
};

istream & operator >>(istream & stream,computer & obj)
{
        cout<<"Vvedit processor, ciny i pamjat: \n"<< endl;
        stream >> obj.processor;
        stream>> obj.price;
        cout<<obj.price;


    if( std::cin.fail() )
    {
        std::cout << "Input was not an integer" << std::endl ;
        std::cin.clear() ;
    }
    
        stream>> obj.memory;
        cout<<endl;
        return stream;
                
}


ostream & operator <<(ostream & stream,computer obj)
{
  stream << obj.processor <<" - "<< obj.price <<" grn.,"<< obj.memory <<"K"<<endl;
  return stream;
}

int main()
{
    int n = 1;
    computer *mashuna= new computer[n];
    for(int i=0;i<n;++i)
    {
            cout<<" Vvedit "<<i+1<<" computer"<<endl;
            cin>>mashuna[i];
    }
    
    cout<<"__________________________________"<<endl;
    for(int i=0;i<n;++i)
      {cout<<mashuna[i];}
      
    delete [] mashuna; 
    getch();
    return 0;
}

4

Re: перевантажений оператор вводу-виводу

Під сміттям ви маєте на увазі виведення ціни? За це відповідає рядок під номером 17.

5

Re: перевантажений оператор вводу-виводу

ні, оце насправді
(якщоо ввести ціну, як стрічку, то вибиває отаку штуку: "1281122767 Input data...")
чи не можна  прибрати якось ці цифри??

6

Re: перевантажений оператор вводу-виводу

Не розумію в чому проблема. Може у нас різні компілятори.

Leonids-MacBook-Pro:~ leo$ ./test
Vvedit 1 computer
Vvedit processor, ciny i pamjat:

Test1 100 100

__________________________________
Test1 - 100 grn.,100K
Leonids-MacBook-Pro:~ leo$ ./test
Vvedit 1 computer
Vvedit processor, ciny i pamjat:

Test2 test test
Input was not an integer

__________________________________
Test2 - 0 grn.,0K

7

Re: перевантажений оператор вводу-виводу

напевне