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

Переписать код програмы с QBasic в C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запуск проекта http://www.cyberforum.ru/cpp-beginners/thread1195975.html
Доброго времени суток) Какие библиотеки directx нужно подгрузить для запуска проекта?
C++ Сумма ряда, не совпадает с проверкой Вычисление суммы ряда (цикл) и проверка (т.е. вычисление арктангенса ) не совпадают. Помогите найти ошибку, пожалуйста. // 3.cpp: определяет точку входа для консольного приложения. // ... http://www.cyberforum.ru/cpp-beginners/thread1195972.html
C++ Нужно перевести задачу с делфи на с++
Помогите перевести задачу с делфи на с++. Срочно нужно. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 =...
C++ Чтение данных из файла
Мне нужно прочитать с фаила и сделать запросы... Но как это сделать? помогите, пожалуйста... #include "stdafx.h" #include <iostream> #include <fstream> #include <iomanip> #include "conio.h"...
C++ Передача enum в качестве аргумента метода класса http://www.cyberforum.ru/cpp-beginners/thread1195946.html
Есть класс //class order; class ticket{ enum type_of_place { coupe, general, berth, wagon_lit }_type_of_place; char* dispatch_station; char* arrival_station; char* departure_date; char*...
C++ Поясните, что делает код //N треугольников плоскости заданы длинами своих сторон. Найдите треугольник максимальной площади. #include "stdafx.h" #include <iostream> #include "Header.h" using namespace std; int main()... подробнее

Показать сообщение отдельно
Erbe
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 54
Завершенные тесты: 2

Переписать код програмы с QBasic в C++ - C++

01.06.2014, 22:50. Просмотров 169. Ответов 0
Метки (Все метки)

QBasic/QuickBASIC
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
' Объявим константы:
    CONST pi = 3.141592653589793#
    CONST Gradus = pi / 180, RAD = 180 / pi
  '  Углы обзора
    CONST OBZORh = 40 * Gradus, OBZORv = 33 * Gradus
  '  Разрешение экрана
    CONST RezX = 319, RezY = 199
  '  Геометрия
    CONST Points = 8   ' Вершин(точек)
    CONST Polygs = 6   ' Граней(полинонов)
    CONST Ps = Points - 1, Pg = Polygs - 1
  '  Переменные препроцессора точек
    DIM Ln1Ugol!, Ln2Ugol!, Ln3Ugol!, Ln4Ugol!
    DIM a1!, a2!, a3!, a4!, b1!, b2!, b3!, b4!
    DIM CamX!, CamY!, CamZ!, CamHcrn!, CamVcrn!
  '  М А С С И В    Т О Ч Е К
DATA 0,0,500
DATA 500,0,500
DATA 500,500,500
DATA 0,500,500
DATA 0,0,0
DATA 500,0,0
DATA 500,500,0
DATA 0,500,0
    DIM X%(Ps), Y%(Ps), Z%(Ps), ex%(Ps), ey%(Ps), DalT%(Ps)
    DIM Xc%(Ps), Yc%(Ps), Zc%(Ps)
    DIM KubU#, KubV#
      FOR i% = 0 TO Ps: READ X%(i%), Y%(i%), Z%(i%): NEXT
   '  Центруем объект
    DIM xMax%, yMax%, zMax%, xMin%, yMin%, zMin%, CntX%, CntY%, CntZ%
 FOR i% = 0 TO Ps
  IF xMax% < X%(i%) THEN xMax% = X%(i%)
  IF xMin% > X%(i%) THEN xMin% = X%(i%)
  IF yMax% < Y%(i%) THEN yMax% = Y%(i%)
  IF yMin% > Y%(i%) THEN yMin% = Y%(i%)
  IF zMax% < Z%(i%) THEN zMax% = Z%(i%)
  IF zMin% > Z%(i%) THEN zMin% = Z%(i%)
 NEXT
  CntX% = (xMax% - xMin%) \ 2
  CntY% = (yMax% - yMin%) \ 2
  CntZ% = (zMax% - zMin%) \ 2
 FOR i% = 0 TO Ps
   X%(i%) = X%(i%) - CntX%
   Y%(i%) = Y%(i%) - CntY%
   Z%(i%) = Z%(i%) - CntZ%
 NEXT
 FOR i% = 0 TO Ps: Xc%(i%) = X%(i%): Yc%(i%) = Y%(i%): Zc%(i%) = Z%(i%): NEXT
  '  М А С С И В    Г Р А Н Е Й(ПОЛИГОНОВ)
DATA 0,1,2,3
DATA 7,6,5,4
DATA 0,3,7,4
DATA 2,1,5,6
DATA 1,0,4,5
DATA 3,2,6,7
  '  Pnum% - грани
    DIM Pnum%(Pg, 3)
      FOR i1% = 0 TO Pg: FOR i2% = 0 TO 3
        READ Pnum%(i1%, i2%)
      NEXT i2%, i1%
  ' Инициализация
SCREEN 7, , 0, 1
   LOCATE 14, 10: COLOR 15: PRINT "PRESS SPACE...    "
   PCOPY 0, 1  ' Сразу откопируем страницу(для надписи)
  DO: LOOP UNTIL INKEY$ = CHR$(32)
  ' Считаем это перед циклом по кадрам
   Ln1Ugol! = OBZORh: Ln2Ugol! = -OBZORh
   Ln3Ugol! = OBZORv: Ln4Ugol! = -OBZORv
   a1! = SIN(Ln1Ugol!): b1! = -COS(Ln1Ugol!)
   a2! = SIN(Ln2Ugol!): b2! = -COS(Ln2Ugol!)
   a3! = SIN(Ln3Ugol!): b3! = -COS(Ln3Ugol!)
   a4! = SIN(Ln4Ugol!): b4! = -COS(Ln4Ugol!)
 ' Параметры камеры
 CamHcrn! = 0 * Gradus   ' Крен камеры
 CamVcrn! = -35 * Gradus   ' Поворот камеры
 CamX! = -700
 CamY! = 0
 CamZ! = 400
 FirstTime! = TIMER
50  ' Основной цикл по кадрам
 IF TIMER - TimePRC > .04 THEN TimePRC = TIMER: GOSUB TimePRC
  SinCamH! = SIN(CamHcrn!): CosCamH! = COS(CamHcrn!)
  SinCamV! = SIN(CamVcrn!): CosCamV! = COS(CamVcrn!)
    ' Углы вращения по таймеру
 KubU# = KubU# + CDBL(1 * tic%) * Gradus    ' Горизонтальная плоскость
 tic% = 0
    ' Вращаем куб
 FOR Tn% = 0 TO 7             ' Поворачиваем точки в плоскости XY
  Yc%(Tn%) = CDBL(X%(Tn%)) * SIN(KubU#) + CDBL(Y%(Tn%)) * COS(KubU#)
  Xc%(Tn%) = CDBL(X%(Tn%)) * COS(KubU#) - CDBL(Y%(Tn%)) * SIN(KubU#)
 NEXT
    ' Цикл по точкам
  FOR i% = 0 TO 7
   TXx! = Xc%(i%) - CamX!: TYy! = Yc%(i%) - CamY!: TZz! = Zc%(i%) - CamZ!
    ' Обратный поворот относительно 2х осей
   TX! = TXx! * CosCamH! + TYy! * SinCamH!    ' Первая плоскость XY
   TY! = -TXx! * SinCamH! + TYy! * CosCamH!
    ' Вторая плоскость XZ
   TZ! = -TX! * SinCamV! + TZz! * CosCamV!  'Сперва Tz ВАЖНО !!!
   TX! = TX! * CosCamV! + TZz! * SinCamV!
    ' Расчёт горизонтального расстояния
  Rasst1! = (a1! * TX! + b1! * TY!)
  Rasst2! = (a2! * TX! + b2! * TY!)
    IF Rasst1! < 0 OR Rasst2! > 0 GOTO Ex3D   'Точка вне видимости
    OBRas1! = ABS(Rasst1!) + ABS(Rasst2!)
    IF OBRas1! <> 0 THEN XeKf# = Rasst1! / OBRas1! ELSE XeKf# = 1
    ex%(i%) = XeKf# * RezX
    ' Расчёт вертикального расстояния
  Rasst3! = (a3! * TX! + b3! * TZ!)
  Rasst4! = (a4! * TX! + b4! * TZ!)
    IF Rasst3! < 0 OR Rasst4! > 0 GOTO Ex3D   'Точка вне видимости
    OBRas2! = ABS(Rasst3!) + ABS(Rasst4!)
    IF OBRas2! <> 0 THEN YeKf# = Rasst3! / OBRas2! ELSE YeKf# = 1
    ey%(i%) = YeKf# * RezY
Ex3D:
  NEXT i%
    ' Очистка заднего буфера
  CLS 1
    ' Построим полигоны
  FOR i% = 0 TO 5
    Px1% = Pnum%(i%, 0): Px2% = Pnum%(i%, 1)
    Px3% = Pnum%(i%, 2): Px4% = Pnum%(i%, 3)
    LINE (ex%(Px1%), ey%(Px1%))-(ex%(Px2%), ey%(Px2%)), 15
    LINE (ex%(Px2%), ey%(Px2%))-(ex%(Px3%), ey%(Px3%)), 15
    LINE (ex%(Px3%), ey%(Px3%))-(ex%(Px4%), ey%(Px4%)), 15
    LINE (ex%(Px4%), ey%(Px4%))-(ex%(Px1%), ey%(Px1%)), 15
  NEXT
'  Копируем страницу
  PCOPY 0, 1
IF INKEY$ = CHR$(27) GOTO 100   ' Выход по ESC
GOTO 50
100
END
 
TimePRC: ' Прерывание по таймеру(Иммитируем для совместимости)
 tic% = tic% + 1
RETURN
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru