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

Аналоговый амперметр - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка argument of type "CGroup *" is incompatible with parameter of type "CGroup *" http://www.cyberforum.ru/cpp-beginners/thread312840.html
Задача состоит в том, чтобы на основе текстовых файлов сделать подобие базы данных. Есть 3 связанных таблицы: группы, студенты, оценки. Также нужно реализовать различные функции работы с этой...
C++ Рекурсивный поиск папок/файлов в С++ Здравстуйте, может кто знает как можно реализовать рукурсивный поиск папок или файлов на С++. Платформа может быть любой ... Нароботок чесно говоря нет ... http://www.cyberforum.ru/cpp-beginners/thread312829.html
C++ Как найти сумму строки в матрице?
Дана матрица размера M × N. Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы.
Файловый ввод/вывод: в строке поменять местами слова, разделенные союзом "и" C++
Задача такая : для заданной строки S поменять местами слова, разделенные союзом "и". Текст нужно считывать с заранее созданного файла "input.txt" и записывать в "output.txt". Собирал частями по...
C++ Морской бой http://www.cyberforum.ru/cpp-beginners/thread312789.html
Задача. Игра "Морской бой". Текст. Игра для 2 человек, обмен информацией через общие файлы на сетевом диске. Алгоритм найден на просторах сети. Не работает запись и чтение в файл. Что сделал:...
C++ Ввод и вывод строки целиком Здравствуйте. Как реализовать ввод и вывод строки целиком, с пробелами и прочим? Спасибо. подробнее

Показать сообщение отдельно
brus69
0 / 0 / 0
Регистрация: 23.03.2011
Сообщений: 3

Аналоговый амперметр - C++

04.06.2011, 14:30. Просмотров 1134. Ответов 1
Метки (Все метки)

Добрый день, подскажите что в моей программе не так.
Уже 5 раз не могу здать программу своему научному руководителю.
Задача: написать программу аналоговый амперметр
в коде должны быть классы
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
//---------------------------------------------------------------------------
 
#ifndef Unit2H
#define Unit2H
#include <vcl.h>
#pragma hdrstop
#include <Classes.hpp>
#include <math.h>
#include <stdlib.h>
#pragma package(smart_init)
//#pragma resource "*.dfm"
 
class ScaleA //класс, рисующий букву А
{
    TImage*Image1;//указатель на изображение 
public:
    ScaleA(TImage*pIm=0)//конструктор класса
    {
       Image1=pIm;
    }
    void SetImage(TImage*pIm)//метод задания изображения
    {
       Image1=pIm;
    }
    int Draw() //метод рисования буквы А
    {
        if(!Image1)
            return 0;
        int font=Image1->Canvas->Font->Height;//сохранения текущего шрифта
        Image1->Canvas->Font->Height=90; //задание нового шрифта
        Image1->Canvas->TextOutA(215,150,"A"); //рисование буквы А под шкалой
        Image1->Canvas->Font->Height=font;
        return 1;
    }
};
 
class Scale //класс, рисующий шкалу
{
    TImage*Image1;
public:
    Scale(TImage*pImage=0) // конструктор
    {
 
        this->Image1=pImage;
 
    }
    void SetImage(TImage*pImage) //метод задания изображения
    {
        this->Image1=pImage;
    }
    int Draw() //метод рисования шкалы
    {
        if(!this->Image1)
            return 0;
        Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);
    Image1->Canvas->FillRect(Image1->Canvas->ClipRect); //создание белого фона для изображения
    Image1->Canvas->Brush->Color=(TColor)RGB(0,0,0);    //задание черного цвета кисти
    TRect rect;
    rect.left=190;
    rect.Top=300;
    rect.Right=290;
    rect.Bottom=305;
    Image1->Canvas->FillRect(rect); //рисование основания стрелки
    Image1->Canvas->MoveTo(240,100);//
    Image1->Canvas->LineTo(240,80); //рисование нулевой отметки на шкале
    Image1->Canvas->Brush->Color=(TColor)RGB(255,255,255);//задание белого цвета для кисти
    Image1->Canvas->TextOutA(237,65,"0"); //изображение нуля на шкале
    for(int i=1;i<=15;i++) //разметка шкалы(положительная часть)
    {
        Image1->Canvas->MoveTo(240+200*sin(i*3*3.14/180),300-200*cos(i*3*3.14/180));
        Image1->Canvas->LineTo(240+((i%5)?210:220)*sin(i*3*3.14/180),300-((i%5)?210:220)*cos(i*3*3.14/180)); //рисование делений
        if(!(i%5))     //выделение каждого 5-го штриха
        {
            char buf[4];
            itoa(i*10,buf,10); //конвертирование числа в строки
            AnsiString tmp(buf);//создание стринга
            Image1->Canvas->TextOutA(240+((i%5)?210:220)*sin(i*3*3.14/180)-3,300-((i%5)?210:220)*cos(i*3*3.14/180)-15,tmp);     //подписывание деления
        }
    }
    for(int i=1;i<=15;i++) //разметка отрицательной части шкалы(все аналогично)
    {
        Image1->Canvas->MoveTo(240-200*sin(i*3*3.14/180),300-200*cos(i*3*3.14/180));
        Image1->Canvas->LineTo(240-((i%5)?210:220)*sin(i*3*3.14/180),300-((i%5)?210:220)*cos(i*3*3.14/180));
        if(!(i%5))
        {
            char buf[4];
            itoa(i*10,buf,10);
            AnsiString tmp(buf);
            Image1->Canvas->TextOutA(240-((i%5)?210:220)*sin(i*3*3.14/180)-10,300-((i%5)?210:220)*cos(i*3*3.14/180)-15,tmp);
        }
    }
    ScaleA scalea(Image1);//создание объекта класса, рисующего букву А на шкале
    scalea.Draw();//рисование буквы А
    return 1;
    }
 
} ;
 
class Arrow //класс, рисующий стрелку
{
    TImage*Image1;//указатель на ихображения
    float grad;//и отклонение в градусах
 public:
    Arrow(TImage*pImage=0)//конструктор
    {
        Image1=pImage;
        grad=0;
    }
    void SetImage(TImage*pImage)//метод задания изображения
    {
        Image1=pImage;
    }
    int Draw(float fGrad)//метод рисования стрелки
    {
        if(!Image1)
            return 0;
        grad=fGrad;
        Image1->Canvas->MoveTo(240,300);  //установление пера к основанию стрелки
        Image1->Canvas->Pen->Width=3; //задание толщины пера
        Image1->Canvas->LineTo(240+190*sin(grad*3.14/180),300-190*cos(grad*3.14/180));  //рисование основной части стрелки
        Image1->Canvas->Pen->Width=1; //задание толщины пера(указательной части)
        Image1->Canvas->LineTo(240+205*sin(grad*3.14/180),300-205*cos(grad*3.14/180));
        return 1;
    }
};
 
class Calc//класс, вычисляющий отклонение в градусах по величине тока
{
    float value,grad;
public:
    Calc()//конструктор по умолчанию
    {
 
 
    }
    float ObtainGrad(float tmp)//метод вычисления отклононеия стрелки
    {
        value=tmp;
        if((tmp>=150)||(tmp<=-150)) //если число выходит за диапазон (-150,150), стрелка "упирается" в соответствующий край шкалы
        {
           if(tmp>=150)
               grad=45;
           if(tmp<=-150)
           {
               grad=-45;
           }
        }
        else
           grad=45.0/150*tmp;
        return grad;
    }
 
};
 
 
 
//---------------------------------------------------------------------------
#endif
0
Вложения
Тип файла: rar проект123.rar (368.3 Кб, 32 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru