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

Класс Triangle - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать граф через шаблоны http://www.cyberforum.ru/cpp-beginners/thread887666.html
Нужно реализовать граф через шаблоны: Граф (2 класса: узел графа, граф находятся в отношении агрегации) Конструкторы: по умолчанию, с параметрами . Деструктор. Функции (две-три на выбор): включение в графу элемента со своими связями; удаления из графа элемента со своими связями; вывода графу на экран; поиск элемента графу;
C++ Исправить ошибки. Написать функцию, удовлетворяющую следующим требованиям: Помогите пожалуйста!!!! Написал программу, но она не работает. Помогите пожалуйста исправить ошибку!!! Возможно неправильно написал 17 строчку. Написать функцию, удовлетворяющую следующим требованиям: Прототип: int f(char*a, int n) Параметры: а - указатель исходного массива, n - размер исходного массива. Назначение: Чтение строки из текстового файла Код: #include <iostream> #include... http://www.cyberforum.ru/cpp-beginners/thread887657.html
C++ Компиляция программ для Russian Code Cup
Есть такая программа #include <stdio.h> #include <math.h> int main(){ int n;//Количество отверстий int d;//Расстояние между контактами printf("Выполнение программы\n"); FILE *f=fopen("01","r"); fscanf(f,"%d %d",&n,&d);
Вывести пользователю список книг, удовлетворяющих критерий поиска C++
Задача: Написать программу. Пользователь вводит кол-во книг. Далее указывает название, автора и стоимость каждой книги. После чего пользователей выбирает критерий поиска (название, автора или стоимость). К примеру он выбрал автора. После чего вводит фамилию автора. Далее программа должна вывести пользователю список книг удовлетворяющий критерий поиска. #include "stdafx.h" #include...
C++ insert в двухмерном векторе http://www.cyberforum.ru/cpp-beginners/thread887612.html
Доброго времени суток, тут возник вопрос. Вот сабж int main(){ vector<vector<int> > q; vector<int> qtemp; int i,j,x,size=4,place; q.reserve(4); qtemp.reserve(4); for(i=0;i<4;i++) qtemp.push_back(0); for(i=0;i<4;i++) q.push_back(qtemp);//заполнить 3х3 нулями
C++ char в MS Visual C++ 2012 struct TRAIN { int number; // train's number. char *station; // train's destination station. timeshort time; // train's dispatch time. } int main() { char *mystr; ... подробнее

Показать сообщение отдельно
Гром
205 / 124 / 11
Регистрация: 20.03.2009
Сообщений: 1,090
Записей в блоге: 16
Завершенные тесты: 1
02.06.2013, 06:23     Класс Triangle
Вы неверно используете public. Должно быть что-то вроде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Triangle
 {
 public:
 Triangle(double AB, double BC, double CA);
 void setSides(double AB, double BC, double CA);
 double* getCorners() const;
 double* getSides() const;
 double square() const;
 std::string type() const;
 private:
 double ab, bc, ca;
 double a, b, c;
 }
Вместо setABC я добавил конструктор. Также выкинул функцию setCorners, т.к. по трем сторонам можно однозначно вычислить три угла, а по трем углам невозможно вычислить стороны. Кроме того, к функциям, которые не изменяют внутреннее состояние экземпляра класса, крайне желательно применять квалификатор const (но можете на это пока не обращать внимания).

По поводу ваших ошибок - ключевое слово public используется только внутри определения класса (либо для указания, какие функции и данные будут доступны извне класса, либо при наследовании от другого класса, но про это тоже можете пока не думать). Ставить его перед классом - ошибка, и перед каждой функцией - совершенно излишне, хотя и не вызовет ошибок. В объявлении функции type вы указали лишний int, когда надо было указать только тип строки в качестве типа возвращаемого значения. И по логике программы - при проверке на равнобедренность вы не рассматриваете случай, когда ca равна одной из других сторон; а для проверки является ли треугольник прямоугольным лучше проверять, справедлива ли для него теорема Пифагора (т.к. задавать треугольник корректно все-таки сторонами, а не углами, то углы вычисляются исходя из значений сторон, а ввиду неточности работы с float/double вместо 90 может получиться число типа 89,9999999999, и оно не пройдет проверку - хотя и стороны тогда лучше задавать целыми значениями, чтобы вычисления с ними были точными).

И еще рекомендации. Вместо типа float лучше использовать тип double, он считается рекомендуемым практически во всех случаях, когда вам нужно число с плавающей точкой. Переменные-члены класса лучше делать закрытыми (private). Ну и с точки зрения английского языка Corners лучше заменить на Angles.
 
Текущее время: 15:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru