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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
s92p
11 / 11 / 0
Регистрация: 12.09.2011
Сообщений: 42
15.12.2011, 20:16     классы и объекты. структура-пара #1
поле 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 20:16     классы и объекты. структура-пара
Посмотрите здесь:

C++ Структура-пара
Структура-пара C++
C++ Структура - пара
Объекты и классы в С + + C++
C++ Структура-пара
C++ классы и объекты С++
C++ Структура-пара Задача
Структура - пара: число и его степень C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
s92p
11 / 11 / 0
Регистрация: 12.09.2011
Сообщений: 42
19.12.2011, 06:28  [ТС]     классы и объекты. структура-пара #2
выручайте народ!! пожалуйста
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 );    //если сеттер вернёт ошибку,
                                          // заставим пользователя вводить 
                                         //нормальные данные заново!
}
Yandex
Объявления
19.12.2011, 09:49     классы и объекты. структура-пара
Ответ Создать тему
Опции темы

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