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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить информацию в класс 
:(
    Опции темы
AleksDDem
Дата 2.6.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



здравствуйте....  помогите   переделать  данную  прогу

#include <iostream>
#include <string>
struct boxer
{
    std::string m_name;
    std::string m_surname;
    int m_wins_count;
    int m_defeats_count;
    int m_weight;
    int m_height;
    boxer(const std::string& name, const std::string& surname, int wins_count, int defeats_count, int weight, int height):m_name(name), m_surname(surname), m_wins_count(wins_count), m_defeats_count(defeats_count), m_weight(weight), m_height(height){}
};
const int SIZE = 4;
class manager
{
private:
    boxer* boxer_arr[SIZE];
public:
    void display_boxer(int num)
    {
        std::cout << "Name: " << boxer_arr[num]->m_name << std::endl;
        std::cout << "Surname: " << boxer_arr[num]->m_surname << std::endl;
        std::cout << "Number of wins: " << boxer_arr[num]->m_wins_count << std::endl;
        std::cout << "Number of defeats: " << boxer_arr[num]->m_defeats_count << std::endl;
        std::cout << "Wight: " << boxer_arr[num]->m_weight << std::endl;
        std::cout << "Height: " << boxer_arr[num]->m_height << std::endl;
    }
    manager()
    {
        boxer_arr[0] = new boxer("Mike", "Taison", 49, 4, 98, 180);
        boxer_arr[1] = new boxer("Vladimir", "Klichko", 42, 6, 110, 200);
        boxer_arr[2] = new boxer("Vitaliy", "Klichko", 39, 4, 102, 194);
        boxer_arr[3] = new boxer("lennox", "lewis", 47, 1, 112, 198);
    }
    ~manager()
    {
        for (int i = 0; i < SIZE; ++i) delete boxer_arr[i];
    }
};
int main(int argc, char* argv[])
{    
    int num = 0;
    manager boxers;
    std::cout << "Enter the number of boxer to show: ";
    std::cin >> num;
    boxers.display_boxer(num);
    std::cin.get();
    return 0;
}



В  данной  программе  уже   изначально  храняться  данные о  боксерах  в   классе.  
Помогите   сделать  так   чтобы  данные   можно  было  удалять,  добавлять  и   изменять  в  классе! 

заранее очень  благодарен!
PM MAIL   Вверх
Greeen
Дата 2.6.2007, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Надо реорганизовать класс менеджера, т.к. такое хранение записей никуда не годится.

Добавлено @ 15:55
Юзаем, например, vector<boxer> для хранения и STL'ные алгоритмы для поиска и удаления итемов.

Добавлено @ 15:55
В поиск и в гугл если не знаешь STL.

Это сообщение отредактировал(а) Greeen - 2.6.2007, 15:56


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
AleksDDem
Дата 3.6.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я   с  твоих  слов   ваще  ниче  не  догнал! smile 
А  что  такое  STL?
PM MAIL   Вверх
apook
Дата 3.6.2007, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тебе надо чтоб из программы добавить или как? 
если просто заполнить поля из файла, если надо поменять то в файле меняешь да и все или добавляешь или удаляешь так удобней


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
AleksDDem
Дата 3.6.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну  можно  сделать  чтобы  информация  из  файла  добавлялась.

например  файл  содержить  такую  информацию
Mike, Taison, 49, 4, 98, 180
Vladimir, Klichko, 42, 6, 110, 200
Vitaliy, Klichko, 39, 4, 102, 194
lennox, lewis, 47, 1, 112, 198
и  при  запуске   программы  она  автоматически  добавляеться   в   класс
PM MAIL   Вверх
jonie
Дата 3.6.2007, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



ну и перегрузи для класса каой-нибудь
Код
friend istream& operator>>(istream& is,MyClass& rhs){/*....считываем файл "внутрь" своего класса MyClass, при ошибках скажем выбрасываешь исключение...*/}

и в основной программе тогда получается нечто вроде:
Код

...........
MyClass container;
istream infile("filename.ext");
if(infile){
 try{
  infile>>container;
 }
 catch(...){
   cerr<<"Invalid file foromat OR unhandled error(";
   infile.close();
 }
 infile.close();
}
...........

Цитата

А  что  такое  STL?
Standart Template Library
Скажем книжка Джосьютис Н. C++: Стандартная библиотека поможет
или Леен Аммерааль.STL для программистов на C++


Это сообщение отредактировал(а) jonie - 3.6.2007, 11:24


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
apook
Дата 3.6.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну тогда держи
Код

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

#include <fstream.h>
#include <iostream.h>
#include <iomanip.h>

#define MAXSZ 1024


using namespace std;

class boxer
{
public:
    boxer();

struct BD
{ 
    char name[ 80 ];    //имя
    char surname[ 80 ]; //Фамилия
    int wins;           //побед
    int defeats;        //поражений
    int weight;         //вес 
    int height;         //рост
    };
    void BDprint();

protected:
    BD *data;
    int SZ;
    fstream bd_file;
    };

boxer::boxer()
{
char buf[ MAXSZ ], *p;
int i;

bd_file.open( ".\\Boxer.DAT" );
if( !bd_file )
{ 
    perror( "Error: Cant open file Boxer.DAT" );
    exit( 1 ); 
    }

bd_file.seekp( 0, ios::beg );
for( SZ=0; bd_file.getline(buf, MAXSZ); )
{
    if( buf[ 0 ]!='\0' )
        ++SZ;
    }

data=new BD[ SZ ];

bd_file.clear();
bd_file.seekp( 0, ios::beg );
for( i=0; !bd_file.eof(); i++ )
{
    if( bd_file.eof() )
        break; 

    bd_file >> data[ i ].name >> data[ i ].surname >> data[ i ].wins
        >> data[ i ].defeats >> data[ i ].weight >> data[ i ].height;
    }
}


void boxer::BDprint()
{
int i, c;
clrscr();
for( i=0; i<SZ; i++ )
    cout << i+1 << ". " << data[ i ].name << " " << data[ i ].surname << endl;
cout << endl << i+1 << ". Exit" << endl;
c=i;

cout << "\nEnter number: ";
cin >> i;
--i;

if( i==c )
    return;

cout << "Name: " << data[ i ].name << endl
     << "SurnAme: " <<  data[ i ].surname << endl
     << "Wins: " << data[ i ].wins << endl
     << "Defeats: " << data[ i ].defeats << endl
     << "weight: " << data[ i ].weight << endl
     << "Height: " << data[ i ].height << endl;

getch();
return boxer::BDprint();
}


void main()
{
boxer BOX;


BOX.BDprint();


return;
}


Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  Boxer.zip 0,21 Kb


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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