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

Задание по Страуструпу. Требуется помощь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оконный интерфейс. Книги. http://www.cyberforum.ru/cpp-beginners/thread431696.html
С++ можно освоить прочитав известные книги по С++ и спокойненько писать программы с консольным интерфейсом (с я относительно разобрался). Но как создавать оконные приложения? Посоветуйте книжку.. Win32.. .Net и т.д. у меня голова кругом идет, много названий. Но с чего начать. Создание приложений Win32 кажется слишком сложным, и я боюсь начать читать книгу(кстати.. Какую книгу?) о технологии...
C++ Условие if Народ помогите составить условие, пишу игру, имеется пуля размером 8х8 и корабль 37х37 , подскажите как сделать проверку попала ли пуля в корабль, я сделал так, но работает не правильно for(int i=1;i<=37;i++) { for(int k=1;k<=8;k++) { if(px+k==x+i&&py+k==y+i||px-k==x-i&&py-k==y-i||px+k==x+i&&py-k==y+i||px-k==x+i&&py+k==y+i) http://www.cyberforum.ru/cpp-beginners/thread431694.html
C++ Частный случай симплекс метода
Доброго времени суток. Интересует информация по симплекс методу. Столкнулся с проблемой, связаной с тем, что опорный план (правая часть ограничений) весь нулевой, и, соответственно при переходе по стандартной формуле к новому, тот тоже будет нулевым. Если задуматься логически, то просто достаточно выбрать некий ненулевой план, который обязательно есть, и от которого придем к решению, но как...
объясните в С++ Builder,пожалуйста C++
описать класс реализующий тип данных<вещественная матрица>. Для данного класса описать конструктор с параметрами,а также с параметрами по умолчанию.Класс должен реализовать метод вычисления четных элементов матрицы я с классами на Вы.объясните пожалуйста как писать их вообще для начала написала обычную прогу на нахождение четных элементов матрицы (все работает): #pragma argsused...
C++ Visual studio - graphic.h http://www.cyberforum.ru/cpp-beginners/thread431682.html
Вопрос вот в чём, надо написать прогу ну не в этом проблема, одно из её условий это вывести график функции. Насколько я понимаю студия графику не поддерживает, начём тогда писать???
C++ индекс масива закидайте меня камнями, но почему индексация в масивах с 0, потомучто договарилиси, Страуструп или че еще? подробнее

Показать сообщение отдельно
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
20.01.2012, 02:02     Задание по Страуструпу. Требуется помощь
Доброй ночи! на картиночке задание по Страуструпу. первую и третью часть я довел до рабочего состояния, но то как оно сделано вызвало интерес посмотреть а как оно должно быть. Поэтому прошу вас, как опытных программистов, уделить какое то время и решить вторую часть задания про входной поток.
Это позволит посмотреть как правильно писать код, позволит увидеть возможные простые решения этой задачи. Заодно прикладываю свой код по первой части. все построено на streambuf, который использует для четния-записи маленький 10-ти чаровый массив и на вспомогательном ostream. К сожалению ничего другого не пришло в голову.



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
155
156
#include <iostream>
#include <streambuf>
 
 
using std::cout;
using std::basic_ostream;
using std::basic_streambuf;
using std::ostream;
 
 
 
 
class Mystr;
 
 
class buffer : public   basic_streambuf<char> 
 
{
 
    int key_lent;
    int rdbuf_lent;
    int buf_capacity;
 
public:
    bool XOR_stream;
    basic_ostream<char>* p;
    char* crypto;
    char crypto2 [10];
    buffer():key_lent(0),rdbuf_lent(0), buf_capacity(10),XOR_stream(true){
        
    setg(&crypto2[0], &crypto2[0], &crypto2[0]);
    setp(&crypto2[0],&crypto2[9]);
    };
    
 
void cryp () // ксор
{
    int l = strlen(crypto);
    int l2 = strlen(crypto2);
 
for(int i = 0,z =0; i<l2;i++,z++)
    {
    if(z==l)z=0;
    crypto2[i] = crypto2[i]^crypto[z];
    }
}
 
    
void fill_buf(const char* s)
{
        
        rdbuf_lent = strlen(s);
        int lent = rdbuf_lent;
 
        int i = 0;
        int y = 0;
        while(lent--)
        {
            crypto2[i++] = s[y++];
 
            if(i==buf_capacity) //при наполнении буфера символы ксорятся и сбрасываются в cout
            {
                cryp();
                rdbuf_lent = lent;
                for(int g =0; g<buf_capacity;g++)
                {
                p->put(crypto2[g]);
                }
                i = 0;
            }
        }
        crypto2[i] = 0;
 
        setg(&crypto2[0], &crypto2[0], &crypto2[rdbuf_lent]);// настройка границ буфера чтения
        
    }
};
 
 
class Mystr : public basic_ostream<char>
{
public:
    Mystr(basic_streambuf<char>*b):basic_ostream<char>(b){init(b);};
};
 
 
    
 
struct sman //наверно  это и есть искомый манипулятор
{
static buffer BUF;
static Mystr m;
char* key;
sman(){};
sman(char* k):key(k){};
 
Mystr& operator()(char* key)
{   
    BUF.crypto = key;   
    return sman::m; 
} 
};
 
buffer sman::BUF;
Mystr sman::m(&BUF);
 
sman encrypt(char* key)
{
    return sman();
};
 
 
basic_ostream<char>& operator<<(ostream& s, Mystr& m)
{
    sman::BUF.p = &s; //сохраняем cout
    return m;
}
 
 
 
Mystr & operator<<(Mystr& s,const char* c)
{       
    sman::BUF.fill_buf(c); //заполняем буфер
    sman::BUF.cryp();       //шифруем
    sman::BUF.p->operator<<(s.rdbuf()); //скидываем в cout
    return sman::m;     
};
 
sman crypto_in(char* k)
{
    return sman(k);
};
Mystr& operator<< (ostream& s, sman& sm)
{
    sman::BUF.p = &s;
    return sm(sm.key);
};
basic_ostream<char> & stop_crypt(ostream& os) //снимает дальнейшую шифровку потока
{
    //sman::BUF.XOR_stream = false;
    return *sman::BUF.p;
}
 
 
 
 
int main (int args, char* arg[])
{
 
 
    
    cout<<crypto_in("346767")<<" Hellow friend,how are you?"<<stop_crypt<<" Hellow friend, how are you?";
 
    
    return 0;
}
Миниатюры
Задание по Страуструпу. Требуется помощь   Задание по Страуструпу. Требуется помощь  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru