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

Дальнейшее изучение С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ полноэкранный режим консоли http://www.cyberforum.ru/cpp-beginners/thread444341.html
Здравствуйте! Не могли бы подсказать, как программно переходить в полноэкранный режим в консоле? (Именно переходить, а не получать информацию, является ли режим полноэранным) Добавлено через 19 минут Функцию нашёл тут, только возникают ошибки. Код программы: #include <windows.h>; #include <wincon.h>;
C++ Преобразовать выражение в постфиксную форму Преобразовать выражение, составленное из цифр и знаков арифметических операций (+,-,*,/) в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции. Обычная запись 3+4 (5-4)*2 2*(3+4)*5 Постфиксная запись 3 4 + 5 4 – 2 * 2 3 4 + * 5 * http://www.cyberforum.ru/cpp-beginners/thread444330.html
C++ Построить некоторый Автомат на три команды
Некоторый автомат может запросить два числа и выполнить 3 команды. Команда А преобразует имеющуюся пару чисел (х, у) в (х-у,у), команда В преобразует пару чисел (х,у) в пару (х+у,у), команда С преобразует пару чисел (х,у) в пару (у,х). Составьте алгоритм и программу работы автомата.
Векторы C++
Определите полусумму длин двух векторов А(1,5; 2,5; -0,3) и В(-11,7; -9,3; 2,5; 3,7; -1,2). Вычислите, длины вектора оформив в виде функции.
C++ Модуль http://www.cyberforum.ru/cpp-beginners/thread444322.html
Разработать и отладить программу состоящую из модуля, который содержит процедуру, которая обнуляет элементы матрицы под главной диагональю и функцию, которая определяет среднеарифметическое отрицательных элементов.
C++ Помогите преобразовать выражение в ПОЛИЗ и вывести его Нужно преобразовать исходное арифметическое выражение записанное в файле в ПОЛИЗ и записать его в преобразованном виде в выходной файл. Выражение типа a+b/c+x. Заранее спасибо. подробнее

Показать сообщение отдельно
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,925
Записей в блоге: 1
11.02.2012, 13:48  [ТС]
Цитата Сообщение от IFree Host Посмотреть сообщение
Слушай, программирование выглядит так.
Есть данные которые ты вводишь, они обрабатываются и выводятся обратно
все это только численные значения и команды. То есть любая графическая программа если убрать всю графику это только набор входящих и выходящих численых значений. Это ты должен был понять читая книгу Лафорте. Если не понял читай еще раз.

Вот тебе код тех же башен Ханоя прочтешь и сразу разберешься

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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
// Hanoiturm.cpp : Defines the entry point for the console application.
//
//    Farben in Console:
//
//    Black         = 0,    Red           = 4,  DarkGray      = 8,      LightRed      = 12,
//    Blue          = 1,    Magenta       = 5,  LightBlue     = 9,      LightMagenta  = 13,
//    Green         = 2,    Brown         = 6,  LightGreen    = 10,     Yellow        = 14,
//    Cyan          = 3,    LightGray     = 7,  LightCyan     = 11,     White         = 15
 
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
 
#define PIX printf(" ");
#define ZEICHEN(x) printf("%c", (x));
 
const int LAVEL = 10;
const int STANGE = 3;
 
int ScheibenPos[LAVEL][STANGE];
 
HANDLE hConsole;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
 
// Zeile
char c_zeile[256];
 
// Konvertiert Text aus ANSI ins OEM 
char *Deutsch(char *c_zeile_convert)
{ 
    AnsiToOem(c_zeile_convert, c_zeile); 
    return c_zeile; 
} 
 
void Gehe_zum_Feld(int x, int y)
{
    COORD coord = { x, y };
    SetConsoleCursorPosition(hStdOut, coord);
} 
 
void Setze_Farbe(int i_textFarbe, int i_hintergrundFarbe)        
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, (WORD)(( i_hintergrundFarbe << 4) | i_textFarbe ) );
}
 
void Setze_ZeichenKette(int von_x, int bis_x, int i_line, int i_zeichen, int i_textFarbe, int i_hintergrundFarbe)        
{
   for(int i=von_x; i <= bis_x; i++ ) 
   {
       Gehe_zum_Feld(i,i_line);
       Setze_Farbe(i_textFarbe, i_hintergrundFarbe);
       ZEICHEN(i_zeichen)
   }
}
 
void Setze_Farbe_Von_Bis(int von_x, int bis_x, int von_y, int bis_y, int i_textFarbe, int i_hintergrundFarbe)        
{
    for (int x = von_x; x <= bis_x; x++ )
        for (int y = von_y; y <= bis_y ; y++ )
        {
            Gehe_zum_Feld(x,y);
            Setze_Farbe(i_textFarbe, i_hintergrundFarbe);
            PIX
        }
}
 
void Zeichne_Brett(int x_location, int y_location)
{
    for (int i=0, x = 1+x_location; i<10 ,x < x_location+30; i++, x = x+3 )
        for (int j=0, y = 1+y_location; j<10 , y < y_location+21 ; j++, y=y+2 )
        {
            if((j+i)%2!=0) 
            {
                Setze_Farbe_Von_Bis(x,x+2,y,y+1,0,1);
            } 
            else
            {
                Setze_Farbe_Von_Bis(x,x+2,y,y+1,0,9);
            }
        }
}
 
 
void Verschiebe_Scheibe(int i_von, int i_nach)
{
    int i_scheibe;
    int i_position,
        i_level,
        i_breite;
 
    switch(i_von)
    {
        case 1: i_position = 6; break;
        case 2: i_position = 28; break;
        case 3: i_position = 51; break;
    }
 
    // i_level =  22 - i // i 22 = 0 12 = 9 22-9 13
 
 
    for (int i = 9; i >= 0; i--) 
    {
        if(ScheibenPos[i][i_von-1] != 0)
        {
            i_scheibe = ScheibenPos[i][i_von-1];
            ScheibenPos[i][i_von-1] = 0;
            i_level =  22 - i;
            Setze_ZeichenKette(i_position, i_position + 21, i_level, 32, 15, 15);
            switch(i_nach)
            {
                case 1: i_position = 7; break;
                case 2: i_position = 29; break;
                case 3: i_position = 52; break;
            }
            for (int j = 9; j >= 0; j--) 
            {
 
 
    //Setze_ZeichenKette(29,50-1,22,32,14,9);
    //Setze_ZeichenKette(52,73-1,22,32,14,9);
 
                if(j == 0 && ScheibenPos[0][i_nach-1] == 0) 
                {
                    i_level =  22 - j;
                    i_breite = i_scheibe * 2;
                    i_position +=10; 
                    Setze_ZeichenKette(i_position-i_scheibe, i_position -i_scheibe + i_breite, i_level, 32, 15-i_scheibe, 15-i_scheibe);
                    ScheibenPos[0][i_nach-1] = i_scheibe;
                    Sleep(500);
                    break;
                }
                if(ScheibenPos[j][i_nach-1]!= 0)
                {
                    i_level =  22 - j-1;
                    i_breite = i_scheibe * 2;
                    i_position +=10; 
                    Setze_ZeichenKette(i_position-i_scheibe, i_position -i_scheibe + i_breite, i_level, 32, 15-i_scheibe, 15-i_scheibe);
                    ScheibenPos[j+1][i_nach-1] = i_scheibe;
                    Sleep(500);
                    break;
                }
            }
            break;
        }
    }
}
 
void RingVerschieben(int i_RingeZahl,int i_stange1,int i_stange2,int i_stange3)
{
    if (i_RingeZahl==1) // wenn letzter Ring ist erreicht
    {
        Verschiebe_Scheibe(i_stange1, i_stange3);
        //printf("%i %i \n",i_stange1,i_stange3);
    }
    else
        {       
                RingVerschieben ( i_RingeZahl-1, i_stange1, i_stange3, i_stange2);
                Verschiebe_Scheibe(i_stange1, i_stange3);
                //printf("%i %i \n",i_stange1,i_stange3);
                RingVerschieben ( i_RingeZahl-1, i_stange2, i_stange1, i_stange3);
        
        }               
}
 
void Zeichne_Umrahmung()
{
    Gehe_zum_Feld(5,2); 
    Setze_Farbe(8, 7);
    ZEICHEN(201)
 
        Setze_ZeichenKette(6,74,2,205,8,7);
 
    Gehe_zum_Feld(74,2);    
    Setze_Farbe(6, 7);
    ZEICHEN(187)
 
    Gehe_zum_Feld(5,23);    
    Setze_Farbe(8, 7);
    ZEICHEN(200)
 
        Setze_ZeichenKette(6,74,23,205,8,7);
 
    Gehe_zum_Feld(74,23);   
    Setze_Farbe(8, 7);
    ZEICHEN(188)
 
        for (int y = 3; y < 23 ; y++ )
        {
            Setze_ZeichenKette(5,5,y,186,8,7);
            Setze_ZeichenKette(74,74,y,186,8,7);
        }
}
 
void Zeichne_Stange(int x_location, int y_location)
{
        for (int j=0, y = 1+y_location; j<10 , y < y_location+18 ; j++, y=y+2 )
        {
            Setze_Farbe_Von_Bis(x_location,x_location,y,y+1,0,8);
        }
}
 
void BerechneZuge(int i_Ringe, float (&i_StangenVerschiebung)[60], int i_Ausgabe) 
{
    i_StangenVerschiebung[0] = 0;
    for(int i = 1; i <= i_Ringe; i++)
    {
        i_StangenVerschiebung[i]= 2 * (i_StangenVerschiebung[i-1]+1)-1;
    }
    Gehe_zum_Feld(6,1);
    Setze_Farbe(8, 7);
    printf("%s: %.0f\n", Deutsch("Mininimale Zahl der Bewegungenöäßü"), i_StangenVerschiebung[i_Ausgabe] );
};
 
void BerechneZuge(int i_Ausgabe) 
{
    float f_StangenVerschiebung[61];
    float f_Time;
    float f_sec, f_min, f_hour, f_days, f_secR, f_minR, f_hourR, f_daysR, f_year;
 
    f_StangenVerschiebung[0] = 0;
    for(int i = 1; i < 61; i++)
    {
        f_StangenVerschiebung[i]= 2 * (f_StangenVerschiebung[i-1]+1)-1;
    }
    Gehe_zum_Feld(10,5);
    Setze_Farbe(4, 15);
    printf("%s: %.0f", Deutsch("Mininimale Zahl der Bewegungen"), f_StangenVerschiebung[i_Ausgabe] );
    Gehe_zum_Feld(10,7);
    Setze_Farbe(4, 15);
    printf("Bei einer Bewegung pro 1/10 Secunde dauert die Darstellung:");
 
    f_sec =  f_StangenVerschiebung[i_Ausgabe] / 10;
    f_secR = fmod(f_sec, 60);
    f_min =  (f_sec - f_secR)/60;
    f_minR = fmod(f_min, 60);
    f_hour = (f_min - f_minR)/60;
    f_hourR = fmod(f_hour, 24);
    f_days = (f_hour - f_hourR)/24;
    f_daysR = fmod(f_days, 365);
    f_year = (f_days - f_daysR)/365;
 
    Gehe_zum_Feld(22,12);
    printf("%.0f Jahre",f_year);
    Gehe_zum_Feld(22,13);
    printf("%.0f Tage", f_daysR);
    Gehe_zum_Feld(22,14);
    printf("%.0f Stunden",f_hourR);
    Gehe_zum_Feld(22,15);
    printf("%.0f Minuten",f_minR);
    Gehe_zum_Feld(22,16);
    printf("%.0f Sekunden",f_secR);
    
 
};
 
void Zeichne_Brett()
{
    Setze_Farbe_Von_Bis(0,79,0,24,0,7);
    Zeichne_Umrahmung();
    Setze_Farbe_Von_Bis(6,27,3,22,0,15);
    Setze_Farbe_Von_Bis(28,50,3,22,0,15);
    Setze_Farbe_Von_Bis(51,73,3,22,0,15);
    
    //Zeichne_Stange(16,4);
    //Zeichne_Stange(37,4);
    //Zeichne_Stange(58,4);
    Gehe_zum_Feld(0,0);
}
 
int Meldung( int i_meldungIndex)
{
    int i_Input = 0;
    char c_Input;
 
    Setze_Farbe_Von_Bis(18, 60, 10, 15, 14, 9);
    Setze_ZeichenKette(18, 60, 9, 196, 14, 9);
    switch(i_meldungIndex)
    {
    case 0: 
        Gehe_zum_Feld(22,11); 
        printf("Geben Sie Anzahl der Scheiben ein: "); 
        Gehe_zum_Feld(39,13); 
        scanf("%i", &i_Input);
        fflush(stdin);
        return i_Input;
        break;
    case 1: 
        Gehe_zum_Feld(19,11); 
        printf("Drucken Sie Eingabetaste um neu zu starten"); 
        Gehe_zum_Feld(22,12);
        printf("oder ESC um das program zu verlassen");
        c_Input = getch();
        return (int)c_Input;
        break;
    }
 
    Gehe_zum_Feld(39,22);
}
 
void Zeichne_Alle_Scheiben(int i_Ausgabe)
{
    int i_ScheibenBreite = 0,
        i_Position = 0,
        i_Farbe = 0,
        i_Level = 22;
 
    Zeichne_Brett();
 
    for (int i = i_Ausgabe; i > 0; i--)
    {
        i_ScheibenBreite = i*2;
        i_Position = 17 - i;
        i_Farbe = 15 - i;
        Setze_ZeichenKette(i_Position, i_Position+i_ScheibenBreite-1, i_Level--, 32, 0 ,i_Farbe);
    }
    //Setze_ZeichenKette(29,50-1,22,32,14,9);
    //Setze_ZeichenKette(52,73-1,22,32,14,9);
}
 
void Zeige_Antwort(int i_Ausgabe)
{
    Setze_Farbe_Von_Bis(8,70,2,23,0,15);
    Zeichne_Umrahmung();
    Gehe_zum_Feld(15,4);
    BerechneZuge(i_Ausgabe);
}
 
void main()
{
    int i_stange1=1,
        i_stange2=2,
        i_stange3=3,
        i_Anzahl;
    float i_StangenVerschiebung[60];
 
    do
    {
        Zeichne_Brett();
        i_Anzahl = Meldung(0);
        if(i_Anzahl < 11)
        {
            Zeichne_Alle_Scheiben(i_Anzahl);
            BerechneZuge(60, i_StangenVerschiebung, i_Anzahl);
            
            for(int i = i_Anzahl-1, j = 1 ; i >= 0; i--, j++) ScheibenPos[i][0] = j;
            Sleep(1000);
            RingVerschieben ( i_Anzahl, i_stange1, i_stange2, i_stange3);
            i_Anzahl = Meldung(1);
        }
        else
        {
            if(i_Anzahl <= 60)Zeige_Antwort(i_Anzahl);
            getchar();
            i_Anzahl = Meldung(1);
        }
        
        for(int i = 9; i >= 0; i--) 
        {
            ScheibenPos[i][0] = 0;
            ScheibenPos[i][1] = 0;
            ScheibenPos[i][2] = 0;
        }
    } while (i_Anzahl != 27);
}
Добавлено через 59 секунд
ForEveR, просто ему пока ненадо об этом думать
а тетрис ты в чем компилировал?
Мне еще две главы читать Лафоре 14 и 15
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru