Форум программистов, компьютерный форум CyberForum.ru

Указатели - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, в которой описывается структура из полей: Название товара, Цена, Размер партии товара... http://www.cyberforum.ru/cpp-beginners/thread779336.html
Составить программу, в которой описывается структура из полей: Название товара, Цена, Размер партии товара (в штуках). Организовать ввод двух структурных переменных, вывод каждой структуры на экран и расчет значения "Стоимость товара". Стоимость товара = Цена товара * Размер партии товара.
C++ Реализация стека Здравствуйте, помогите пожалуйста с реализацией стека без использования STL. Стек отображен в памяти Вектором, память статическая(1 вариант), динамическая (2 вариант). http://www.cyberforum.ru/cpp-beginners/thread779335.html
C++ Продолжение строки с нового абзаца в коде
Собствено, как: printf("Hello World"); Без использования std::string! Именно константым литералом
Составьте программу, которая создает очередь из произвольного количества элементов C++
Здравствуйте! Помогите пожалуйста с задачей. Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и их среднее значение.
C++ Описать рекурсивную функцию вещественного типа, находящую значение N й степени числа X по формулам: http://www.cyberforum.ru/cpp-beginners/thread779324.html
• Описать рекурсивную функцию вещественного типа, находящую значение N й степени числа X по формулам: X 0 = 1, X N = (X N/2)2 при четных N > 0, X N = X•X N–1 при нечетных N > 0, X N = 1/X –N при N < 0 (X ? 0 — вещественное число, N — целое; в формуле для четных N должна использоваться операция целочисленного деления). С помощью этой функции найти значения X N для данного X при пяти данных...
C++ Описать рекурсивную функцию целого типа, находящую C(N, K) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения: Описать рекурсивную функцию целого типа, находящую C(N, K) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения: C(N, 0) = C(N, N) = 1, C(N, K) = C(N – 1, K) + C(N – 1, K – 1) при 0 < K < N. Параметры функции — целые числа; N > 0, 0 ? K ? N. Дано число N и пять различных значений K. Вывести числа C(N, K) вместе с количеством рекурсивных вызовов функции,... подробнее

Показать сообщение отдельно
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 418
05.02.2013, 13:50  [ТС]     Указатели
Главный файлик DragonLord.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include "Dragon.cpp"
#include "RedDragon.cpp"
#include "BlueDragon.cpp"
#include "BlackDragon.cpp"
using namespace std;
 
int menuChoise();
 
int main(void)
{
    srand(time(0));
    Dragon* dragons[3];
    int hp = 15;
    int armor = 2;
    int tempArmor;
    int tempAttack;
    dragons[0] = new RedDragon(rand()%4+1);
    dragons[1] = new BlueDragon(rand()%4+1);
    dragons[2] = new BlackDragon(rand()%4+1);
    Dragon* d = dragons[rand()%3];
    cout << "Здарова"<<endl<<"Её похитил "<<d->getName()<<"."<<endl;
    cout << "Твоя сила" << hp << endl;
    while(d->isAlive() && hp > 0)
    {
        int Choise = menuChoise();
        if (Choise == 3) goto RUN;
        else if (Choise == 1)
        {
            tempAttack = rand()%16+5;
            tempArmor = armor;
        }
        else
        {
            tempAttack = rand()%11;
            tempArmor = armor + 4;
        }
        hp -= d->attack(armor);
        d->defend(rand()%16-5);
        cout << "Ты наносишь мощный удар"<< tempAttack << "damage.\n";
        cout << "Твоя сила" << hp;
    }
    if(d->isAlive())
        cout << "\nТы побеждён !";
    else
        cout << "\nТы убил Дракона !";
    return 0;
RUN:
    cout << "\nТы убежал";
    return 0;
}
int menuChoise()
{
    int Choise;
        do
        {
            cout << endl
                << "[1]Атаковать\n"
                << "[2]Обороняться\n"
                << "[3]Бежать\n";
            cin >> Choise;
 
        }while (Choise < 1 && Choise >3);
        return 0;
}
Второй файлик с базовым классом Dragon.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
using namespace std;
 
#define MAX(a,b) a>b? a:b
 
class Dragon
{
private:
    int speed;
    string name;
    int HP;
    int armor;
    int treasure;
    int Damage;
    int size;
protected:
    Dragon(int theSize);
    int getArmor() {return armor;}
    int& getHP() {return HP;}
    int getDamage() {return Damage;}
    int getSize() {return size;}
    virtual int Attack(int targetArmor , int specialDamage);
public:
    virtual int attack(int targetArmor) = 0;
    virtual void defend(int damage) = 0;
    int getTreasure() {return treasure;}
    virtual string getName() {return name;}
    int getSpeed() {return speed;}
    bool isAlive() {return HP > 0;}
};
 
Dragon::Dragon(int theSize) : size(theSize)
{
    if(size < 1 || size > 4)
        size = 3;
    Damage = 2 * size;
    speed = 3 * size;
    HP = 4 * size;
    armor = size;
    treasure = 1000 * size;
    srand(time(0));
}
 
int Dragon::Attack(int targetArmor , int specialDamage)
{
    int useSpecial = rand() %2;
    int Damage;
    if(useSpecial)
        Damage = specialDamage;
    else Damage = getDamage();
    return MAX(Damage - targetArmor , 0);
}
Третий файл с производным классом RedDragon.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include "Dragon.cpp"
using namespace std;
 
class RedDragon : public Dragon
{
private:
    int FireDamage;
public:
    RedDragon(int theSize);
    int attack (int targetArmor);
    void defend (int Damage);
    string getName () {return "Красный дракон";}
};
 
RedDragon::RedDragon(int theSize) : Dragon(theSize)
{
    FireDamage = 4 * getSize();
}
 
int RedDragon::attack(int targetArmor)
{
    return Dragon::Attack(targetArmor , FireDamage);
}
 
void RedDragon::defend(int Damage)
{
    getHP() -= (Damage - getArmor()) / 3;;
}
Четвёртый файл с производным классом BlueDragon.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include "Dragon.cpp"
using namespace std;
 
class BlueDragon : public Dragon
{
private:
     int IceDamage;
public:
    BlueDragon(int theSize);
    int attack (int targetArmor);
    void defend (int Damage);
    string getName () {return "Синий дракон";}
};
 
BlueDragon::BlueDragon(int theSize) : Dragon(theSize)
{
    IceDamage = 3 * getSize();
}
 
int BlueDragon::attack(int targetArmor)
{
    return Dragon::Attack(targetArmor , IceDamage);
}
 
void BlueDragon::defend(int Damage)
{
    getHP() -= (Damage - getArmor()) / 2;
}
Пятый файл с производным классом BlackDragon.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include "Dragon.cpp"
using namespace std;
 
class BlackDragon : public Dragon
{
private:
    int PoisonDamage;
public:
    BlackDragon(int theSize);
    int attack (int targetArmor);
    void defend (int Damage);
    string getName () {return "Чёрный дракон";}
};
 
BlackDragon::BlackDragon(int theSize) : Dragon(theSize)
{
    PoisonDamage = getSize();
}
 
int BlackDragon::attack(int targetArmor)
{
    return Dragon::Attack(targetArmor , PoisonDamage);
}
 
void BlackDragon::defend(int Damage)
{
    getHP() -= Damage - getArmor();
}
 
Текущее время: 02:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru