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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
s92p
11 / 11 / 0
Регистрация: 12.09.2011
Сообщений: 42
#1

классы и объекты. структура-пара - C++

15.12.2011, 20:16. Просмотров 2005. Ответов 2
Метки нет (Все метки)

поле first- дробное положительное число, катет а прямоугольного треугольника; поле second - дробное положительное число, катет b прям. треуг. реализовать метод hypotenuse()- вычисление гиподенузы.

в задании должно присутствовать
1. метод инициализации Init; метод должен контролировать значения аргументов на корректность.
2. ввод с клавы Read.
3. вывод на зкран Display.

трудность с 1. Init. как реализовать этот метод???

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
#include <iostream>
#include <string>
#include <math.h>
 
using namespace std;
 
struct Gipotenuza
{
    double first; // катет А
    double second; // катет В
 
    void read()
    {
 
        cout << "Введите катет А: ";
        cin >> first;
        cout << "Введите катет В: " ;
        cin >> second;
 
    }
    void display()
    {
        cout << "Гипотенуза равна: "<< sqrt(first*first+second*second);
        cout << endl;
    }
 
   void Init(double a,double b)
    {
 
        first=a;
        second=b;
    }
};
 
int main()
{
    Gipotenuza a;
 
    a.read();
    a.display();
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 20:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос классы и объекты. структура-пара (C++):

Структура-пара - C++
Здравствуйте, форумчане. Помогите пожалуйста с задачкой.Некоторые условия мне вообще не понятны, о них позже.... Вот где я сейчас: ...

Структура-пара - C++
Поле first — дробное число; поле second — целое полож. число, показатель степени. Реализовать метод Power() — возведение числа first в...

Структура-пара - C++
Помогите пожалуйста решить задачу, очень нужно. Поле first - дробное число; поле second - дробное число, показатель степени. ...

Структура - пара - C++
Поле first — дробное положительное число, цена товара; поле second - целое положительное число, количество единиц товара. Реализовать метод...

Структура-пара - C++
Структурой-парой называется структура с двумя полями, которые обычно имеют имена first и second. Требуется реализовать тип данных с помощью...

Структура-пара Задача - C++
Линейное ура-ние y=Ax+B.Поле first дробное число коэффициент А;Поле second-дробное число,коэффициент В.Реализовать метод root()-вычисление...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
s92p
11 / 11 / 0
Регистрация: 12.09.2011
Сообщений: 42
19.12.2011, 06:28  [ТС] #2
выручайте народ!! пожалуйста
0
Bers
Заблокирован
19.12.2011, 09:49 #3
Цитата Сообщение от s92p Посмотреть сообщение
трудность с 1. Init. как реализовать этот метод???
По заданию метод должен проконтролировать валидность аргументов.
А какие аргументы валидны?

Смотрим задание:
Цитата Сообщение от s92p Посмотреть сообщение
поле first- дробное положительное число
Цитата Сообщение от s92p Посмотреть сообщение
поле second - дробное положительное число
Метод должен проконтролировать, что введенное число - дробное, и положительное.

Как это можно сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Init(double a,double b)
    {
        //так как метод принимает только 
       //дробный тип данных
       //то априори данным-членам класса будит 
       //присвоено только дробные значения
        //поэтому первое требование задания 
       //(должны быть дробными) - выполнено.
 
        if(a<=0|| b<=0)   //данная проверка пропустит
                                  // только положительные числа
        {
             std::cout << "ОШИБКА! Аргументы должны быть больше нуля!\n";
             first=1; second=1; return;   //результатом выполнения функции 
                            //всегда будут положительные числа
                            //Поэтому, второе требование задания выполнено.
         }
        first=a;    second=b;
    }
Поскольку данный метод - своего рода сеттер данных класса, то использовать его нужно везде, где нужно проконтролировать валидность входящих данных. Поэтому, метод Read() нужно переписать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 void read()
    {
 
        double _f, _s;
        cout << "Введите катет А: ";
        cin >> _f;
        cout << "Введите катет В: " ;
        cin >> _s;
        Init(_f,_s); //теперь мы можем быть уверены, 
                        //что класс не пропустит не_корректные данные 
                        //от пользователя
    }
Добавлено через 10 минут
Но и этого не достаточно. Если сеттер может потенциально забраковать входящие аргументы, то он должен уметь сообщить об этом вызывающей стороне:

C++
1
2
3
4
5
6
7
8
9
10
11
int Init(double a,double b)
    {
        if(a<=0|| b<=0) 
        {
             std::cout << "ОШИБКА! Аргументы должны быть больше нуля!\n";
             first=1; second=1; return 1;   //вызывающая сторона получит ответ - 1.
                                      // Что значит, что сеттер пофиксил неисправность
         }
        first=a;    second=b; 
        return 0; //если вернётся ноль, значит все в порядке
    }
Теперь научим пользователя вводить то что нужно, а не все подряд:
C++
1
2
3
4
5
6
7
8
9
10
11
void read()
    {
       double _f, _s;
      do  
      {
             cout << "Введите катет А: ";   cin >> _f;
             cout << "Введите катет В: " ;   cin >> _s;
      }while ( Init(_f,_s)==1 );    //если сеттер вернёт ошибку,
                                          // заставим пользователя вводить 
                                         //нормальные данные заново!
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 09:49
Привет! Вот еще темы с ответами:

Структура - пара: число и его степень - C++
Поле first — дробное число; поле second — дробное число, показатель степени. Реализовать метод Power() — возведение числа first в степень...

Структура-пара. Реализовать метод rangecheck() – проверку заданного числа - C++
Реализовать внешнюю функцию с именем make_mun(), где mun – тип реализуемой структуры. Функция должна получать в качестве аргументов...

Классы и объекты - C++
Создать объявление класса и разработать программу-драйвер, который продемонстрирует работу класса. Клас Cylinder (циліндр). Клас має...

Классы и объекты в С++ - C++
помогите пожалуйста с программой Класс «Дата» должен включать поля данных: день, месяц, год; методы: вывод даты и времени года и...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru