Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Работа с классами


Автор: Killer79 29.4.2008, 23:58
Помогите пожалуйста в решении этих заданий:

1.    Создайте класс с именем ship, который будет содержать данные об учетном номере корабля и координатах его расположения. Для хранения координат используйте два поля абстрактного типа angle. Разработайте метод, который будет сохранять в объекте данные о корабле, вводимые пользователем, и метод, выводящий данные о корабле на экран. Напишите функцию mainQ, создающую три объекта класса ship, затем запрашивающую ввод пользователем информации о каждом из кораблей и выводящую на экран всю полученную информацию. 

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

Автор: Evjeny 30.4.2008, 00:23
Цитата(Killer79 @  29.4.2008,  23:58 Найти цитируемый пост)
1.    Создайте класс с именем ship, который будет содержать данные об учетном номере корабля и координатах его расположения. Для хранения координат используйте два поля абстрактного типа angle. Разработайте метод, который будет сохранять в объекте данные о корабле, вводимые пользователем, и метод, выводящий данные о корабле на экран. Напишите функцию mainQ, создающую три объекта класса ship, затем запрашивающую ввод пользователем информации о каждом из кораблей и выводящую на экран всю полученную информацию.

Лафоре - глава 6, упражнение 10 smile 

Код

#include <iostream>

using namespace std;

class angle
{
private:
    int degree;
    float minutes;
    char direction;
public:
    angle()
    {}
    angle(int deg, float min, char dir) : degree(deg),
        minutes(min), direction(dir)
    {}

    void getcoord();
    void showcoord() const;
};

void angle::getcoord()
{
    cout << "Enter direction (N, S, E, W): ";
    cin >> direction;

    cout << "Enter degree";
    if(direction=='E'||direction=='W')
        cout << " (0-180\xf8) and minutes: ";
    else if(direction=='S'||direction=='N')
        cout << " (0-90\xf8) and minutes: ";
    cin >> degree >> minutes;
}

void angle::showcoord() const
{
    //cout << "Coordinates:\n";
    cout << degree << '\xf8' << minutes
        << "\' " << direction << endl;
}

class ship
{
private:
    static int count;
    int number;
    angle width;
    angle longi;
public:
    ship()
    {count++; number = count;}
    void get_data();
    void show_data() const;
};

int ship::count = 0;

void ship::get_data()
{
    cout << "Enter coordinate of the ship.\n";
    cout << "Enter width:\n";
    width.getcoord();
    cout << "Enter longitube:\n";
    longi.getcoord();
}

void ship::show_data() const
{
    cout << "Ship number " << number << " have coordinates:\n";
    cout << "Width ";
    width.showcoord();
    cout << "Longitube ";
    longi.showcoord();
}

int main(int argc, char* argv[])
{
    ship s1, s2, s3;

    s1.get_data();
    s2.get_data();
    s3.get_data();

    s1.show_data();
    s2.show_data();
    s3.show_data();

    return 0;
}

Автор: Killer79 1.5.2008, 11:16
Большое Спасибо. Жалка что не могу добавить репутации.

Автор: THandle 1.5.2008, 13:35
Цитата(Killer79 @  1.5.2008,  12:16 Найти цитируемый пост)
Большое Спасибо. Жалка что не могу добавить репутации. 


"Добавил" репутацию smile 

Автор: Killer79 4.5.2008, 15:08
Может еще кто поможет в решении второго задания. Буду очень признателен!!!!!!!!!!!!!!!!!!!!!!

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)