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

любителям критики - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегруженный оператор вывода http://www.cyberforum.ru/cpp-beginners/thread925936.html
Есть базовый класс Точка и его наследник Круг. Как в Круге использовать operator<< для Точки? Надо вывести координаты центра круга class CPoint { friend std::ostream &operator<<(std::ostream &out, const CPoint &point); public: CPoint(double x=0.0, double y=0.0);
C++ Файловый ввод Дело в том, что у меня во всех программах почему то не работает scanf в циклах for. Напhимер: for(int index = 0; index<b.size(); ++index) { scanf("%d", b); } b это вектор чисел. Программы аварийно закрываются, или еще какие ошибки. Когда меняю на cin все нормально: for(int index = 0; index<b.size(); ++index) { cin >> b; } http://www.cyberforum.ru/cpp-beginners/thread925924.html
C++ Программа которая отправляет файл на почту
Я вот думаю, сложно ли написать программу который будет отправлять какой-то конкретный файл юзера который её запустит на почту? P.S. Это не незаконные дела, всё законно, по правилам)Просто интерессно как такое сделать) P.P.S. Тему не закрывайте, смотрите P.S. ))
C++ Просрочен лимит времени
Я решал задачу, вот она: Проблема в том, что я когда заносил в массив данные через scanf, то она выполнялась 2,5 секунды, а когда я использовал cin, то где-то 0.363 миллисекунды. В чем дело. Говорят же что scanf быстрее!!! Вот сама программа, а считывание про которое я говорю находится в цикле for: #include<iomanip> #include<iostream> #include<fstream> #include<algorithm> using namespace...
C++ Программа которая ворует пароли http://www.cyberforum.ru/cpp-beginners/thread925895.html
Вот мне интерессно, трудно (назовите хоть примерное количество строк) ли написать программу которая будет воровать пароли, ну, хотя бы, от одного браузера конкретного.Если возможно то от всех, я же не знаю сколько будет занимать строк воровство пароля от одного браузера :D Я ещё подумал, когда-то писал пограмму которая будет на мыло письмо кидать, так можно это реализовать кинув, допустим, файл...
C++ Русский текст в консоли Проблема банальная - русский текст в консоли. До конца в кодировках я так и не разобрался, поэтому прошу помощи. Я нашел 3 способа как решить эту проблему : 1) setlocale( LC_ALL,"Russian" ) // Как я понял она просто меняет кодировку консоли.Где-то читал что на XP у неё проблемы. У меня XP SP2 и среда code blocks. В общем она не пашет у меня. 2)CharToOem() // Как я понял преобразует строку в... подробнее

Показать сообщение отдельно
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12

любителям критики - C++

19.07.2013, 22:03. Просмотров 732. Ответов 19
Метки (Все метки)

AI_city.h
Кликните здесь для просмотра всего текста
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
// ---------------------------------------------------------------------------
 
#ifndef AI_cityH
#define AI_cityH
 
#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <windows.h>
using namespace std;
static HANDLE hSTDOut = GetStdHandle(STD_OUTPUT_HANDLE);
inline char toupper_doc(unsigned char c) {
    return c < 16 * 13 ? c - 32 : c - 80; // борьба с кодировкой доса
}
// игрок
class Cplayer {
protected:
    string name;
 
public:
    Cplayer();
    ~Cplayer();
    void SetName(char * name_);
    char first();
    bool init(const char * name_file);
    virtual char stroke(char l);
    void win();
};
// игрок человек
class Chuman : public Cplayer {
protected:
    int life;
public:
    Chuman();    // присваивается количество жизней
    ~Chuman();
    virtual char stroke(char l); // игровой ход
};
// игрок компьютер
class Ccomputer : public Cplayer {
 
public:
    Ccomputer();
    ~Ccomputer();
    virtual char stroke(char l);   // игровой ход
 
};
 
// ---------------------------------------------------------------------------
#endif

AI_city.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// ---------------------------------------------------------------------------
 
#pragma hdrstop
 
#include "AI_city.h"
 
static multimap<char, string>city;
static bool init_true;
 
////////////////////////////////// *Ўбва*Єв*л© Є«*бб ЁЈа®Є
Cplayer::Cplayer() {
}
 
Cplayer::~Cplayer() {
}
 
char Cplayer::stroke(char l) {
    return true;
}
 
void Cplayer::SetName(char * name_) {
    name = name_;
}
 
void Cplayer::win() {
    cout << "Ї®ЎҐ¤Ё« ЁЈа®Є : ";
    cout << name.c_str() << endl;
}
 
char Cplayer::first() { // выбор первого элемента в контейнере
    multimap<char, string>::iterator it = city.begin();
    cout << it->second.c_str() << endl << endl;
    char letter = it->second[it->second.size() - 1];
    letter = toupper_doc(letter); // преобразуем в верхний регистр
    city.erase(it); // данный город больше использовать нельзя
    return letter;
}
 
bool Cplayer::init(const char*name_file) {
    fstream file;
    string tmp_city;
    file.open(name_file, ios::in);
    if (file.good()) {
        while (!file.eof()) {
            getline(file, tmp_city);    // чтение города
            city.insert(pair<char, string>(tmp_city[0], tmp_city)); // запись города
        }
        return true;
    }
    return false;
}
////////////////////////////////// *Ўбва*Єв*л© Є«*бб ЁЈа®Є
 
///////////////////////////////// Є«*бб ЁЈа®Є* - 祫®ўҐЄ
Chuman::~Chuman() {
}
 
Chuman::Chuman() {
    life = 3; // жизни человека
}
 
char Chuman::stroke(char l) {
    SetConsoleTextAttribute(hSTDOut, FOREGROUND_GREEN);
 
    string command;
    unsigned char r;
    cout << "ЁЈа®Є : ";
    cout << name.c_str() << " ";
    cout << "®вўҐз*Ґв : ";
    cin >> command;     // запрос города
    r = command[command.size() - 1]; // установка последней буквы
 
    multimap<char, string>::iterator it = city.find(l);
 
    int count = city.count(l); // количество слов на заданную букву
    for (int i = 0; i < count; i++, it++) {
        if (it->second == command) {// проверим еслть ли слово игрока в списке
            city.erase(it); // данный город больше использовать нельзя
            cout << "б«Ґ¤гойЁ© Ј®а®¤ ¤®«¦Ґ* **зЁ**rвбп ** ЎгЄўг : ";
            r = toupper_doc(r);   // к верхнему регистру
            cout << r << endl << endl;
            return r;
        }
    }
    cout << "ЌҐв в*Є®Ј® б«®ў* «ЁЎ® ®*® 㦥 ЁбЇ®«м§®ў*«®бм " << endl;  //даём ещё шанс
    life--;
    if (life) {   // пока не кончатся  жизни
        cout << "“ ў*б ®бв*«®бм " << life << " ¦Ё§*Ґ©, " << "Ї®Їа®Ўг©вҐ Ґйс" <<
        endl;
        r = stroke(l);  // так мы можем судить об успехе рекурсии
        return r;
    }
    cout << "ЁЈа®Є " << name << " Їа®ЁЈа*«, ®* г¤*«с* Ё§ ЁЈал" << endl;  //нас удалили
    return 0;
 
}
///////////////////////////////// Є«*бб ЁЈа®Є* - 祫®ўҐЄ
 
///////////////////////////////// Є«*бб ЁЈа®Є* - Є®¬ЇмовҐа
char Ccomputer::stroke(char l) {
    SetConsoleTextAttribute(hSTDOut, FOREGROUND_GREEN | FOREGROUND_RED);
    unsigned char r;
    int count = city.count(l);
    if (count) { // компьютер знает город
        count = rand() % count;
        multimap<char, string>::iterator it = city.find(l);
        for (int i = 0; i < count; i++) // выберем случайный элемент на заданную букву
            it++;
 
        cout << "ЁЈа®Є : ";
        cout << name.c_str() << " ";
        cout << "®вўҐз*Ґв : "; // "игрок № отвечает "
 
        cout << it->second.c_str() << endl; // ответ
        cout << "б«Ґ¤гойЁ© Ј®а®¤ ¤®«¦Ґ* **зЁ**вбп ** ЎгЄўг : ";
        r = it->second[it->second.size() - 1]; // установка последней буквы
        r = toupper_doc(r); // преобразуем в верхний регистр
        cout << r << endl;
 
        city.erase(it); // данный город больше использовать нельзя
 
    }
    else { // компьютер не знает город
        SetConsoleTextAttribute(hSTDOut, FOREGROUND_RED);
        // устанавливаем красный режим
        cout << "ЁЈа®Є : ";
        cout << name.c_str();
        cout << " *Ґ §**Ґв **§ў**Ёп Ј®а®¤* ** ЎгЄўг ";
        cout << (char)(l);
        cout << " ®*  г¤*«с* Ё§ ЁЈал " << endl; // игрок выбыл
        r = 0; // код удаления
    }
    cout << endl;
    return r;
 
}
 
Ccomputer::Ccomputer() {
}
 
Ccomputer::~Ccomputer() {
}
///////////////////////////////// Є«*бб ЁЈа®Є* - Є®¬ЇмовҐа
// ---------------------------------------------------------------------------

main.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// ---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream>
 
#include <string>
#include "AI_city.h"
#include <direct.h>
#include <vector>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
 
using namespace std;
 
int main() {
 
    // установка параметров
    int human_player = 1;
    int computer_player = 3;
 
    for (int i = 0; i < 16; i++) {
        for (int j = 0; j < 16; j++)
            cout << char(i * 16 + j) << " ";
        cout << endl;
    }
 
    cout << "ўўҐ¤ЁвҐ Є®«ЁзҐбвў® ЁЈа®Є®ў - «о¤Ґ©" << endl;
    cin >> human_player;
    cout << "ўўҐ¤ЁвҐ Є®«ЁзҐбвў® ЁЈа®Є®ў - Є®¬ЇмовҐа®ў" << endl;
    cin >> computer_player;
    // // установка параметров
    // иницилизация
    char buffer[256];
    vector<Cplayer*>player;
 
    string patch_data = getcwd(buffer, 255);
    patch_data += "\\data\\words.txt";
    srand(time(0));
    /* for (int i = 0, c_c = computer_player, c_h = human_player, r;
    i < human_player + computer_player; i++) {
    r = rand() % 2;
    string name;
    char number[10];
    Cplayer *tmp_player_ptr;
    switch(r) { // формирование команды случайным образом
    case 0:
    if (c_h) { // если есть вакансии людей
    tmp_player_ptr = new Chuman;
    c_h--; // уменьшение вакансий человека
    name = "祫®ўҐЄ N ";
    itoa(human_player - c_h, number, 10); // формирование номера
    name += number; ; // присвоение номера
    tmp_player_ptr->SetName((char*)name.c_str());
    // присвоение имени
    }
    else {
    tmp_player_ptr = new Ccomputer;
    c_c--;
    name = "Є®¬ЇмовҐа N ";
    itoa(computer_player - c_c, number, 10);
    name += number; ;
    tmp_player_ptr->SetName((char*)name.c_str());
    }
    break;
    case 1:
    if (c_c) { // если есть вакансии компьютеров
    tmp_player_ptr = new Ccomputer;
    c_c--; // уменьшение вакансий компьютера
    name = "Є®¬ЇмовҐа N ";
    itoa(computer_player - c_c, number, 10);
    name += number; ;
    tmp_player_ptr->SetName((char*)name.c_str());
    }
    else {
    tmp_player_ptr = new Chuman;
    c_h--;
    name = "祫®ўҐЄ N ";
    itoa(human_player - c_h, number, 10); // формирование номера
    name += number; ; // присвоение номера
    tmp_player_ptr->SetName((char*)name.c_str());
    // присвоение имени
    }
    }
    player.push_back(tmp_player_ptr); // добавление игрока
    } */
    string name;
    char number[10];
    Cplayer *tmp_player_ptr;
    for (int i = 0, c_h = human_player; i < human_player; i++) {
 
        tmp_player_ptr = new Chuman;
        c_h--; // уменьшение вакансий человека
        name = "祫®ўҐЄ N ";
        itoa(human_player - c_h, number, 10); // формирование номера
        name += number; ; // присвоение номера
        tmp_player_ptr->SetName((char*)name.c_str()); // присвоение имени
        player.push_back(tmp_player_ptr); // добавление игрока
    }
 
    for (int i = 0, c_c = computer_player; i < computer_player; i++) {
        tmp_player_ptr = new Ccomputer;
        c_c--;
        name = "Є®¬ЇмовҐа N ";
        itoa(computer_player - c_c, number, 10);
        name += number; ;
        tmp_player_ptr->SetName((char*)name.c_str());
        player.push_back(tmp_player_ptr); // добавление игрока
    }
 
    for (int i = 0, r1, r2; i < (human_player + computer_player) / 2; i++) {
        r1 = rand() % player.size();
        r2 = rand() % player.size();
        Cplayer *tmp_player_ptr;
        tmp_player_ptr = player[r1];
        player[r1] = player[r2];
        player[r2] = tmp_player_ptr; // обмен
    }
    player[0]->init(patch_data.c_str()); // загрузка слов
    // иницилизация
 
    string command;
 
    cout << "**з*«® ЁЈал, ЇҐаўл© Ј®а®¤ : "; // начало игры
    unsigned char last_letter = player[0]->first();
    vector<Cplayer*>::iterator ip = player.begin();
    while (player.size() > 1) {
        if (ip == player.end())
            ip = player.begin(); // закольцевание
 
        last_letter = ip[0]->stroke(last_letter); // получение буквы на которую должно начинатся следующее слово
        SetConsoleTextAttribute(hSTDOut,
            FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        // графический режим
        if (!last_letter) {
            delete ip._Myptr[0];
            player.erase(ip); // удаляем игрока
            cout << "®бв*«®бм ";
            cout << player.size();
            cout << " ЁЈа®Є®ў" << endl; // пишем сколько осталось игроков
            if (player.size() == 1)
                break;
            cout << "ўлЎ®а б«гз*©*®Ј® Ј®а®¤*, **§ў**ЁҐ Ј®а®¤* : ";
            last_letter = player[0]->first();
            Sleep(2000); // задерживаем время в случаи удаления игрока
        }
        else
            ip++;
    }
    player[0]->win(); // победа
 
    system("pause");
    return 0;
}
// ---------------------------------------------------------------------------

игра города на большое количество человекови и компьютеров (лижбы слов хватило!). Извиняюсь за Doc кодировку (работал в RAD)
формат данных
Вложения
Тип файла: rar words.rar (4.4 Кб, 8 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru