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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [c++]структуры в классах 
:(
    Опции темы
Infesta
Дата 25.5.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При разработке программы использовать механизм позднего связывания (виртуальные функции). Иерархия должна состоять из четырех-пяти классов. Использовать множественное наследование.
Разработаная  программа должна иметь возможности:
а) добавлять объекты в массив,  удалять и редактировать их;
б)осуществлять сохранение результатов выполнения программы в файле и считывания их из файла;
в) выводить результаты на экран в виде таблицы. 
г)осуществлять сортировку по указанному полю,  осуществлять ввод/вывод через поток
д) программа должна содержать конструкторы с параметрами и деструкторы (использовать динамический захват памяти и косвенную адресацию).


Создать программу с классом Sport порождающий обьекты - данные о
конкретном  участнике спортивных соревнований по футболу
Класс включает в себя следующие элементы
- Ф И О игрока
- игровой номер
- возраст
- рост
- вес
конструктор с параметрами
деструктор;
метод просмотра текущего состояния обьектов;
Производный класс Dop содержит следующие данные:
- количество матчей;
- количество голевых передач;
- количество голов;
- переопределенную функцию просмотра состояния объектов.

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

//#include "stdafx.h"
#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::string;

class Sport
{
public:
 string nameplayer;
 int rost1;
int age;
 int number;
int masa;
 
 
 Sport()
 {
nameplayer="noname";
rost1= 0 ;
age= 0;
number=0;
masa=0;
 }

 ~Sport()
 {
nameplayer="noname";
rost1= 0 ;
age= 0;
number=0;
masa=0;
 }

 void PRINT ()
 {
  cout << "name:\t" 
   << nameplayer
   << "\nrost:\t" 
   << rost1 
<< "\nvozrast:\t" 
   << age 
<< "\nves:\t" 
   << masa 
   << "\nnumber:\t" 
   << number << "\n";
 }

 void setsport (string name, int count,  int voz, int num, int mas)
 {
nameplayer = name;
rost1=count ;
age = voz;
number = num;
masa = mas;
 }
 virtual void print() {}
 friend int countnum (const Sport&);
 friend int countnum (const Sport& d)
 {
  return d.countnum;
 }
};

class Dop: Sport
{
  int match;
 int pasi;
 int gols;

 public: 
  Dop():Sport()
  {
 match = 0;
 pasi=0;
 gols=0;
  }
  ~Dop() {}

  void setDop (string name, int count,  int voz, int num, int mas, int matchi, int pasi1, int gols1)
  {
   Sport::nameplayer = name;
   Sport::rost1 = count; 
   Sport::age = voz;
   Sport::number = num; 
   Sport::masa = mas; 
   match = matchi;
   pasi= pasi1;
   gols= gols1;
  }

  void print()
  {
    cout << "name:\t" 
   << nameplayer
   << "\nrost:\t" 
   << rost1 
<< "\nvozrast:\t" 
   << age 
<< "\nves:\t" 
   << masa 
   << "\nnumber:\t" 
   << number << "\n";
<< "\nigri:\t" 
   << match 
<< "\nposov:\t" 
   << pasi 
<< "\ngoli:\t" 
   << gols; 
  }
};

/*void main ()
{
 Detal a1;
 a1.setDetal("r", 10, 1);
 a1.PRINT();
 a1.setDetal("gayka", 10, 1);
 a1.PRINT();
 a1.setDetal("bolt", 15, 2);
 a1.PRINT();
 a1.setDetal("grover", 10, 1);
 a1.PRINT();
 a1.setDetal("vint", 11, 3);
 a1.PRINT();
 a1.setDetal("vtulka", 19, 4);
 a1.PRINT();
 a1.setDetal("kerno", 1, 5);
 a1.PRINT();
 a1.setDetal("kluch", 3, 5);
 a1.PRINT();

 Det1 d1;
 d1.setDet1("d1", 10, 1, true, 12);
 d1.print();
 d1.setDet1("d2", 10, 1, false, 12);
 d1.print();
 d1.setDet1("d3", 10, 1, true, 12);
 d1.print();
 d1.setDet1("d4", 10, 1, false, 12);
 d1.print();
 d1.setDet1("d5", 10, 1, true, 12);
 d1.print();
 d1.setDet1("d6", 10, 1, true, 12);
 d1.print();

}*/
//---------------------------------------------------------------------------

буду очень признательна если ктото поможет,  smile  main передрала из чужого задания. вы последняя надежда. зарание благодарна.
PM MAIL   Вверх
Infesta
Дата 30.5.2011, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код


#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
#include <conio.h>
#include <vector>

using namespace std;


class Sport
{
public:
  int id;                    //ID èãðîêà
  string fio;                //ÔÈÎ ñòóäåíòà
  int nomer;             // íîìåð
  int vozr;         //âîçðîñò
  int rost;            //ðîñò
  int ves;        //âeñ


  Sport();              //êîíñòðóêòîð
  ~Sport();            //äåñòðóêòîð

  void input(int, string, int, int, int, int);        //ââîä äàííûõ
  virtual void print();                //Âûâîä äàííûõ î ñòóäåíòå
 // friend void printGrade(Sport *, int);        //âûâîä äàííûõ òîëüêî î òåõ ñòóäåíòàõ, ñðåäíèé áàëë êîòîðûõ âûøå óêàçàííîãî
};

class Dop : public Sport
{
public:
  int matchs;           //êîëè÷åñòâî ìàò÷åé
  int passes;         //êîëè÷åñòâî ãîëåâûõ ïåðåäà÷
  int balls;  //êîëè÷åñòâî ãîëîâ
  void input(int, string, int, int, int, int, int, int, int);        //ïåðåîïðåäåëåííûé ìåòîä ââîä äàííûõ
  void print();           //ïåðåîïðåäåëåííûé ìåòîä äëÿ âûâîäà äàííûõ
};

class IFile
{
public:
  char* filename;
  virtual bool saveToFile() = 0;
  virtual bool loadFromFile() = 0;
};

class IEditable
{
  virtual void add(Dop&, bool) = 0;
  virtual void edit(Dop&, int) = 0;
  virtual bool deleteRecord(int) = 0;
};

class List : public IFile, public IEditable
{
public:
  vector<Dop> items;
  int autoincrement;

  List(int);

  void printTitle();         //âûâîä øàïêè òàáëèöû
  void print();              //âûâîä òàáëèöû çàïèñåé
  void printGrade(double);   //âûâîä ñòóäåíòîâ ñî ñðåäíèì áàëëîì âûøå óêàçàííîãî
  int findIndexById(int);    //ïîèñê èíäåêñà çàïèñè ïî å¸ id
  void sort();            //ñîðòèðîâêà

  void add(Dop&, bool);
  void edit(Dop&, int);
  bool deleteRecord(int);

  bool saveToFile();
  bool loadFromFile();
};
//-----------------------------------------------


//-----------------------------------------------
//Êîíñòðóêòîð
Sport::Sport()
{
}


//-----------------------------------------------
//Äåñòðóêòîð
Sport::~Sport()
{
}


//-----------------------------------------------
//Ââîä äàííûõ
void Sport::input(int newId, string newFio, int newNomer, int newVozr,
                    int newRost, int newVes)
{
  id = newId;
  fio = newFio;
  nomer = newNomer;
  vozr = newVozr;
  rost = newRost;
  ves = newVes;

}



//-----------------------------------------------
//Âûâåñòè äàííûå î ñòóäåíòå
void Sport::print()
{
                cout<<setw(5)<<id<<" | "<<setw(0)
        <<setw(30)<<fio<<" | "<<setw(0)
        <<setw(5)<<nomer<<" | "<<setw(0)
        <<setw(5)<<vozr<<" | "<<setw(0)
        <<setw(6)<<rost<<" |"<<setw(0)
        <<setw(5)<<ves<<" |"<<setw(0);
}



//Ââîä äàííûõ
void Dop::input(int newId, string newFio, int newNomer, int newVozr,
                    int newRost, int newVes, int newmatchs, int newpasses, int newballs)
{
   id = newId;
  fio = newFio;
  nomer = newNomer;
  vozr = newVozr;
  rost = newRost;
  ves = newVes;
  matchs = newmatchs;
  passes = newpasses;
  balls = newballs;
}

//-----------------------------------------------
//Âûâåñòè äàííûå î sportsmene
void Dop::print()
{    
  cout<<setw(3)<<id<<"| "<<setw(0)
    <<setw(8)<<fio<<"| "<<setw(0)
    <<setw(5)<<nomer<<"| "<<setw(0)
    <<setw(7)<<vozr<<"| "<<setw(0)
    <<setw(5)<<rost<<"| "<<setw(0)
    <<setw(5)<<ves<<"| "<<setw(0)
    <<setw(5)<<matchs<<"| "<<setw(0)
    <<setw(5)<<passes<<"| "<<setw(0)
    <<setw(5)<<balls<<"| "<<setw(0);
}


//-----------------------------------------------
//Ñîçäàíèå ñïèñêà
List::List(int ai = 1)
{
  autoincrement = ai;
  filename = "Sportsman.sdb";
  //items.resize(size);
}


//-----------------------------------------------
//Âûâîä øàïêè òàáëèöû
void List::printTitle()
{
  cout<<"Id "
        <<"| FIO"<<setw(11)
        <<"| Nomer"<<setw(9)
        <<"| Vozr"<<setw(7)
        <<"| Rost"<<setw(7)
        <<"| Ves"<<setw(7)
        <<"| Matchs"<<setw(7)
        <<"| Passes"<<setw(7)
        <<"| Balls"<<setw(10);
}


//-----------------------------------------------
//Âûâîä ñïèñêà ñòóäåíòîâ
void List::print()
{
  printTitle();
  for (int i = 0; i < items.size(); i++) {
    items[i].print();
  }
}


//-----------------------------------------------
/*/âûâîä ñòóäåíòîâ ñî ñðåäíèì áàëëîì âûøå óêàçàííîãî
void List::printGrade(double grade)
{
  cout<<"\nSo sr. ballom vishe: "<<grade<<endl;
  printTitle();
  for (int i = 0; i < items.size(); i++) {
    frPrintGrade(items[i], grade);
  }
}


*/
//Ïîèñê èíäåêñà çàïèñè ïî å¸ id
int List::findIndexById(int id) 
{
  for (int i = 0; i < items.size(); i++) {
    if ( items[i].id == id ) {
      return i;
    }
  }

  return -1;
}


//-----------------------------------------------
//Ñîðòèðîâêà ïî ñðåäíåìó áàëëó
/*void List::sort()
{
  int n = items.size();
  double avg1, avg2;
  Student2 tmp;

  //Îáû÷íûì ïóçûðüêîì
  for (int i = 0; i < n; i++) {
    for (int j = n-1; j > i; j--) {
      
      avg1 = (items[j].mathGrade + items[j].histGrade + items[j].langGrade) / 3;
      avg2 = (items[j-1].mathGrade + items[j-1].histGrade + items[j-1].langGrade) / 3;

      if ( avg1 < avg2 ) {
        tmp = items[j];
        items[j] = items[j-1];
        items[j-1] = tmp;
      }
    }
  }

}

*/
//Äîáàâëåíèå çàïèñè
void List::add(Dop& stud, bool isImport = false)
{
  if ( !isImport ) {
    stud.id = autoincrement++;
  }

  items.push_back(stud);
}


//-----------------------------------------------
//Ðåäàêòèðîâàòü çàïèñü
void List::edit(Dop& stud, int id)
{
  int index = findIndexById(id);
  if ( index == -1 ) {
    return;
  }

  stud.id = id;
  items[index] = stud;
}


//-----------------------------------------------
//Óäàëèòü çàïèñü
bool List::deleteRecord(int deleteId)
{
  int index = findIndexById(deleteId);
  if ( index == -1 ) {
    return false;
  }

  items.erase( items.begin() + findIndexById(deleteId) );
  
  return true;
}


//-----------------------------------------------
//Ñîõðàíèòü ñïèñîê  â ôàéë
bool List::saveToFile()
{
  //Çäåñü äîëæíà áûòü ïðîâåðêà ôàéëà

  int size = items.size();
  ofstream ofs(filename, ios::binary);
  
  ofs.write((char *)&size, sizeof(size));
  ofs.write((char *)&autoincrement, sizeof(autoincrement));  

  for (int i = 0; i < items.size(); i++) {
    ofs.write((char *)&items[i], sizeof(items[i]));
  }

  return true;
}


//-----------------------------------------------
//Çàãðóçèòü ñïèñîê  èç ôàéëà
bool List::loadFromFile()
{
  int size;
  Dop tmp;

  //Çäåñü äîëæíà áûòü ïðîâåðêà ôàéëà

  items.clear();

  ifstream ifs(filename, ios::binary);

  ifs.read((char *)&size, sizeof(size));
  ifs.read((char *)&autoincrement, sizeof(autoincrement));

  for (int i = 0; i < size; i++) {
    ifs.read((char *)&tmp, sizeof(tmp));
    add((Dop)tmp, true);
  }

  return true;
}

int main()
{
    List* Sports = new List();
    int id = 0;
    int ch = 0;
  double grade;

    while (ch != 9)
    {
    system("cls");
        cout<<"\n"                // ìåíþ ïðîãðàììû
            <<" Menu \n"
            <<" 1. Dobavit' Sportsmena\n"
            <<" 2. Redaktirovat' Sportsmena\n"
            <<" 3. Udalit' Sportsmena\n"
            <<" 4. Vivesti vse dannie'\n"
             //    <<" 5. Vivesti dannie o studentah so sr. ballom vishe ukazannogo\n"
             //    <<" 6. Sortirovat' po sr. ballu\n"
            <<" 7. Zagruzit' iz faila\n"
            <<" 8. Sohranit' v fail\n"
            <<" 9. Vihod\n\n> ";
        cin>>ch;
    system("cls");

        switch (ch)
        {
      //Äîáàâèòü Sportsmena
            case 1:
            {

        Dop Stud = Dop();

        cout<<"FIO: ";
        cin>>Stud.fio;
        cout<<"Nomer igroka: " ;
        cin>>Stud.nomer;
        cout<<"Vozrast: ";
        cin>>Stud.vozr;
        cout<<"Rost: ";
        cin>>Stud.rost;
        cout<<"Ves: ";
        cin>>Stud.ves;
        cout<<"Matchi: ";
        cin>>Stud.matchs;
        cout<<"Passi: ";
        cin>>Stud.passes;
        cout<<"Golov: ";
        cin>>Stud.balls;

        Sports->add(Stud);

      } break;

      //Ðåäàêòèðîâàòü sportsmena
            case 2:
            {
        cout<<"Vvedite id: ";
        cin>>id;

        int index = Sports->findIndexById(id);
        if ( index == -1 ) {
          cout<<"Sportsmen ne naiden";
          _getch();
          continue;
        }

        system("cls");
        Sports->printTitle();
        Sports->items[index].print();

        Dop Stud = Dop();

        cout<<"\nNovye dannye: \n";
        cout<<"FIO: ";
        cin>>Stud.fio;
        cout<<"Nomer igroka: " ;
        cin>>Stud.nomer;
        cout<<"Vozrast: ";
        cin>>Stud.vozr;
        cout<<"Rost: ";
        cin>>Stud.rost;
        cout<<"Ves: ";
        cin>>Stud.ves;
        cout<<"Matchi: ";
        cin>>Stud.matchs;
        cout<<"Passi: ";
        cin>>Stud.passes;
        cout<<"Golov: ";
        cin>>Stud.balls;

        Sports->edit(Stud, id);
      } break;

      //Óäàëèòü sportsmena
            case 3:
            {
        cout<<"Vvedite id sportsmena dlya udaleniya: ";
        cin>>id;

        if ( Sports->deleteRecord(id) ) {
          cout<<"Sportsmen udalen";
        } else {
          cout<<"Ne udalos' udalit' sportsmena";
        }

        _getch();
      } break;

      //Âûâåñòè äàííûå
            case 4:
            {
        Sports->print();
        _getch();
      } break;

      /*//Âûâåñòè äàííûå î ñòóäåíòàõ ñî ñðåäíèì áàëëîì âûøå óêàçàííîãî
            case 5:
            {
        system("cls");
        cout<<"Vvedite ball: ";
        cin>>grade;
        Students->printGrade(grade);
        _getch();
      } break;
                */
     /* //Ñîðòèðîâàòü
            case 6:
            {
        Sports->sort();

        Sports->print();
        _getch();

      } break;
                */
      //Çàãðóçèòü èç ôàéëà
            case 7:
            {
        if ( Sports->loadFromFile() ) {
          cout<<"Dannye zagrijeny\n";
        } else {
          cout<<"Ne udalos' zagruzit' dannye";
        }

        _getch();
      } break;

      //Ñîõðàíèòü â ôàéë
            case 8:
            {
        if ( Sports->saveToFile() ) {
          cout<<"Dannye sohraneny\n";
        } else {
          cout<<"Ne udalos' sohranit' dannye";
        }

        _getch();
      } break;

      //Âûõîä
            case 9:
            {
        exit(0);
      } break;
    }
  }
}

может кому-то пригодится.

Это сообщение отредактировал(а) Infesta - 30.5.2011, 22:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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