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

Ошибка в задаче с классами - C++

Восстановить пароль Регистрация
 
Irisha3581
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 10
29.11.2013, 23:08     Ошибка в задаче с классами #1
не могу понять почему не выводятся значения и не выполняется подсчёт...
помогите, пожалуйста, сижу очень долго, а скоро сессия...
Задача:
Создать класс "квадрат", члены класса - длина стороны. Предусмотреть в классе методы вычисления и вывода сведений о фигуре: диагональ, периметр, площадь. Создать производный класс "правильная квадратная призма с высотой H", добавить в класс метод определения объёма фигуры, переопределить методы расчёта площади и вывода сведений о фигуре. Разработать программу, демонстрирующую работу с объектами этих классов: дано N квадратов и M призм, найти квадрат с максимальной площадью и призму с максимальной диагональю.


Среда разработки - Visual Studio (приложение Windows Forms).
Делала через DataGridView ввод кол-ва квадратов и призм и вывод инфы о них.

Сама программа:

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
#pragma endregion
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
             {
             Close();    
             };
    public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
             {
                 int i;
                 float  max_S, max_diagonal_prisma;
                 float n[100], m[100];
                 int numer_max_S, numer_max_diagonal_prisma;
                 for (i=1; i>=dataGridView1->RowCount; i++) // записываем введённые числа в длины сторон квадратов
                 {
                     if (dataGridView1[0, i]->Selected)
                     {
                         int Dlina_storon = Convert::ToInt32(dataGridView1[0, i]->Value);
                         kv1[i-1].input_my(Dlina_storon);
                     }
                 };
                 for (i=1; i>=dataGridView2->RowCount; i++) // записываем введённые числа в высоты призм
                 {
                     if (dataGridView2[0, i]->Selected)
                     {
                         int H = Convert::ToInt32(dataGridView2[0, i]->Value);
                         kv2[i-1].input_my(H);
                     }
                 };
                 float dig1,dig2;
                 for (i=1; i>=dataGridView1->RowCount; i++) // выводим диагональ квадратов
                 {
                    if (dataGridView1[1, i]->Selected)
                     {
                         dig1=kv1[i-1].diagonal();
                         dataGridView1[1,i]->Value=Convert::ToString(dig1);
                     }
                 };
                 float pl1,per1,pl2,per2;
                 for (i=1; i>=dataGridView1->RowCount; i++) // выводим периметр квадратов
                 {
                     if (dataGridView1[2, i]->Selected)
                     {
                         per1=kv1[i-1].Perimetr();
                         dataGridView1[2,i]->Value=Convert::ToString(per1);
                     }
                 };
                 for (i=1; i>=dataGridView1->RowCount; i++) // выводим площадь квадратов
                 {
                     if (dataGridView1[3, i]->Selected)
                     {
                         pl1=kv1[i-1].Ploshad();
                         dataGridView1[3,i]->Value=Convert::ToString(pl1);
                     }
                 };
 
                 for (i=1; i>=dataGridView2->RowCount; i++) // выводим диагональ призм
                 {
                     if (dataGridView2[1, i]->Selected)
                     {
                         dig2=kv2[i-1].diagonal();
                         dataGridView2[1,i]->Value=Convert::ToString(dig2);
                     }
                 };
                 for (i=1; i>=dataGridView2->RowCount; i++) // выводим объём призм
                 {
                     if (dataGridView2[2, i]->Selected)
                     {
                         per2=kv2[i-1].f_obem();
                         dataGridView2[2,i]->Value=Convert::ToString(per2);
                     }
                 };
                 for (i=1; i>=dataGridView1->RowCount; i++) // выводим площадь призм
                 {
                     if (dataGridView1[3, i]->Selected)
                     {
                         pl2=kv2[i-1].Plozhad();
                        dataGridView2[3,i]->Value=Convert::ToString(pl2);
                     }
                 };
                               // начало поиска максимумов и вывод соответственно
                 max_S=m[0];
                 numer_max_S=1;
                 for (i=1; i>=dataGridView1->RowCount; i++)
                 {
                     if (m[i-1]>max_S) {max_S=m[i-1]; numer_max_S=i;}
                 }
                 textBox7->Text=Convert::ToString(numer_max_S);
 
                 max_diagonal_prisma=n[0];
                 numer_max_diagonal_prisma=1;
                 for (i=1; i>=dataGridView2->RowCount; i++)
                 {
                     if (m[i-1]>max_diagonal_prisma) {max_diagonal_prisma=n[i-1]; numer_max_diagonal_prisma=i;}
                 }
                 textBox8->Text=Convert::ToString(numer_max_diagonal_prisma);
 
 
             };
          }; 
}
И класс:
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
class Kvadrat
{
public: 
    float d; // длина стороны
public:
    virtual void input_my(float x)
    {
        d=x;
    };
    virtual float diagonal(void) // диагональ квадрата
    { 
        return sqrtf(d);
    }; 
    virtual float Perimetr(void) // периметр квадрата
    {
        return 4*d;
    };
    virtual float Ploshad(void) // площадь квадрата
    {
        return d*d;
    };
};
 
class Prizma: public Kvadrat
{
public:
    int H; // высота призмы
public:
    virtual void input_my(int y)
    {
        H=y;
    }
    virtual float diagonal(void) // диагональ призмы
    {
        return sqrtf(2*H*H+H*H);
    }
    virtual float Plozhad(void) // площадь призмы
    {
        return 4*d*H+2*((3*sqrtf(3))/2)*(d*d);
    }
    virtual float f_obem(void) // объём призмы
    {
        float S1=Ploshad();
        return H*S1;
    }
    
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 23:08     Ошибка в задаче с классами
Посмотрите здесь:

Ошибка в задаче по сортировке массива в C++ C++
C++ Ошибка в работе с классами
C++ Ошибка с классами
C++ ошибка в задаче на палиндром
C++ Подскажите, в чем ошибка с классами
Ошибка в задаче о восьми ферзях C++
Ошибка в задаче C++
Ошибка при работе с классами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru