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

Программирование на С++ с использованием классов. Массивы объектов. Наследование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В массиве чисел найти самую маленькую серию подряд стоящих нечетных элементов http://www.cyberforum.ru/cpp-beginners/thread233789.html
В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов. Удалить из массива два первых простых числа. Проверить, изменилась ли серия подряд стоящих нечетных элементов.
C++ Двух мерный массив. Дана прямоугольная матрица. Найти строку с наибольшей и меньшей суммой элементов вывести на экран найденные строки и суммы их элементов. http://www.cyberforum.ru/cpp-beginners/thread233787.html
C++ Есть разница между C++Builder и Visual Studio?
Здравствуйте! Я только начал изучать С++ (по книге Лафоре). Хочу узнать есть ли разница в какой программе программы писать? Просто такое дело, скачал Microsoft Visual Studio 2010 а там тихий ужас - фиг разберешься, немного разобрался - напишу программу - ошибку какую то выдает (типа не компилируется) хотя все по учебнику..(( еще скачал wxDev-C++ - вроде пишет что компилируется нормально, но...
C++ Составить алгоритм решения ребуса
составить алгоритм решения ребуса МУХА+МУХА+МУХА=СЛОН(различные буквы означают различные цифры, старшая - не 0)
C++ Массивы http://www.cyberforum.ru/cpp-beginners/thread233780.html
Помогите пожалуйста решить 2 задачи на си(Завтра здать нужно.) Задача 1 Найти в отсортированном в порядке увеличения элементов массиве место для нового заданного элемента Задача 2 Написать программу, которая угадывает задуманное число в интервале за n вопросов типа "Ваше число меньше такого-то?" Надеюсь на вашу помощь. Заранее спасибо
C++ Переписать в выходную строку слова из входной строки в порядке возрастания их длины. Помогите с решенеие кому не сложно в Visual C++, пожалуйста. 1. Интервал между минимальным и максимальным значениями элементов массива разбить пополам и относительно этого значения разбить массив на две части (части не сортировать). 2. Переписать в выходную строку слова из входной строки в порядке возрастания их длины. зарание спасибо. подробнее

Показать сообщение отдельно
Ardatov
19 / 19 / 3
Регистрация: 13.12.2009
Сообщений: 43
26.01.2011, 00:40     Программирование на С++ с использованием классов. Массивы объектов. Наследование
Хорошая задачка. Если не секрет - с какого курса и по какому предмету, можно в личку.
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
#include <iostream>
#include <math.h>
using namespace std;
 
//класс треугольников
class triangle {  
protected:
    float len; //длина строны
public: 
    
    void set_len(float l) { len = l; } //установить длину  
    float perimeter(); //поиск периметра
    float area(); //поиск площади
    void show_perimeter(); //вывод периметра
    void show_area(); //вывод площади
};
 
float triangle::perimeter()
{
     return len * 3;
}
 
void triangle::show_perimeter()
{
     cout << "Perimeter of the triangle is equal to " << triangle::perimeter() 
          << endl;
}     
 
float triangle::area()
{
     //вычисляется по формуле герона 
     float p = len*3/2;
     float a = sqrt(p*(p-len)*(p-len)*(p-len)); 
     return a;
}
 
void triangle::show_area()
{
     cout << "Area of a triangle is equal to " << triangle::area() << endl;
}
 
//класс призм
class prism : public triangle {
    float h; //высота
public:
    void set_h(float hh) { h = hh; } //установит значение высоты
    float volume(); //вычисление объема
    float area(); //вычисление площади
    void show_volume(); //вывод объема
    void show_area(); //вывод площади
};    
 
float prism::volume()
{                
     return triangle::area() * h;
}
 
float prism::area()
{
      return triangle::area()*2 + (h*len)*3;
}
 
void prism::show_volume()
{
     cout << "The volume of the prism is " << prism::volume() << endl;
}
 
void prism::show_area()
{
     cout << "Area of a prism is equal to " << prism::area() << endl;
}
 
int main()
{
    int N;
    cout << "Enter the count of triangles N: ";
    cin >> N;
    
    int M;
    cout << "Enter the number of prisms M: ";
    cin >> M;
    
    int i;
    triangle ar_tr[N]; //массив объектов треугольников
    //ввод значения стороны треугольника
    float temp;
    for(i=0; i<N; i++) {
             cout << "Enter the length of the triangle: "; 
             cin >> temp;            
             ar_tr[i].set_len(temp);
    }
    //вывод данных (площадь и периметр) о треугольниках
    for(i=0; i<N; i++) {
        ar_tr[i].show_area();
        ar_tr[i].show_perimeter(); 
    }        
                                          
    prism ar_pr[M]; //массив объектов призм  
    //ввод грани и высоты призмы 
    for(i=0; i<N; i++) {
             cout << "Enter the face and height of the prisms: ";   
             cin >> temp;          
             ar_pr[i].set_len(temp);
             cin >> temp;
             ar_pr[i].set_h(temp);
    }
    //вывод данных (площадь и объем) о призмах
    for(i=0; i<M; i++) {
        ar_pr[i].show_area();
        ar_pr[i].show_volume();
    }  
       
    //поиск среднего значения площади треугольников    
    float sum=0;
    for(i=0; i<N; i++) sum += ar_tr[i].area();    
    float average = sum/N; //среднее значение      
    //вывод количества треугольников площадь которых меньше средней
    int count=0;
    for(i=0; i<N; i++) 
        if (ar_tr[i].area() < average) count++;
    cout << "\nThe count of triangles, whose area is less than the average: "
         << count;
    
    //поиск призмы с наибольшим объемом
    float max = ar_pr[0].volume();
    for(i=1; i<M; i++) if (max < ar_pr[i].volume()) max = ar_pr[i].volume();
    cout << "Value of the maximum volume of prisms: " << max;
    
    cin.get();
    return 0;
}
 
Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru